Amazon CodeWhisperer Cheat Sheet
Overview
Amazon CodeWhisperer is AWS's AI-powered code completion service that provides intelligent code suggestions in real-time. It analyzes your code and comments to generate contextually relevant recommendations, supporting multiple programming languages and integrating with popular IDEs.
⚠️ Note: CodeWhisperer has been rebranded as Amazon Q Developer. This cheatsheet covers the legacy CodeWhisperer interface and commands.
Installation & Setup
VS Code Extension
# Install AWS Toolkit extension (includes CodeWhisperer)
code --install-extension AmazonWebServices.aws-toolkit-vscode
# Or install standalone CodeWhisperer extension
code --install-extension AmazonWebServices.codewhisperer-for-command-line-companion
JetBrains IDEs
# Install AWS Toolkit plugin
# File > Settings > Plugins > Marketplace
# Search "AWS Toolkit" and install
Command Line Integration
# Install CodeWhisperer CLI
npm install -g @amzn/codewhisperer-cli
# Or using pip
pip install codewhisperer-cli
Authentication
AWS Builder ID (Free)
# Sign up for AWS Builder ID
# Free tier with usage limits
# No AWS account required
# Authentication in IDE:
# 1. Click "Start" in CodeWhisperer panel
# 2. Choose "Use for free with AWS Builder ID"
# 3. Complete browser authentication
AWS IAM Credentials
# Configure AWS credentials
aws configure
# Enter Access Key ID
# Enter Secret Access Key
# Enter Default region
# Enter Default output format
# Or use environment variables
export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
export AWS_DEFAULT_REGION=us-east-1
AWS SSO Integration
# Configure SSO profile
aws configure sso
# Enter SSO start URL
# Enter SSO region
# Complete browser authentication
# Use SSO profile
aws sso login --profile your-profile
Core Features
Code Completion
# Automatic suggestions while typing
# Press Tab to accept suggestion
# Press Esc to dismiss suggestion
# Use arrow keys to navigate multiple suggestions
# Trigger manual suggestions
# Ctrl+Space (VS Code)
# Alt+C (JetBrains)
Comment-to-Code Generation
# Type descriptive comment
# Function to calculate compound interest
def calculate_compound_interest(principal, rate, time, compound_frequency):
# CodeWhisperer generates the implementation
amount = principal * (1 + rate/compound_frequency) ** (compound_frequency * time)
return amount - principal
Multi-line Code Generation
// Generate entire functions from comments
// Create Express.js REST API endpoint for user management
app.post('/api/users', async (req, res) => {
try {
const { name, email, password } = req.body;
const hashedPassword = await bcrypt.hash(password, 10);
const user = new User({ name, email, password: hashedPassword });
await user.save();
res.status(201).json({ message: 'User created successfully', userId: user._id });
} catch (error) {
res.status(400).json({ error: error.message });
}
});
Language Support
Supported Languages
# Fully supported languages:
- Python
- Java
- JavaScript
- TypeScript
- C#
- Go
- Rust
- PHP
- Ruby
- Kotlin
- C++
- Shell scripting (Bash)
- SQL
- Scala
- R
- Swift
Framework Integration
# Popular frameworks supported:
- React/Next.js
- Angular
- Vue.js
- Spring Boot
- Django/Flask
- Express.js
- .NET Core
- Laravel
- Rails
IDE Integration
VS Code Commands
# Command Palette commands:
"AWS: CodeWhisperer - Start"
"AWS: CodeWhisperer - Pause"
"AWS: CodeWhisperer - Resume"
"AWS: CodeWhisperer - Show Security Scan"
"AWS: CodeWhisperer - Open Settings"
# Keyboard shortcuts:
Alt+C # Trigger suggestion
Tab # Accept suggestion
Esc # Dismiss suggestion
Ctrl+Right # Accept word
JetBrains Commands
# Tools menu:
Tools > AWS > CodeWhisperer > Start
Tools > AWS > CodeWhisperer > Pause
Tools > AWS > CodeWhisperer > Settings
# Context menu:
Right-click > AWS CodeWhisperer > Accept Suggestion
Right-click > AWS CodeWhisperer > Reject Suggestion
Configuration Settings
// VS Code settings.json
{
"aws.codeWhisperer.shareCodeWhispererContentWithAWS": false,
"aws.codeWhisperer.includeSuggestionsWithCodeReferences": true,
"aws.codeWhisperer.automaticTrigger": true,
"aws.codeWhisperer.maxSuggestions": 5
}
Security Scanning
Vulnerability Detection
# Automatic security scanning
# Detects common vulnerabilities:
# - SQL injection
# - Cross-site scripting (XSS)
# - Hardcoded credentials
# - Insecure cryptographic practices
# - Path traversal vulnerabilities
Manual Security Scan
# VS Code:
# 1. Open Command Palette (Ctrl+Shift+P)
# 2. Type "CodeWhisperer Security Scan"
# 3. Select files to scan
# 4. Review results in Problems panel
# JetBrains:
# 1. Tools > AWS > CodeWhisperer > Security Scan
# 2. Select scope (file/project)
# 3. Review results in inspection panel
Security Scan Results
# High severity issues:
# - Critical security vulnerabilities
# - Immediate attention required
# - Detailed remediation steps provided
# Medium/Low severity:
# - Potential security concerns
# - Best practice recommendations
# - Code quality improvements
Command Line Usage
CLI Installation
# Install via npm
npm install -g @amzn/codewhisperer-cli
# Install via pip
pip install codewhisperer-cli
# Verify installation
codewhisperer --version
CLI Authentication
# Authenticate with AWS Builder ID
codewhisperer auth login
# Use AWS credentials
codewhisperer auth login --profile your-aws-profile
# Check authentication status
codewhisperer auth status
Code Generation via CLI
# Generate code from prompt
codewhisperer generate --prompt "Python function to sort dictionary by values"
# Generate with context file
codewhisperer generate --prompt "Add error handling" --context main.py
# Interactive mode
codewhisperer interactive
Best Practices
Effective Prompting
# Good: Specific and descriptive comments
# Function to validate email format using regex and return boolean
def validate_email(email):
# CodeWhisperer generates accurate implementation
# Bad: Vague comments
# Email function
def email_func():
# Less accurate suggestions
Code Review
# Always review generated code:
# 1. Check for logical correctness
# 2. Verify security implications
# 3. Ensure code style consistency
# 4. Test functionality thoroughly
# 5. Validate error handling
Security Considerations
# Review security scan results regularly
# Don't ignore vulnerability warnings
# Validate all input parameters
# Use secure coding practices
# Keep dependencies updated
Usage Limits & Pricing
Free Tier (AWS Builder ID)
# Monthly limits:
# - Code suggestions: Unlimited
# - Security scans: 50 per month
# - Supported languages: All
# - IDE integrations: All
Professional Tier
# Features (when available):
# - Higher usage limits
# - Priority support
# - Advanced security features
# - Team management
# - Usage analytics
Troubleshooting
Common Issues
# CodeWhisperer not working:
# 1. Check internet connection
# 2. Verify authentication status
# 3. Restart IDE
# 4. Update AWS Toolkit extension
# No suggestions appearing:
# 1. Check if CodeWhisperer is enabled
# 2. Verify file type is supported
# 3. Check automatic trigger settings
# 4. Try manual trigger (Alt+C)
Performance Issues
# Slow suggestions:
# 1. Close unnecessary files
# 2. Reduce project size
# 3. Check network connectivity
# 4. Update to latest extension version
# High CPU usage:
# 1. Adjust suggestion frequency
# 2. Disable automatic triggers
# 3. Use manual triggers only
# 4. Configure suggestion limits
Debug Information
# VS Code debug info:
# 1. View > Output
# 2. Select "AWS Toolkit" from dropdown
# 3. Check for error messages
# JetBrains debug info:
# 1. Help > Show Log in Explorer
# 2. Look for AWS-related log files
# 3. Check for error patterns
Code Examples
Python Data Processing
# Function to process CSV file and calculate statistics
import pandas as pd
import numpy as np
def process_sales_data(file_path):
df = pd.read_csv(file_path)
# Calculate key metrics
total_sales = df['amount'].sum()
avg_sale = df['amount'].mean()
top_products = df.groupby('product')['amount'].sum().sort_values(ascending=False).head(5)
return {
'total_sales': total_sales,
'average_sale': avg_sale,
'top_products': top_products.to_dict()
}
JavaScript API Integration
// Function to fetch user data with error handling and retry logic
async function fetchUserData(userId, maxRetries = 3) {
for (let attempt = 1; attempt <= maxRetries; attempt++) {
try {
const response = await fetch(`/api/users/${userId}`);
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const userData = await response.json();
return userData;
} catch (error) {
console.error(`Attempt ${attempt} failed:`, error.message);
if (attempt === maxRetries) {
throw new Error(`Failed to fetch user data after ${maxRetries} attempts`);
}
// Wait before retry
await new Promise(resolve => setTimeout(resolve, 1000 * attempt));
}
}
}
Java Spring Boot Controller
// REST controller for product management with validation
@RestController
@RequestMapping("/api/products")
@Validated
public class ProductController {
@Autowired
private ProductService productService;
@PostMapping
public ResponseEntity<Product> createProduct(@Valid @RequestBody ProductDTO productDTO) {
try {
Product product = productService.createProduct(productDTO);
return ResponseEntity.status(HttpStatus.CREATED).body(product);
} catch (ValidationException e) {
return ResponseEntity.badRequest().build();
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}
}
Migration to Amazon Q
Transition Guide
# CodeWhisperer is now Amazon Q Developer
# Migration steps:
# 1. Update to latest AWS Toolkit
# 2. Existing settings are preserved
# 3. Authentication remains the same
# 4. Enhanced features available in Amazon Q
New Features in Amazon Q
# Additional capabilities:
# - Chat interface for code questions
# - Application modernization
# - Code explanations
# - Unit test generation
# - Enhanced security scanning