Amazon Q Developer:企业级 AI 编程助手的全面解析

NOTE

本文档最后更新于 2026年4月,深入解析 Amazon Q Developer 的功能架构、AWS 生态集成、企业级安全特性和与主流工具的对比。


目录

  1. 概述与市场定位
  2. 核心功能详解
  3. AWS 服务深度集成
  4. 订阅计划与定价
  5. 企业级功能
  6. 安装与配置
  7. 与 GitHub Copilot 对比
  8. 实战场景
  9. 选型建议

概述与市场定位

什么是 Amazon Q Developer

Amazon Q Developer 是亚马逊 AWS 推出的企业级 AI 编程助手,于 2024 年正式发布。它基于亚马逊多年积累的大语言模型技术,专为云原生开发和企业场景优化。与其他 AI 编程工具不同,Amazon Q Developer 与 AWS 生态深度绑定,提供从代码编写、调试到云服务部署的全流程支持。

Amazon Q Developer 的定位明确:面向企业的云开发伴侣。它不仅是代码补全工具,更是连接开发者与 AWS 服务的智能桥梁。

产品矩阵

Amazon Q 提供三个版本,覆盖不同用户群体:

版本目标用户核心能力价格
Q Developer Free个人开发者、学生代码补全、基础问答免费
Q Developer Pro专业开发者、团队全部功能 + 代理能力$19/月/人
Q Developer Business企业团队SSO、权限管理、合规报告定制报价

技术架构深度解析

Amazon Q Developer 的技术架构构建在 AWS 强大的云基础设施之上:

┌─────────────────────────────────────────────────────────────────┐
│                         用户界面层 (IDE)                          │
│              VS Code / JetBrains / AWS Toolkit                   │
├─────────────────────────────────────────────────────────────────┤
│                        API 网关层                                │
│                Amazon Q API / AWS AI Services                    │
├─────────────────────────────────────────────────────────────────┤
│                        模型服务层                                │
│          Amazon Titan / Claude / 自研代码模型                     │
├─────────────────────────────────────────────────────────────────┤
│                       AWS 集成层                                 │
│       IAM / CloudTrail / DevOps Guru / CodeWhisperer             │
├─────────────────────────────────────────────────────────────────┤
│                       安全与合规层                               │
│            VPC / KMS / CloudWatch / Security Hub                  │
├─────────────────────────────────────────────────────────────────┤
│                       基础设施层                                │
│               AWS Global Infrastructure                          │
└─────────────────────────────────────────────────────────────────┘

架构核心组件:

1. 智能代码引擎 Amazon Q 使用专门针对代码任务微调的大语言模型,能够理解代码的语义结构、API 调用模式和云服务最佳实践。该模型在 AWS 的代码库和文档上进行了大规模预训练,对 AWS 服务有深入的理解。

2. AWS 服务集成层 这是 Amazon Q 与其他 AI 编程助手最大的差异点。集成层与 AWS 的各项服务深度连接:

  • IAM 集成:理解 IAM 策略语法,提供权限分析和建议
  • CloudFormation/CDK 集成:理解基础设施即代码的概念
  • DevOps Guru 集成:提供运维问题的 AI 诊断
  • CodeWhisperer 集成:共享部分代码建议能力

3. 安全扫描引擎 内置的安全扫描功能能够:

  • 检测硬编码密钥和凭证
  • 分析 IAM 策略的安全风险
  • 识别不安全的代码模式
  • 检查依赖包的已知漏洞

4. 代理执行引擎 Pro 版本提供的代理能力允许 AI 执行多步骤任务,包括:

  • 文件创建和修改
  • 终端命令执行
  • AWS 服务操作
  • Git 操作

与 AWS 生态的协同关系

Amazon Q 与 AWS 生态系统形成了紧密的协同关系:

AWS 服务Amazon Q 提供的价值
Lambda优化的函数模板、冷启动建议、依赖优化
ECS/Fargate容器镜像建议、任务定义生成
CloudFormation模板验证、参数建议、嵌套堆栈设计
CDKTypeScript/Python 代码生成、构造图优化
IAM策略分析、最小权限建议、信任关系可视化
CloudWatch日志分析、告警建议、性能优化
DevOps Guru问题根因分析、修复建议
CodePipelineCI/CD 流水线建议、故障排查
Amplify前端框架集成、全栈应用模板

核心功能详解

1. 代码生成与补全

Amazon Q Developer 提供智能代码补全,支持上下文感知的代码建议:


核心功能详解

1. 代码生成与补全

Amazon Q Developer 提供智能代码补全,支持上下文感知的代码建议:

# 示例:Python Lambda 函数生成
# 注释提示 → Tab 接受建议
 
# Create a Lambda function that processes S3 events
def lambda_handler(event, context):
    """
    Process S3 event and extract bucket/key information.
    Automatically generated by Amazon Q.
    """
    # Q 提供完整函数框架和注释
    s3_bucket = event['Records'][0]['s3']['bucket']['name']
    s3_key = event['Records'][0]['s3']['object']['key']
    
    return {
        'statusCode': 200,
        'body': {'bucket': s3_bucket, 'key': s3_key}
    }

支持的编程语言:

语言支持程度特殊优化
Python⭐⭐⭐⭐⭐AWS SDK 集成
TypeScript/JavaScript⭐⭐⭐⭐⭐Node.js 优化
Java⭐⭐⭐⭐Spring Boot 模板
C#⭐⭐⭐⭐.NET Core 模板
Go⭐⭐⭐⭐AWS SDK v2
Ruby⭐⭐⭐基础支持
Rust⭐⭐⭐基础支持

2. 代码解释与优化

代码解释功能:

用户:请解释这段代码的作用

Amazon Q:
这段代码实现了一个 API 限流中间件:

1. 使用 Token Bucket 算法控制请求频率
2. 每个用户/IP 分配独立的 token 桶
3. 请求到达时检查 token 数量
4. 如果 token 充足,允许通过并消耗一个 token
5. 如果 token 不足,返回 429 Too Many Requests
6. Token 以固定速率(10/秒)自动补充

关键参数:
- MAX_TOKENS: 100(桶容量)
- REFILL_RATE: 10(每秒补充量)
- 算法复杂度: O(1)

代码优化建议:

# 优化前
for user in users:
    for order in orders:
        if order.user_id == user.id:
            send_email(user.email, order)
 
# 优化后(Q 建议)
user_order_map = defaultdict(list)
for order in orders:
    user_order_map[order.user_id].append(order)
 
for user in users:
    for order in user_order_map.get(user.id, []):
        send_email(user.email, order)
# 时间复杂度从 O(n*m) 优化到 O(n+m)

代码优化的高级模式

"""
Amazon Q Developer 高级代码优化示例
"""
 
# 场景1:数据库查询优化
class DatabaseQueryOptimizer:
    """数据库查询优化专家"""
 
    @staticmethod
    def analyze_and_optimize(query: str, schema: dict) -> dict:
        """
        Gemini 分析并优化数据库查询
        """
        analysis = """
## 查询分析报告
 
### 原始查询
```sql
SELECT u.name, u.email, COUNT(o.id) as order_count,
       SUM(o.amount) as total, AVG(o.amount) as avg
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
LEFT JOIN order_items oi ON o.id = oi.order_id
LEFT JOIN products p ON oi.product_id = p.id
WHERE o.created_at > '2024-01-01'
  AND p.category IN ('Electronics', 'Books')
GROUP BY u.id
HAVING COUNT(o.id) > 5
ORDER BY total DESC
LIMIT 100;

问题识别

1. N+1 JOIN 问题

  • 4 个 JOIN 操作增加查询复杂度
  • 实际上只需要 users 和 orders 表

2. 索引缺失

  • orders.user_id 缺少索引
  • orders.created_at 缺少索引
  • order_items 表缺少外键索引

3. 数据类型问题

  • 日期使用字符串比较,应使用 DATE 类型

4. HAVING vs WHERE

  • COUNT(o.id) > 5 应移到 WHERE 子句

优化方案

优化后的查询

SELECT
    u.id,
    u.name,
    u.email,
    COUNT(o.id) AS order_count,
    COALESCE(SUM(o.amount), 0) AS total,
    COALESCE(AVG(o.amount), 0) AS avg
FROM users u
INNER JOIN (
    SELECT user_id, COUNT(*) as cnt
    FROM orders
    WHERE created_at > DATE '2024-01-01'
    GROUP BY user_id
    HAVING COUNT(*) > 5
) active_users ON u.id = active_users.user_id
LEFT JOIN orders o ON u.id = o.user_id
    AND o.created_at > DATE '2024-01-01'
WHERE EXISTS (
    SELECT 1 FROM order_items oi
    JOIN products p ON oi.product_id = p.id
    WHERE oi.order_id = o.id
      AND p.category IN ('Electronics', 'Books')
)
GROUP BY u.id, u.name, u.email
ORDER BY total DESC
LIMIT 100;
 
-- 添加所需索引
CREATE INDEX idx_orders_user_created ON orders(user_id, created_at);
CREATE INDEX idx_order_items_order ON order_items(order_id);
CREATE INDEX idx_products_category ON products(category);

性能对比

指标优化前优化后提升
执行时间2.5s120ms95%
全表扫描-
索引使用部分完整-

自动化优化脚本

""" return {“analysis”: analysis}

场景2:内存泄漏检测与修复

class MemoryLeakDetector: """内存泄漏检测工具"""

@staticmethod
def analyze_leaks(code: str) -> dict:
    """
    分析代码中的内存泄漏问题
    """
    return {
        "leaks": [
            {
                "severity": "HIGH",
                "type": "UNCLOSED_CONNECTION",
                "location": "db_handler.py:45",
                "description": "数据库连接未在 finally 块中关闭",
                "code": """

问题代码

def get_user_data(user_id): conn = database.connect() user = conn.query(f”SELECT * FROM users WHERE id = {user_id}”) # 如果这里抛出异常,连接将不会关闭 process_user(user) conn.close() # 可能不会执行 return user """, “fix”: """

修复代码

def get_user_data(user_id): conn = None try: conn = database.connect() user = conn.query(f”SELECT * FROM users WHERE id = {user_id}”) process_user(user) return user except Exception as e: logger.error(f”Error fetching user {user_id}: {e}”) raise finally: if conn: conn.close()

或使用上下文管理器

def get_user_data(user_id): with database.connect() as conn: user = conn.query(f”SELECT * FROM users WHERE id = {user_id}”) process_user(user) return user """ }, { “severity”: “MEDIUM”, “type”: “GLOBAL_CACHE_GROWTH”, “location”: “cache_manager.py:78”, “description”: “全局缓存字典无限增长”, “code”: """

问题代码

CACHE = {}

def get_data(key): if key not in CACHE: CACHE[key] = expensive_operation(key) return CACHE[key] """, “fix”: """

修复代码:使用 LRU Cache

from functools import lru_cache

@lru_cache(maxsize=1000) def get_data(key): return expensive_operation(key)

或使用 WeakValueDictionary

from weakref import WeakValueDictionary

class CacheDict(dict): def getitem(self, key): return super().getitem(key)

def __setitem__(self, key, value):
    super().__setitem__(key, weakref.ref(value))

CACHE = CacheDict() """ } ] }

场景3:并发安全分析

class ConcurrencyAnalyzer: """并发安全分析工具"""

@staticmethod
def analyze_thread_safety(code: str) -> dict:
    """
    分析代码的线程安全性
    """
    return {
        "issues": [
            {
                "severity": "HIGH",
                "type": "RACE_CONDITION",
                "location": "counter.py:12",
                "description": "非原子操作的竞态条件",
                "code": """

问题代码

class Counter: def init(self): self.count = 0

def increment(self):
    # 非原子操作,可能导致计数不准确
    current = self.count
    self.count = current + 1

def decrement(self):
    current = self.count
    self.count = current - 1

""", “fix”: """

修复方案1:使用 threading.Lock

import threading

class ThreadSafeCounter: def init(self): self._lock = threading.Lock() self._count = 0

@property
def count(self):
    with self._lock:
        return self._count

def increment(self):
    with self._lock:
        self._count += 1

def decrement(self):
    with self._lock:
        self._count -= 1

修复方案2:使用原子操作

import threading

class AtomicCounter: def init(self): self._value = 0 self._lock = threading.Lock()

def increment(self):
    with self._lock:
        self._value += 1
        return self._value

@property
def value(self):
    return self._value

""" } ], “recommendations”: [ “使用 threading.Lock 保护共享状态”, “考虑使用 queue.Queue 进行线程间通信”, “避免使用非线程安全的数据结构”, “使用局部变量代替全局变量” ] }


### 3. 安全扫描(DevOps Guru)

### 3. 安全扫描(DevOps Guru)

Amazon Q 内置安全扫描能力,集成 AWS DevOps Guru:

| 扫描类型 | 覆盖范围 | 检测能力 |
|---------|---------|---------|
| **漏洞扫描** | 依赖包、代码模式 | OWASP Top 10 |
| **配置检查** | AWS 资源策略 | IAM、S3、Security Group |
| **Secret 检测** | 硬编码凭证 | API Key、Token、Private Key |
| **性能分析** | 代码效率 | N+1 查询、死循环、内存泄漏 |

```yaml
# Amazon Q 安全扫描报告示例
scan_results:
  severity: HIGH
  type: hardcoded_secret
  location: src/config.py:23
  line: "api_key = 'AKIAIOSFODNN7EXAMPLE'"
  suggestion: |
    Use environment variables or AWS Secrets Manager:
    import boto3
    client = boto3.client('secretsmanager')
    api_key = client.get_secret_value(
        SecretId='my-api-key'
    )['SecretString']

3. 安全扫描(DevOps Guru)

Amazon Q 内置安全扫描能力,集成 AWS DevOps Guru:

扫描类型覆盖范围检测能力
漏洞扫描依赖包、代码模式OWASP Top 10
配置检查AWS 资源策略IAM、S3、Security Group
Secret 检测硬编码凭证API Key、Token、Private Key
性能分析代码效率N+1 查询、死循环、内存泄漏
# Amazon Q 安全扫描报告示例
scan_results:
  severity: HIGH
  type: hardcoded_secret
  location: src/config.py:23
  line: "api_key = 'AKIAIOSFODNN7EXAMPLE'"
  suggestion: |
    Use environment variables or AWS Secrets Manager:
    import boto3
    client = boto3.client('secretsmanager')
    api_key = client.get_secret_value(
        SecretId='my-api-key'
    )['SecretString']

安全扫描的高级配置

# 安全扫描配置文件
amazonq:
  security:
    scan:
      enabled: true
      auto_scan: true
      scan_on_commit: true
      scan_on_push: false
 
      # 扫描范围
      targets:
        - src/**/*.py
        - src/**/*.js
        - src/**/*.ts
        - config/**/*
        - **/requirements.txt
        - **/package.json
 
      excludes:
        - "**/test_*.py"
        - "**/__pycache__/**"
        - "**/node_modules/**"
 
    secrets:
      enabled: true
      severity: HIGH
      patterns:
        - name: AWS Access Key
          regex: "AKIA[0-9A-Z]{16}"
        - name: AWS Secret Key
          regex: "[A-Za-z0-9/+=]{40}"
        - name: Generic API Key
          regex: "(?i)(api[_-]?key|secret|password)[=:\\s]+['\"][^'\"]{8,}['\"]"
        - name: Private Key
          regex: "-----BEGIN (RSA|DSA|EC|OPENSSH) PRIVATE KEY-----"
        - name: JWT Token
          regex: "eyJ[A-Za-z0-9-_]+\\.eyJ[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+"
        - name: GitHub Token
          regex: "gh[pousr]_[A-Za-z0-9_]{36,}"
 
    vulnerabilities:
      enabled: true
      check_dependencies: true
      check_licenses: true
      severity_threshold: MEDIUM
 
    iam_analysis:
      enabled: true
      check_wildcard_actions: true
      check_public_access: true
      check_overly_permissive: true
      check_service_roles: true
 
    sast:
      enabled: true
      rules:
        - id: "PY001"
          name: "SQL Injection"
          severity: CRITICAL
          pattern: "execute.*%|\\.format.*%|f\".*SELECT"
        - id: "PY002"
          name: "Path Traversal"
          severity: HIGH
          pattern: "open\\(.*\\+.*\\)|os\\.path\\.join.*\\.\\."
        - id: "PY003"
          name: "Command Injection"
          severity: CRITICAL
          pattern: "os\\.system|subprocess\\..*shell=True"
        - id: "JS001"
          name: "XSS"
          severity: HIGH
          pattern: "innerHTML|dangerouslySetInnerHTML"
        - id: "JS002"
          name: "Prototype Pollution"
          severity: MEDIUM
          pattern: "\\[.*\\].*=|Object\\.assign.*\\{"

IAM 策略分析示例

"""
Amazon Q IAM 策略安全分析
"""
 
class IAMPolicyAnalyzer:
    """IAM 策略分析工具"""
 
    @staticmethod
    def analyze_policy(policy: dict) -> dict:
        """
        分析 IAM 策略的安全性
        """
        return {
            "summary": {
                "risk_level": "HIGH",
                "issues_found": 3,
                "recommendations": 5
            },
            "issues": [
                {
                    "severity": "CRITICAL",
                    "type": "WILDCARD_ACTION",
                    "location": "Statement 1",
                    "description": "使用通配符 '*' 授予所有操作权限",
                    "effect": "任何 AWS 操作都可以执行",
                    "recommendation": "使用最小权限原则,仅授予所需的具体操作"
                },
                {
                    "severity": "HIGH",
                    "type": "MISSING_CONDITION",
                    "location": "Statement 2",
                    "description": "S3 操作缺少 IP 限制条件",
                    "effect": "任何 IP 都可以访问 S3 资源",
                    "recommendation": "添加 Condition 限制来源 IP"
                },
                {
                    "severity": "MEDIUM",
                    "type": "NO_RESOURCE_LIMIT",
                    "location": "Statement 3",
                    "description": "DynamoDB 操作未限制具体表",
                    "effect": "可以访问所有 DynamoDB 表",
                    "recommendation": "使用 ARN 限制只能访问特定表"
                }
            ],
            "optimized_policy": """
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::my-bucket/my-prefix/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": [
            "10.0.0.0/8",
            "172.16.0.0/12"
          ]
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:GetItem",
        "dynamodb:PutItem"
      ],
      "Resource": "arn:aws:dynamodb:us-east-1:123456789:table/Users"
    }
  ]
}
"""
        }

4. 代理模式(Agent Mode)

Pro 版本支持自主代理模式,AI 可自主执行多步骤任务:

任务:创建一个 S3 静态网站托管项目

执行流程:
1. ✅ 创建项目目录结构
2. ✅ 生成 index.html、about.html
3. ✅ 创建 CSS 样式文件
4. ✅ 配置 S3 bucket
5. ✅ 设置静态网站托管
6. ✅ 配置 CloudFront CDN
7. ✅ 设置 bucket policy 公开访问
8. ✅ 部署文件到 S3
9. ✅ 返回访问 URL

代理模式的高级配置

{
  "amazonq": {
    "agent": {
      "enabled": true,
      "model": "anthropic.claude-3-sonnet",
      "max_iterations": 50,
      "timeout_minutes": 30,
 
      "capabilities": {
        "file_operations": {
          "create": true,
          "read": true,
          "write": true,
          "delete": false,
          "requires_confirmation": true
        },
        "terminal_operations": {
          "enabled": true,
          "allowed_commands": [
            "git status",
            "git add",
            "git commit",
            "npm install",
            "npm run build",
            "python -m pytest"
          ],
          "requires_confirmation": true,
          "blocked_commands": [
            "rm -rf /*",
            "sudo",
            "chmod 777"
          ]
        },
        "aws_operations": {
          "enabled": true,
          "allowed_services": [
            "s3",
            "lambda",
            "cloudformation",
            "ecr"
          ],
          "requires_confirmation": true,
          "read_only_mode": false
        }
      },
 
      "safety": {
        "block_destructive": true,
        "max_file_size_kb": 1024,
        "allowed_file_extensions": [
          ".py", ".js", ".ts", ".json",
          ".yaml", ".yml", ".md", ".txt",
          ".html", ".css", ".sql"
        ],
        "code_review_required": true
      }
    }
  }
}

代理模式工作流程详解

"""
Amazon Q 代理模式工作流程示例
"""
 
class AgentWorkflowExample:
    """代理模式工作流程"""
 
    @staticmethod
    def demonstrate_agent_capabilities():
        """
        演示代理模式的各种能力
        """
        workflow = """
# 代理模式:完整微服务开发流程
 
## 阶段 1:项目初始化
 
### 用户请求

创建一个基于 Python FastAPI 的用户管理微服务,包含:

  1. 用户 CRUD API
  2. JWT 认证
  3. PostgreSQL 数据库集成
  4. Docker 容器化
  5. GitHub Actions CI/CD

### 代理执行步骤

[Agent] 分析请求,创建项目结构… [Agent] 生成 FastAPI 主应用代码 [Agent] 生成 Pydantic 模型和 Schemas [Agent] 生成 SQLAlchemy 数据库模型 [Agent] 生成认证中间件 [Agent] 生成 CRUD 服务层 [Agent] 生成 API 路由 [Agent] 生成 Dockerfile 和 docker-compose.yml [Agent] 生成 requirements.txt [Agent] 生成 CI/CD 工作流 [Agent] 运行测试验证 [Agent] 创建 README.md 文档


## 阶段 2:代码生成

### 生成的文件结构

user-service/ ├── src/ │ ├── init.py │ ├── main.py # FastAPI 应用入口 │ ├── config.py # 配置管理 │ ├── database.py # 数据库连接 │ ├── models/ │ │ ├── init.py │ │ └── user.py # SQLAlchemy 模型 │ ├── schemas/ │ │ ├── init.py │ │ └── user.py # Pydantic Schemas │ ├── api/ │ │ ├── init.py │ │ ├── deps.py # 依赖注入 │ │ └── v1/ │ │ ├── init.py │ │ └── users.py # 用户 API │ ├── services/ │ │ ├── init.py │ │ └── user.py # 业务逻辑 │ ├── core/ │ │ ├── init.py │ │ ├── security.py # 安全认证 │ │ └── exceptions.py # 自定义异常 │ └── utils/ │ ├── init.py │ └── pagination.py # 分页工具 ├── tests/ │ ├── init.py │ ├── conftest.py │ └── api/ │ └── test_users.py ├── Dockerfile ├── docker-compose.yml ├── requirements.txt ├── .env.example ├── .gitignore └── README.md


### 关键代码示例

```python
# src/main.py
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from app.api.v1 import users
from app.config import settings

app = FastAPI(
    title=settings.PROJECT_NAME,
    openapi_url=f"{settings.API_V1_STR}/openapi.json"
)

# CORS 中间件
app.add_middleware(
    CORSMiddleware,
    allow_origins=settings.ALLOWED_HOSTS,
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

# 路由注册
app.include_router(users.router, prefix=settings.API_V1_STR, tags=["users"])

@app.get("/health")
async def health_check():
    return {"status": "healthy"}

阶段 3:CI/CD 配置

# .github/workflows/ci.yml
name: CI/CD Pipeline
 
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
 
jobs:
  test:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:15
        env:
          POSTGRES_DB: users_db
          POSTGRES_USER: test
          POSTGRES_PASSWORD: test
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
        ports:
          - 5432:5432
 
    steps:
      - uses: actions/checkout@v4
 
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.11'
 
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
 
      - name: Run tests
        env:
          DATABASE_URL: postgresql://test:test@localhost:5432/users_db
        run: |
          pytest --cov=app tests/
 
  docker:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
 
      - name: Build Docker image
        run: docker build -t user-service:${{ github.sha }} .
 
      - name: Push to ECR
        uses: aws-actions/amazon-ecr-login@v2
        with:
          registry: ${{ secrets.ECR_REGISTRY }}
      run: |
        docker tag user-service:${{ github.sha }} ${{ secrets.ECR_REGISTRY }}/user-service:${{ github.sha }}
        docker push ${{ secrets.ECR_REGISTRY }}/user-service:${{ github.sha }}
 
  deploy:
    needs: docker
    runs-on: ubuntu-latest
    steps:
      - name: Deploy to ECS
        run: |
          aws ecs update-service --cluster production --service user-service --force-new-deployment

"""

    return {"workflow": workflow}

代理模式安全约束

class AgentSafetyConstraints: """代理模式安全约束"""

@staticmethod
def get_safety_rules() -> dict:
    """
    定义代理模式的安全规则
    """
    return {
        "file_operations": {
            "read": {
                "allowed": True,
                "requires_confirmation_for": [
                    "**/secrets/**",
                    "**/.env*",
                    "**/credentials*",
                    "**/id_rsa*"
                ]
            },
            "write": {
                "allowed": True,
                "requires_confirmation_for": [
                    "**/production/**",
                    "**/main/**",
                    "*.sql",
                    "*.sh"
                ],
                "blocked_patterns": [
                    "rm -rf",
                    "format:",
                    "DROP TABLE"
                ]
            },
            "delete": {
                "allowed": False,
                "exception": ["temp files", "build artifacts"]
            }
        },
        "terminal_operations": {
            "allowed": True,
            "requires_confirmation_for": [
                "git push",
                "npm publish",
                "pip install",
                "docker push",
                "aws ecs update-service"
            ],
            "blocked": [
                "rm -rf /",
                "sudo",
                "chmod 777",
                "fork bomb"
            ]
        },
        "aws_operations": {
            "allowed": True,
            "read_only_by_default": True,
            "requires_explicit_allow": [
                "s3:DeleteObject",
                "s3:DeleteBucket",
                "ec2:TerminateInstances",
                "rds:DeleteDBInstance",
                "iam:DeleteUser",
                "iam:DeleteRole"
            ]
        }
    }

> [!IMPORTANT]
> 
> 代理模式会执行写入、删除、终端命令等操作。在生产环境中,建议在受控范围内使用,并设置操作审批流程。

### 5. 测试生成

自动生成单元测试和集成测试:

```python
# 被测代码
def calculate_discount(price: float, discount_percent: float) -> float:
    """Calculate discounted price."""
    if discount_percent < 0 or discount_percent > 100:
        raise ValueError("Discount must be between 0 and 100")
    return price * (1 - discount_percent / 100)

# Q 自动生成的测试
import pytest
from app import calculate_discount

class TestCalculateDiscount:
    def test_standard_discount(self):
        assert calculate_discount(100, 20) == 80.0
    
    def test_zero_discount(self):
        assert calculate_discount(100, 0) == 100.0
    
    def test_full_discount(self):
        assert calculate_discount(100, 100) == 0.0
    
    def test_negative_discount_raises_error(self):
        with pytest.raises(ValueError):
            calculate_discount(100, -10)
    
    def test_over_100_discount_raises_error(self):
        with pytest.raises(ValueError):
            calculate_discount(100, 110)

核心概念详解

Amazon Q 模型架构

Amazon Q Developer 基于多个 AI 模型协同工作,提供全面的代码辅助能力:

模型组成

"""
Amazon Q 的多模型架构
"""
 
class AmazonQArchitecture:
    """Amazon Q 模型架构解析"""
    
    # 核心模型组件
    MODELS = {
        # 主对话模型
        "main_model": {
            "name": "Claude (Anthropic)",
            "purpose": "通用对话和复杂推理",
            "context_window": "200K tokens",
            "strengths": [
                "复杂问题分析",
                "架构设计",
                "代码审查"
            ]
        },
        
        # 代码补全模型
        "completion_model": {
            "name": "Amazon Titan Code",
            "purpose": "快速代码补全",
            "context_window": "4K tokens",
            "strengths": [
                "低延迟",
                "代码片段生成",
                "API 调用补全"
            ]
        },
        
        # 安全扫描模型
        "security_model": {
            "name": "专用安全模型",
            "purpose": "漏洞检测和安全分析",
            "capabilities": [
                "SAST 静态分析",
                "Secret 检测",
                "依赖漏洞扫描"
            ]
        },
        
        # 优化建议模型
        "optimization_model": {
            "name": "性能优化模型",
            "purpose": "代码性能分析",
            "focus_areas": [
                "算法复杂度",
                "资源使用",
                "缓存策略"
            ]
        }
    }
    
    # 模型选择策略
    MODEL_SELECTION = {
        "quick_completion": "completion_model",
        "detailed_generation": "main_model",
        "security_scan": "security_model",
        "performance_review": "optimization_model",
        "complex_reasoning": "main_model"
    }

模型协同工作流程

"""
Amazon Q 多模型协同工作示例
"""
 
WORKFLOW_EXAMPLE = {
    "scenario": "用户请求生成一个 S3 上传功能并检查安全性",
    
    "step_1_completion": {
        "trigger": "用户输入代码注释",
        "model": "completion_model",
        "action": "生成 S3 上传基础代码"
    },
    
    "step_2_expansion": {
        "trigger": "用户添加更多需求",
        "model": "main_model",
        "action": "扩展代码,添加错误处理和验证"
    },
    
    "step_3_security_check": {
        "trigger": "用户请求检查",
        "model": "security_model",
        "action": "扫描硬编码凭证等安全问题"
    },
    
    "step_4_optimization": {
        "trigger": "用户请求优化",
        "model": "optimization_model",
        "action": "分析性能瓶颈,提供优化建议"
    },
    
    "step_5_integration": {
        "trigger": "需要集成",
        "model": "main_model",
        "action": "生成完整的集成代码"
    }
}

IAM 策略生成深度解析

Amazon Q 能够生成符合最小权限原则的 IAM 策略:

IAM 策略生成示例

"""
IAM 策略生成详解
"""
 
class IAMPolicyGenerator:
    """IAM 策略生成器"""
    
    # 策略生成模板
    POLICY_TEMPLATES = {
        "lambda_execution": {
            "description": "Lambda 函数执行策略",
            "template": {
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Effect": "Allow",
                        "Action": [
                            "logs:CreateLogGroup",
                            "logs:CreateLogStream",
                            "logs:PutLogEvents"
                        ],
                        "Resource": "arn:aws:logs:*:*:*"
                    },
                    {
                        "Effect": "Allow",
                        "Action": [
                            "s3:GetObject",
                            "s3:PutObject"
                        ],
                        "Resource": "arn:aws:s3:::bucket/*"
                    }
                ]
            }
        },
        
        "dynamodb_crud": {
            "description": "DynamoDB CRUD 策略",
            "template": {
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Effect": "Allow",
                        "Action": [
                            "dynamodb:GetItem",
                            "dynamodb:PutItem",
                            "dynamodb:UpdateItem",
                            "dynamodb:DeleteItem",
                            "dynamodb:Query",
                            "dynamodb:Scan"
                        ],
                        "Resource": "arn:aws:dynamodb:*:*:table/TableName"
                    }
                ]
            }
        }
    }
    
    @staticmethod
    def generate_from_code(code: str) -> dict:
        """
        从代码分析生成 IAM 策略
        """
        return {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": [
                        "s3:GetObject",
                        "s3:PutObject"
                    ],
                    "Resource": "arn:aws:s3:::my-bucket/*"
                },
                {
                    "Effect": "Allow",
                    "Action": [
                        "dynamodb:GetItem",
                        "dynamodb:PutItem"
                    ],
                    "Resource": "arn:aws:dynamodb:us-east-1:123456789:table/Users"
                }
            ]
        }

CloudFormation 生成深度解析

Amazon Q 能够生成完整的 CloudFormation 模板:

CloudFormation 模板生成

"""
CloudFormation 模板生成详解
"""
 
class CloudFormationGenerator:
    """CloudFormation 模板生成器"""
    
    @staticmethod
    def generate_lambda_template(config: dict) -> dict:
        """
        生成 Lambda 函数 CloudFormation 模板
        """
        return {
            "AWSTemplateFormatVersion": "2010-09-09",
            "Description": f"Lambda function: {config.get('name', 'unnamed')}",
            
            "Parameters": {
                "Stage": {
                    "Type": "String",
                    "Default": "dev",
                    "AllowedValues": ["dev", "staging", "prod"]
                }
            },
            
            "Resources": {
                "LambdaExecutionRole": {
                    "Type": "AWS::IAM::Role",
                    "Properties": {
                        "AssumeRolePolicyDocument": {
                            "Version": "2012-10-17",
                            "Statement": [{
                                "Effect": "Allow",
                                "Principal": {
                                    "Service": "lambda.amazonaws.com"
                                },
                                "Action": "sts:AssumeRole"
                            }]
                        }
                    }
                },
                
                "LambdaFunction": {
                    "Type": "AWS::Lambda::Function",
                    "Properties": {
                        "FunctionName": config.get('name', 'MyFunction'),
                        "Runtime": config.get('runtime', 'python3.11'),
                        "Handler": config.get('handler', 'index.handler'),
                        "Code": {
                            "S3Bucket": {"Ref": "BucketName"},
                            "S3Key": "lambda.zip"
                        },
                        "Role": {"Fn::GetAtt": ["LambdaExecutionRole", "Arn"]},
                        "Timeout": config.get('timeout', 30),
                        "MemorySize": config.get('memory', 128)
                    }
                }
            },
            
            "Outputs": {
                "LambdaFunctionName": {
                    "Value": {"Ref": "LambdaFunction"}
                }
            }
        }

CDK 生成深度解析

Amazon Q 支持生成 TypeScript/Python CDK 代码:

CDK 项目生成

/**
 * CDK VPC 堆栈生成
 */
 
import * as cdk from 'aws-cdk-lib';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
 
export class VpcStack extends cdk.Stack {
  constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
    super(scope, id, props);
 
    // 创建 VPC
    const vpc = new ec2.Vpc(this, 'MyVpc', {
      maxAzs: 3,
      natGateways: 1,
      subnetConfiguration: [
        {
          cidrMask: 24,
          name: 'Public',
          subnetType: ec2.SubnetType.PUBLIC,
        },
        {
          cidrMask: 24,
          name: 'Private',
          subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS,
        },
        {
          cidrMask: 24,
          name: 'Isolated',
          subnetType: ec2.SubnetType.PRIVATE_ISOLATED,
        },
      ],
    });
 
    // 输出
    new cdk.CfnOutput(this, 'VpcId', {
      value: vpc.vpcId,
      description: 'VPC ID',
      exportName: 'MyVpcId',
    });
  }
}

DevOps Guru 集成深度解析

Amazon Q 与 DevOps Guru 深度集成,提供智能运维支持:

DevOps Guru 分析

"""
DevOps Guru 与 Amazon Q 集成示例
"""
 
DEVOPS_GURU_INTEGRATION = {
    "problem_detection": {
        "memory_issues": {
            "symptoms": [
                "OOM (Out of Memory) 错误",
                "内存使用率持续 > 90%",
                "频繁的 GC 操作"
            ],
            "amazon_q_analysis": """
            基于 DevOps Guru 分析:
            
            1. 内存泄漏位置
               - Lambda 函数: processImage
               - 泄漏率: 5MB/请求
               - 累计影响: 2小时内耗尽 512MB 限制
            
            2. 可能原因
               - 闭包引用未释放
               - 全局变量累积
               - 缓存未设置上限
            
            3. 修复建议
            """
        }
    },
    
    "cost_optimization": {
        "lambda_optimization": {
            "current_cost": "$450/月",
            "optimization_potential": "$180/月",
            "suggestions": [
                "降低不活跃时段的预留并发",
                "使用 Spot 实例处理批处理",
                "优化代码减少执行时间"
            ]
        }
    }
}

AWS 服务深度集成

1. Lambda 函数开发

Amazon Q 与 Lambda 深度集成,提供专属优化:

# Q 引导的 Lambda 开发流程
 
# Step 1: 选择触发器
trigger = "S3 Event"
 
# Step 2: 选择处理逻辑
@lambda_handler
def process_s3_event(event, context):
    # Q 自动生成 S3 处理代码
    pass
 
# Step 3: 选择依赖层
layers = [
    "arn:aws:lambda:us-east-1:123456789:layer:python38:1",
    "arn:aws:lambda:us-east-1:123456789:layer:requests:1"
]
 
# Step 4: 配置环境变量
environment = {
    "TABLE_NAME": "ProdUsersTable",
    "REGION": "us-east-1"
}

Lambda 优化建议功能:

Q 会自动分析 Lambda 代码并提供优化建议:

问题类型建议预期收益
冷启动慢添加 M-N 分层依赖冷启动减少 40%
内存不足增加至 512MB稳定运行
超时添加重试逻辑可靠性提升
依赖过大使用 Lambda Extensions减少包体积

2. EC2 与容器服务

EC2 实例管理:

# Q 辅助的 EC2 操作
import boto3
 
ec2 = boto3.client('ec2', region_name='us-east-1')
 
# Q 建议:使用 Instance Lifecycle Hook
response = ec2.put_lifecycle_hook(
    LifecycleHookName='my-hook',
    LifecycleTransition='autoscaling:EC2_INSTANCE_TERMINATING',
    TargetGroupARNs=['arn:aws:elasticloadbalancing:...']
)

ECS/Fargate 部署:

# Q 生成的 ECS Task Definition
task_definition:
  family: "web-app"
  cpu: "256"
  memory: "512"
  network_mode: "awsvpc"
  requires_compatibilities: ["FARGATE"]
  
  container_definitions:
    - name: "web"
      image: "123456789.dkr.ecr.us-east-1.amazonaws.com/web:latest"
      portMappings:
        - containerPort: 3000
      environment:
        - name: "NODE_ENV"
          value: "production"

3. S3 与存储服务

智能存储建议:

Q:我的应用需要存储 10TB 用户上传的文件,访问频率低但需要高可靠性。

建议方案:
┌─────────────────────────────────────────────┐
│ 存储层设计                                   │
├─────────────────────────────────────────────┤
│ Hot Layer: S3 Standard                       │
│   - 最近 30 天文件                           │
│   - 成本: $0.023/GB                         │
│                                             │
│ Warm Layer: S3 Intelligent-Tiering           │
│   - 31-90 天文件                             │
│   - 自动降冷,成本优化                       │
│                                             │
│ Cold Layer: S3 Glacier Instant Retrieval    │
│   - 90 天以上文件                            │
│   - 成本: $0.004/GB(比 Standard 低 83%)   │
└─────────────────────────────────────────────┘

4. CloudFormation 与 CDK

Amazon Q 可以直接生成 AWS 基础设施即代码:

# Q 辅助的 CDK 代码生成
from aws_cdk import (
    App, Stack,
    aws_s3 as s3,
    aws_lambda as _lambda,
    aws_apigateway as apigw
)
 
class WebAppStack(Stack):
    def __init__(self, scope: App, id: str, **kwargs):
        super().__init__(scope, id, **kwargs)
        
        # Q 建议:使用 S3 Bucket with 静态网站托管
        bucket = s3.Bucket(
            self, "WebBucket",
            public_read_access=True,
            website_index_document="index.html",
            website_error_document="error.html"
        )
        
        # Q 建议:添加 Lambda 后端
        api_lambda = _lambda.Function(
            self, "ApiFunction",
            runtime=_lambda.Runtime.PYTHON_3_11,
            handler="handler.main",
            code=_lambda.Code.from_asset("lambda")
        )
        
        # Q 建议:API Gateway 集成
        api = apigw.LambdaRestApi(
            self, "Api",
            handler=api_lambda
        )

5. AWS SAM 模板生成

# Q 生成的 SAM 模板
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
 
Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: app.handler
      Runtime: python3.11
      Events:
        Api:
          Type: Api
          Properties:
            Path: /items
            Method: get
      Environment:
        Variables:
          TABLE_NAME: !Ref MyTable
      
  MyTable:
    Type: AWS::Serverless::SimpleTable

订阅计划与定价

Free 版本功能

功能限制
代码补全✅ 完整支持
代码解释✅ 每日 20 次
AWS 问答✅ 基础功能
IDE 支持VS Code, JetBrains
AWS 服务集成有限制

Pro 版本($19/月)

功能说明
无限代码解释无次数限制
代理模式自主执行多步骤任务
安全扫描完整漏洞检测
测试生成自动生成测试用例
优化建议性能和安全优化
优先级支持响应时间 < 24h

Business 版本(定制报价)

功能企业专属
SSO/SAML企业身份集成
权限管理细粒度访问控制
合规报告SOC 2, HIPAA 报告
VPC 端点私有网络连接
数据驻留区域数据存储
SLA 保障99.9% 可用性
专属支持客户成功经理

企业级功能

1. 安全与合规

数据处理原则:

原则说明
数据隔离每个租户数据完全隔离
加密传输TLS 1.3 加密
静态加密AES-256 加密存储
合规认证SOC 2, ISO 27001, FedRAMP
审计日志CloudTrail 完整记录

Secret 检测策略:

# 企业级 Secret 检测配置
secret_detection:
  enabled: true
  severity: HIGH
  
  patterns:
    - AWS Access Key: "AKIA[0-9A-Z]{16}"
    - Private Key: "-----BEGIN (RSA|DSA|EC) PRIVATE KEY-----"
    - Generic Secret: "(?i)(api[_-]?key|secret|password)[=:\\s]+['\"][^'\"]{8,}['\"]"
  
  actions:
    on_detection: BLOCK
    notify_security_team: true
    auto_remediate: false

2. IAM 与权限管理

企业可精细控制 Amazon Q 的操作权限:

// IAM 策略示例
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "q:GenerateCode",
        "q:ExplainCode",
        "q:SuggestRefactoring"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Deny",
      "Action": [
        "q:ExecuteAgent",
        "q:DeployToAWS"
      ],
      "Resource": "*",
      "Condition": {
        "Bool": {
          "aws:PrincipalTag/CanDeploy": "false"
        }
      }
    }
  ]
}

3. 审计与监控

CloudWatch 集成:

{
  "metrics": [
    {
      "metric_name": "QDeveloper_API_Calls",
      "namespace": "AWS/QDeveloper",
      "dimensions": ["UserId", "Feature"]
    },
    {
      "metric_name": "QDeveloper_Cost",
      "namespace": "AWS/QDeveloper",
      "dimensions": ["UserId"]
    }
  ]
}

CloudTrail 事件:

事件类型记录内容
CodeGeneration代码生成请求和响应
SecurityScan安全扫描结果
AWSActionAWS 服务操作(Lambda 部署等)
UserActivity用户活动日志

安装与配置

支持的 IDE

IDE支持版本安装方式
VS Code1.75+Extension Marketplace
JetBrains2023.2+Plugin Repository
AWS Toolkit-捆绑安装

安装步骤(VS Code)

  1. 打开 VS Code,进入 Extensions 面板
  2. 搜索 “Amazon Q”
  3. 点击安装 AWS Toolkit 扩展包
  4. 安装完成后,点击左侧 “Amazon Q” 图标
  5. 使用 AWS Builder ID 登录或 IAM 身份登录

配置示例

{
  "amazonq.region": "us-east-1",
  "amazonq.language": "zh-CN",
  "amazonq.autoSuggest": true,
  "amazonq.suggestionDelay": 200,
  "amazonq.maxTokens": 4096,
  "amazonq.temperature": 0.7,
  
  "amazonq.proxy": {
    "enabled": false,
    "url": "",
    "bypass": ""
  },
  
  "amazonq.enterprise": {
    "ssoEnabled": true,
    "vpcEndpoint": ""
  }
}

代理配置(企业环境)

{
  "amazonq.proxy": {
    "enabled": true,
    "url": "http://proxy.company.com:8080",
    "bypass": "localhost,*.internal",
    "auth": {
      "username": "${PROXY_USER}",
      "password": "${PROXY_PASS}"
    }
  }
}

与 GitHub Copilot 对比

功能对比矩阵

功能Amazon Q DeveloperGitHub Copilot
代码补全
代码解释
代码重构部分
测试生成
安全扫描✅ 内置
AWS 集成✅ 深度
代理模式✅ Pro
离线支持
本地模型

定价对比

方案Amazon Q ProGitHub Copilot
个人版$19/月$10/月
企业版$19/月/人 +$19/月/人
包含 API
无限制部分限流

AWS 场景优势

场景Amazon Q 优势Copilot 局限
Lambda 开发原生模板、优化建议通用补全
CDK/SAM直接生成 IaC无专门优化
IAM 策略安全分析不理解上下文
Cost 优化成本建议无此功能
故障排查DevOps Guru 集成有限支持

实战场景

场景一:微服务迁移

需求: 将单体应用拆分为 ECS 微服务

Prompt:

将现有的 Express.js 单体应用拆分为微服务架构,要求:
1. 用户服务(认证、Profile)
2. 订单服务(CRUD、状态管理)
3. 通知服务(邮件、短信)
4. API Gateway 统一入口
5. 使用 ECS Fargate 部署
6. 配置 ALB 负载均衡
7. 添加 X-Ray 分布式追踪
8. 实现服务间 JWT 认证

请生成完整的 CDK 基础设施代码和 Dockerfile。

Q 的输出:

  • CDK 微服务架构代码
  • 多个 Dockerfile(每个服务独立)
  • ECS Task Definition
  • ALB 监听器和目标组配置
  • IAM 角色和权限策略
  • X-Ray Daemon 配置
  • CloudWatch 日志配置

场景二:数据库性能优化

需求: RDS 查询性能调优

Prompt:

分析以下 RDS PostgreSQL 查询的性能问题:

SELECT u.name, u.email, COUNT(o.id) as order_count, SUM(o.amount) as total
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE o.created_at > '2024-01-01'
GROUP BY u.id
HAVING COUNT(o.id) > 5

请:
1. 识别性能瓶颈
2. 提出索引优化方案
3. 重写优化后的查询
4. 生成 EXPLAIN ANALYZE 分析
5. 给出迁移脚本

选型建议

推荐选择 Amazon Q Developer 的场景

  • ✅ 主要在 AWS 生态开发
  • ✅ 需要深度云服务集成
  • ✅ 企业环境需要安全合规
  • ✅ 需要代码安全扫描
  • ✅ 愿意为高级功能付费

不推荐选择的场景

  • ❌ 主要使用非 AWS 服务(GCP、Azure)
  • ❌ 预算有限,Copilot 足够
  • ❌ 需要本地部署或离线使用
  • ❌ 不使用 AWS,希望通用工具

参考资料


SUCCESS

Amazon Q Developer 是面向 AWS 开发者的专业级 AI 编程助手。其与 AWS 生态的深度集成、企业级安全特性和云服务优化能力,使其成为在 AWS 环境中进行 vibecoding 开发的强力选择。对于深度依赖 AWS 的团队,Q Developer 能显著提升开发效率并降低云操作复杂度。


高级配置与技巧

企业环境配置

{
  "amazonq": {
    "workspace": {
      "root": "${workspaceFolder}",
      "index_paths": [
        "src/**/*.py",
        "lib/**/*.py",
        "services/**/*.ts"
      ],
      "exclude_patterns": [
        "**/node_modules/**",
        "**/__pycache__/**",
        "**/dist/**",
        "**/build/**"
      ]
    },
 
    "code_analysis": {
      "enabled": true,
      "scan_on_save": true,
      "languages": ["python", "typescript", "javascript", "go"],
      "rules": {
        "security": true,
        "best_practices": true,
        "performance": true,
        "documentation": false
      }
    },
 
    "autocomplete": {
      "enabled": true,
      "trigger_mode": "automatic",
      "max_suggestions": 5,
      "inline_suggestions": true,
      "placeholder": true
    },
 
    "chat": {
      "enabled": true,
      "context_window": "50k",
      "include_file_content": true,
      "include_diagnostics": true
    }
  }
}

AWS 服务特定的配置

{
  "amazonq": {
    "aws": {
      "profile": "default",
      "region": "us-east-1",
 
      "services": {
        "lambda": {
          "optimizations": true,
          "cold_start_analysis": true,
          "dependency_layer_suggestions": true
        },
        "dynamodb": {
          "capacity_analysis": true,
          "gsi_recommendations": true,
          "on_demand_scaling": true
        },
        "s3": {
          "storage_class_suggestions": true,
          "lifecycle_rules": true,
          "encryption_audit": true
        },
        "rds": {
          "performance_insights": true,
          "parameter_group_suggestions": true,
          "index_analysis": true
        }
      }
    }
  }
}

团队协作配置

{
  "amazonq": {
    "team": {
      "enabled": true,
      "organization_id": "org-123456",
 
      "shared_knowledge": {
        "enabled": true,
        "index_team_codebase": true,
        "index_documentation": true
      },
 
      "standards": {
        "code_style": "google",
        "naming_convention": "snake_case",
        "documentation_required": true
      },
 
      "review": {
        "auto_review": true,
        "require_approval": false,
        "notify_on_changes": true
      }
    }
  }
}

常见问题与解决方案

安装与配置问题

问题 1:VS Code 扩展无法安装

症状:Amazon Q 扩展安装失败或显示加载错误

解决方案

# 1. 检查 VS Code 版本
code --version  # 需要 1.75+
 
# 2. 清除扩展缓存
rm -rf ~/.vscode/extensions/amazonwebservices.aws-toolkit-vscode*
 
# 3. 重新安装
code --install-extension AmazonWebServices.aws-toolkit-vscode
 
# 4. 检查网络连接
curl -I https:// marketplace.visualstudio.com
 
# 5. 检查代理设置(如需要)
# 设置 > 应用 > 代理 > 根据需要配置

问题 2:AWS 凭证配置失败

症状:无法连接到 AWS 或凭证无效

解决方案

# 1. 配置 AWS CLI
aws configure
 
# 2. 验证凭证
aws sts get-caller-identity
 
# 3. 在 VS Code 中设置默认配置文件
# Ctrl/Cmd + Shift + P > AWS: Set Default Profile
 
# 4. 使用 IAM Identity Center(推荐企业环境)
aws configure sso --profile default
 
# 5. 验证 Q 扩展可以访问
# 查看 > 命令面板 > Amazon Q: Refresh Status

使用问题

问题 3:代码建议质量不佳

症状:生成的代码不准确或不符合项目风格

解决方案

1. **提供更多上下文**
   - 在注释中描述需求
   - 提供输入输出示例
   - 说明代码风格要求
 
2. **使用项目索引**
   - 确保重要文件被索引
   - 排除无关文件
 
3. **调整建议设置**
   ```json
   {
     "amazonq.autocomplete.max_suggestions": 10,
     "amazonq.autocomplete.trigger_mode": "automatic"
   }
  1. 分步请求
    • 将复杂任务分解为简单步骤
    • 每次只请求一个功能

#### 问题 4:代理模式无响应

**症状**:Agent 模式卡住或无响应

**解决方案**:

```markdown
1. **检查超时设置**
   ```json
   {
     "amazonq.agent.timeout_minutes": 60
   }
  1. 简化任务

    • 将大任务分解为小任务
    • 减少文件操作数量
  2. 检查安全设置

    • 确保操作未被阻止
    • 检查 blocked_patterns
  3. 重启扩展

    • Ctrl/Cmd + Shift + P > Developer: Reload Window

### 企业环境问题

#### 问题 5:VPC 内无法访问

**症状**:无法使用 Q 的云端功能

**解决方案**:

```markdown
1. **使用 VPC 端点**
   - 在 VPC 中创建私有 API Gateway 端点
   - 配置 Q 使用内部端点

2. **配置代理**
   ```json
   {
     "amazonq.network.proxy": {
       "enabled": true,
       "url": "http://proxy:8080"
     }
   }
  1. 联系 IT 部门
    • 开启必要的安全组规则
    • 配置私有连接

#### 问题 6:合规性要求

**症状**:安全团队限制使用云端 AI 服务

**解决方案**:

```markdown
1. **启用数据保护**
   ```json
   {
     "amazonq.privacy": {
       "shareCodeWithAmazon": false,
       "logUsage": true,
       "dataResidency": "us-east-1"
     }
   }
  1. 使用本地模式

    • 等待 Amazon Q Developer Pro 私有部署
    • 考虑使用本地代码模型
  2. 合规报告

    • 联系 AWS 获取合规文档
    • SOC 2, HIPAA, FedRAMP 认证

---

## 实战项目示例

### 项目 1:无服务器数据处理管道

**Prompt:**

创建一个 AWS 无服务器数据处理管道:

  1. S3 接收上传的 CSV 文件
  2. Lambda 解析和处理数据
  3. 将结果存入 DynamoDB
  4. 通过 SNS 发送通知
  5. 配置 CloudWatch 监控
  6. 使用 Step Functions 编排流程

**Q 生成的架构代码:**

```python
# CDK 基础设施代码
from aws_cdk import (
    Stack,
    aws_s3 as s3,
    aws_lambda as _lambda,
    aws_dynamodb as dynamodb,
    aws_sns as sns,
    aws_sns_subscriptions as subscriptions,
    aws_stepfunctions as sfn,
    aws_stepfunctions_tasks as tasks,
    aws_cloudwatch as cloudwatch,
    aws_iam as iam,
    Duration,
    RemovalPolicy
)
from constructs import Construct

class DataPipelineStack(Stack):
    def __init__(self, scope: Construct, id: str, **kwargs):
        super().__init__(scope, id, **kwargs)

        # S3 Bucket
        self.input_bucket = s3.Bucket(
            self, "InputBucket",
            removal_policy=RemovalPolicy.DESTROY,
            auto_delete_objects=True
        )

        self.output_bucket = s3.Bucket(
            self, "OutputBucket",
            removal_policy=RemovalPolicy.DESTROY
        )

        # DynamoDB Table
        self.data_table = dynamodb.Table(
            self, "DataTable",
            partition_key=dynamodb.Attribute(
                name="pk",
                type=dynamodb.AttributeType.STRING
            ),
            sort_key=dynamodb.Attribute(
                name="sk",
                type=dynamodb.AttributeType.STRING
            ),
            removal_policy=RemovalPolicy.DESTROY
        )

        # SNS Topic
        self.notification_topic = sns.Topic(
            self, "NotificationTopic"
        )
        self.notification_topic.add_subscription(
            subscriptions.EmailSubscription("admin@example.com")
        )

        # Lambda Functions
        parse_lambda = self._create_lambda(
            "ParseLambda",
            "lambda/parse",
            "parse_handler"
        )

        process_lambda = self._create_lambda(
            "ProcessLambda",
            "lambda/process",
            "process_handler"
        )

        # IAM Roles
        self.input_bucket.grant_read(parse_lambda)
        self.output_bucket.grant_write(process_lambda)
        self.data_table.grant_write_data(process_lambda)
        self.notification_topic.grant_publish(process_lambda)

        # Step Functions State Machine
        parse_step = tasks.LambdaInvoke(
            self, "Parse Step",
            lambda_function=parse_lambda,
            input_path="$",
            result_path="$.parse_result"
        )

        process_step = tasks.LambdaInvoke(
            self, "Process Step",
            lambda_function=process_lambda,
            input_path="$.parse_result",
            result_path="$.process_result"
        )

        definition = parse_step.next(process_step)

        self.state_machine = sfn.StateMachine(
            self, "DataPipeline",
            definition=definition
        )

        # S3 Event Trigger
        self.input_bucket.add_event_notification(
            s3.EventType.OBJECT_CREATED,
            s3n.SqsDestination(self.dead_letter_queue),
            s3.NotificationKeyFilter(suffix=".csv")
        )

        # CloudWatch Alarms
        cloudwatch.Alarm(
            self, "ParseErrorAlarm",
            metric=parse_lambda.metric_errors(),
            threshold=5,
            evaluation_periods=1
        )

    def _create_lambda(self, id: str, code_path: str, handler: str) -> _lambda.Function:
        return _lambda.Function(
            self, id,
            runtime=_lambda.Runtime.PYTHON_3_11,
            handler=f"{handler}",
            code=_lambda.Code.from_asset(code_path),
            timeout=Duration.minutes(5),
            memory_size=256
        )

项目 2:实时聊天后端

Prompt:

使用 WebSocket API 创建实时聊天后端:
1. API Gateway WebSocket API
2. Lambda 处理连接/断开/消息
3. DynamoDB 存储连接和消息
4. 实现聊天室功能
5. 连接状态监控

Q 生成的处理函数:

# connection_manager.py
import boto3
import os
from datetime import datetime
from typing import Dict, Set
import json
 
dynamodb = boto3.resource('dynamodb')
table_name = os.environ['CONNECTIONS_TABLE']
table = dynamodb.Table(table_name)
 
class ConnectionManager:
    def __init__(self):
        self.connections: Dict[str, str] = {}  # connection_id -> room_id
 
    async def on_connect(self, connection_id: str, room_id: str):
        """处理新的 WebSocket 连接"""
        self.connections[connection_id] = room_id
 
        # 存储连接信息
        table.put_item(Item={
            'connectionId': connection_id,
            'roomId': room_id,
            'connectedAt': datetime.utcnow().isoformat(),
            'status': 'connected'
        })
 
        # 通知房间内其他用户
        await self.broadcast_to_room(
            room_id,
            {
                'type': 'user_joined',
                'connectionId': connection_id,
                'timestamp': datetime.utcnow().isoformat()
            },
            exclude=[connection_id]
        )
 
    async def on_disconnect(self, connection_id: str):
        """处理连接断开"""
        room_id = self.connections.pop(connection_id, None)
 
        if room_id:
            # 更新连接状态
            table.update_item(
                Key={'connectionId': connection_id},
                UpdateExpression='SET #status = :status, disconnectedAt = :time',
                ExpressionAttributeNames={'#status': 'status'},
                ExpressionAttributeValues={
                    ':status': 'disconnected',
                    ':time': datetime.utcnow().isoformat()
                }
            )
 
            # 通知房间内其他用户
            await self.broadcast_to_room(
                room_id,
                {
                    'type': 'user_left',
                    'connectionId': connection_id,
                    'timestamp': datetime.utcnow().isoformat()
                }
            )
 
    async def send_message(self, connection_id: str, message: dict):
        """向特定连接发送消息"""
        # 使用 API Gateway Management API 发送
        pass
 
    async def broadcast_to_room(self, room_id: str, message: dict, exclude: list = None):
        """向房间内所有连接广播消息"""
        # 查询房间内的所有连接
        response = table.query(
            IndexName='roomId-index',
            KeyConditionExpression='roomId = :room',
            ExpressionAttributeValues={':room': room_id}
        )
 
        for item in response['Items']:
            conn_id = item['connectionId']
            if conn_id not in (exclude or []):
                await self.send_message(conn_id, message)
 
manager = ConnectionManager()
 
 
# lambda_handler.py
import json
import os
from connection_manager import manager
 
API_ENDPOINT = os.environ.get('API_ENDPOINT')
 
def lambda_handler(event, context):
    connection_id = event['requestContext']['connectionId']
    route_key = event['requestContext']['routeKey']
 
    if route_key == '$connect':
        # WebSocket 连接建立
        room_id = event['queryStringParameters'].get('room', 'default')
        # 同步执行
        loop = asyncio.new_event_loop()
        asyncio.set_event_loop(loop)
        loop.run_until_complete(manager.on_connect(connection_id, room_id))
        return {'statusCode': 200}
 
    elif route_key == '$disconnect':
        # WebSocket 连接断开
        loop = asyncio.new_event_loop()
        asyncio.set_event_loop(loop)
        loop.run_until_complete(manager.on_disconnect(connection_id))
        return {'statusCode': 200}
 
    elif route_key == 'sendMessage':
        # 处理发送消息
        body = json.loads(event.get('body', '{}'))
        room_id = body.get('room', 'default')
        message = body.get('message', '')
 
        loop = asyncio.new_event_loop()
        asyncio.set_event_loop(loop)
        loop.run_until_complete(
            manager.broadcast_to_room(
                room_id,
                {
                    'type': 'message',
                    'content': message,
                    'connectionId': connection_id,
                    'timestamp': datetime.utcnow().isoformat()
                },
                exclude=[connection_id]
            )
        )
        return {'statusCode': 200}
 
    return {'statusCode': 400, 'body': 'Unknown route'}

选型建议

推荐选择 Amazon Q Developer 的场景

  • ✅ 主要在 AWS 生态开发
  • ✅ 需要深度云服务集成
  • ✅ 企业环境需要安全合规
  • ✅ 需要代码安全扫描
  • ✅ 愿意为高级功能付费
  • ✅ 需要 DevOps Guru 能力
  • ✅ 使用 CDK/Terraform 进行 IaC

不推荐选择的场景

  • ❌ 主要使用非 AWS 服务(GCP、Azure)
  • ❌ 预算有限,Copilot 足够
  • ❌ 需要本地部署或离线使用
  • ❌ 不使用 AWS,希望通用工具
  • ❌ 只需要基础的代码补全

与其他工具的选择矩阵

需求推荐工具原因
AWS 原生开发Amazon Q深度集成
GitHub 项目CopilotGitHub 原生
快速原型Cursor优秀 UX
多云环境Copilot跨平台
安全扫描Amazon Q内置 DevOps Guru
预算优先Gemini Free免费且强大

参考资料


附录:命令参考

VS Code 命令面板

命令功能
Cmd/Ctrl + Alt + Q打开 Amazon Q
Cmd/Ctrl + Q触发代码补全
Amazon Q: Chat打开聊天面板
Amazon Q: Explain Code解释选中代码
Amazon Q: Refactor重构选中代码
Amazon Q: Security Scan运行安全扫描

AWS Toolkit 命令

命令功能
AWS: Connect to AWS连接到 AWS
AWS: Create new SAM Project创建 SAM 项目
AWS: Deploy Lambda部署 Lambda 函数
AWS: Invoke Lambda调用 Lambda 函数

实战:Amazon Q Developer 快速上手指南

第一阶段:安装与配置(10分钟)

步骤1:安装AWS Toolkit

Amazon Q作为AWS Toolkit的一部分提供安装。有两种方式:

方式一:独立安装Amazon Q

  1. 打开VS Code
  2. 进入Extensions面板(Cmd/Ctrl + Shift + X
  3. 搜索 “Amazon Q”
  4. 点击安装 “Amazon Q: AI Coding Assistant”

方式二:安装完整AWS Toolkit

  1. 搜索 “AWS Toolkit”
  2. 安装完整的AWS Toolkit扩展包
  3. Amazon Q会自动包含在内

步骤2:配置身份验证

Amazon Q支持两种身份验证方式:

方式一:使用AWS Builder ID(推荐个人开发者)

  1. 安装完成后,点击左侧Amazon Q图标
  2. 选择 “Sign in with Builder ID”
  3. 按照提示在浏览器中完成认证
  4. 返回VS Code完成登录

方式二:使用IAM Identity Center(推荐企业用户)

  1. 企业管理员需要先在AWS IAM Identity Center中配置
  2. 获取SSO配置信息
  3. 在VS Code中选择 “Sign in with AWS IAM Identity Center”
  4. 输入组织SSO配置URL完成登录

TIP

如果是企业环境,建议联系IT部门获取SSO配置。企业版支持SSO/SAML集成,可以统一管理开发者身份。

步骤3:基础配置

打开设置(Cmd/Ctrl + ,),配置Amazon Q:

{
  "amazonq.region": "us-east-1",
  "amazonq.language": "zh-CN",
  "amazonq.autoSuggest": true,
  "amazonq.suggestionDelay": 200
}

第二阶段:连接AWS账户(10分钟)

方式一:使用AWS CLI配置

# 安装AWS CLI(如果未安装)
# macOS
brew install awscli
 
# Windows
# 下载安装包:https://aws.amazon.com/cli/
 
# 配置凭证
aws configure
 
# 输入以下信息:
# AWS Access Key ID: AKIAIOSFODNN7EXAMPLE
# AWS Secret Access Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
# Default region name: us-east-1
# Default output format: json
 
# 验证配置
aws sts get-caller-identity

方式二:使用IAM Identity Center

# 配置SSO
aws configure sso
 
# 按照提示输入:
# SSO start URL: https://your-company.awsapps.com/start
# SSO region: us-east-1
# SSO registration scopes: 可选,直接回车跳过
 
# 选择要使用的角色
# 默认: ReadOnlyAccess 或 AdministratorAccess

方式三:在VS Code中配置

  1. 在VS Code左下角点击AWS图标
  2. 选择 “Switch Regions” 选择目标区域
  3. 点击 “Connect to AWS”
  4. 选择凭证来源(Profile)

第三阶段:开始第一个项目(15分钟)

场景1:创建Lambda函数

步骤1:创建新函数

按下 Cmd/Ctrl + Alt + Q 打开Amazon Q,输入:

创建一个Python Lambda函数,处理S3上传事件:
- 函数名称:imageProcessor
- 触发器:S3上传图片
- 功能:获取图片元数据,生成缩略图
- 使用boto3和PIL库

步骤2:Q会自动生成

Q会生成完整的Lambda函数代码:

import json
import boto3
from PIL import Image
import io
 
s3 = boto3.client('s3')
 
def lambda_handler(event, context):
    """
    处理S3上传的图片文件
    """
    # 从事件中获取bucket和key
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']
    
    # 获取原图
    response = s3.get_object(Bucket=bucket, Key=key)
    image_content = response['Body'].read()
    
    # 打开图片
    image = Image.open(io.BytesIO(image_content))
    
    # 生成缩略图
    thumbnail = image.copy()
    thumbnail.thumbnail((128, 128))
    
    # 保存缩略图
    thumb_buffer = io.BytesIO()
    thumbnail.save(thumb_buffer, image.format)
    thumb_buffer.seek(0)
    
    # 上传到S3
    thumb_key = f"thumbnails/{key.split('/')[-1]}"
    s3.put_object(
        Bucket=bucket,
        Key=thumb_key,
        Body=thumb_buffer.getvalue(),
        ContentType=image.format
    )
    
    return {
        'statusCode': 200,
        'body': json.dumps({
            'original': key,
            'thumbnail': thumb_key,
            'original_size': image.size,
            'thumbnail_size': thumbnail.size
        })
    }

步骤3:部署函数

  1. 右键点击生成的代码
  2. 选择 “Amazon Q: Deploy to Lambda”
  3. 选择目标区域和函数名称
  4. 确认部署

场景2:生成基础设施代码

使用CDK生成VPC架构

使用CDK创建一个完整的VPC架构:
- 3个可用区(us-east-1a, us-east-1b, us-east-1c)
- 公有子网(用于负载均衡器)
- 私有子网(用于应用服务器)
- NAT网关
- VPC端点用于S3和DynamoDB
- 使用TypeScript

Q会生成完整的CDK代码:

import * as cdk from 'aws-cdk-lib';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as logs from 'aws-cdk-lib/aws-logs';
 
export class VpcStack extends cdk.Stack {
  constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
    super(scope, id, props);
 
    // 创建VPC
    const vpc = new ec2.Vpc(this, 'MainVpc', {
      maxAzs: 3,
      natGateways: 3,
      ipAddresses: ec2.IpAddresses.cidr('10.0.0.0/16'),
      
      // 子网配置
      subnetConfiguration: [
        {
          cidrMask: 24,
          name: 'Public',
          subnetType: ec2.SubnetType.PUBLIC,
        },
        {
          cidrMask: 24,
          name: 'Private',
          subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS,
        },
        {
          cidrMask: 24,
          name: 'Isolated',
          subnetType: ec2.SubnetType.PRIVATE_ISOLATED,
        },
      ],
      
      // 启用VPC端点
      gatewayEndpoints: {
        's3': {
          service: ec2.GatewayVpcEndpointAwsService.S3,
        },
        'dynamodb': {
          service: ec2.GatewayVpcEndpointAwsService.DYNAMODB,
        },
      },
    });
 
    // 添加S3接口端点(私有子网访问)
    vpc.addInterfaceEndpoint('S3Endpoint', {
      service: ec2.InterfaceVpcEndpointAwsService.S3,
      subnets: {
        subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS,
      },
    });
 
    // CloudWatch日志组
    new logs.LogGroup(this, 'VpcFlowLogs', {
      retention: logs.RetentionDays.ONE_WEEK,
    });
 
    // 输出
    new cdk.CfnOutput(this, 'VpcId', {
      value: vpc.vpcId,
      exportName: 'MainVpcId',
    });
  }
}

第四阶段:使用高级功能(20分钟)

功能1:安全扫描

运行代码安全扫描

对当前项目运行安全扫描,检查:
1. 硬编码的密钥和凭证
2. SQL注入风险
3. XSS漏洞
4. 依赖包漏洞

启用实时扫描

{
  "amazonq.security": {
    "scanOnSave": true,
    "scanOnCommit": true,
    "autoScan": true,
    "severityThreshold": "MEDIUM"
  }
}

功能2:代码优化建议

请求性能优化

分析 src/services/databaseService.ts 的查询性能:
1. 识别N+1查询问题
2. 建议索引优化
3. 提供缓存策略
4. 给出优化后的代码

功能3:IAM策略分析

分析现有策略

分析这个IAM策略的安全性:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:*"],
      "Resource": "*"
    }
  ]
}

Q会分析出以下问题并提供修复建议:

WARNING

发现安全问题:

  1. 使用了通配符 * 授予所有S3操作权限
  2. Resource: "*" 允许访问所有S3桶
  3. 缺少条件限制(如IP白名单)

Q的建议:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::my-app-bucket/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": [
            "10.0.0.0/8",
            "172.16.0.0/12"
          ]
        }
      }
    }
  ]
}

功能4:使用代理模式(Pro版本)

创建完整微服务

使用代理模式创建完整的用户管理微服务:
- FastAPI + PostgreSQL
- Docker容器化
- GitHub Actions CI/CD
- CDK部署到ECS Fargate
- 包含JWT认证

代理会逐步执行:

  1. 创建项目结构
  2. 编写数据库模型
  3. 实现API端点
  4. 配置Docker
  5. 设置CI/CD流水线
  6. 生成CDK部署代码

IMPORTANT

代理模式会执行写入和终端命令。在生产环境中,建议:

  • 先在开发环境测试
  • 启用所有确认提示
  • 设置操作审批流程

常见使用场景

场景1:数据库迁移

将MySQL迁移到Aurora PostgreSQL:
1. 生成Schema转换脚本
2. 创建数据迁移工具
3. 生成数据验证查询
4. 配置蓝绿部署

场景2:遗留代码现代化

将旧的Express.js应用现代化:
1. 添加TypeScript
2. 重构为模块化结构
3. 添加Docker支持
4. 设置自动化测试
5. 准备云原生迁移

场景3:Cost优化

分析我的AWS账单最高的Lambda函数:
1. 识别优化空间
2. 建议预留并发配置
3. 优化内存和超时设置
4. 估算节省金额

与其他工具的协作

与GitHub Copilot共存

Amazon Q和GitHub Copilot可以同时安装使用:

功能Amazon QGitHub Copilot
代码补全
AWS集成✅✅
安全扫描
对话助手
代码审查部分

TIP

建议同时使用两者:Amazon Q用于AWS相关任务,Copilot用于常规代码补全。

与Terraform协作

将现有的CloudFormation模板转换为Terraform:
1. 读取现有CloudFormation文件
2. 转换为HCL格式
3. 验证Terraform语法
4. 优化资源定义

故障排除

问题:Q无法连接到AWS

检查步骤:

# 1. 验证AWS凭证
aws sts get-caller-identity
 
# 2. 检查区域配置
aws configure get region
 
# 3. 验证Q扩展状态
# VS Code: Cmd/Ctrl + Shift + P > Amazon Q: Refresh Status

问题:建议质量不佳

优化方法:

  1. 提供更多上下文
  2. 指定具体的技术栈版本
  3. 引用相关代码文件
  4. 分步骤请求复杂任务

问题:代理模式超时

解决方案:

{
  "amazonq.agent": {
    "timeoutMinutes": 60,
    "maxIterations": 100
  }
}

成本计算

使用Free版本的场景

场景限制适合使用
个人学习每天20次代码解释
小型项目基础补全
AWS探索入门级功能

升级到Pro的理由

需求Free限制Pro优势
代码解释20次/天无限
代理模式
安全扫描基础完整
企业支持

下一步学习路径

  1. 第一天:完成安装和基础配置
  2. 第一周:使用Q开发一个Lambda函数
  3. 第二周:尝试CDK生成和基础设施代码
  4. 第三周:探索安全扫描和代码优化功能
  5. 第四周:使用代理模式完成一个完整项目

相关资源

SUCCESS

恭喜完成Amazon Q Developer快速上手!作为AWS官方出品的AI编程助手,Q在云原生开发方面具有独特优势。持续使用,你会发现更多提升效率的功能。建议结合AWS官方培训资源,深入学习云开发最佳实践。