用了一周 Amazon Q Developer,这几个场景真香

写 Lambda 函数从零开始要多久?加上调 Bedrock 的参数、DynamoDB 的读写、SNS 通知------搞不好半天就过去了。

我用 Amazon Q Developer 跑了一周,有些场景确实快得离谱。直接上干货。

先说说它是什么

Amazon Q Developer 是亚马逊云科技的 AI 编程助手,装在 VS Code 或 JetBrains 里用。核心能力:

  • 实时代码补全:写到一半它就猜出你要干嘛
  • 自然语言生成代码:描述需求,直接出代码
  • 代码解释 & 转换:看不懂的代码丢给它解释,Python 2 转 3 也能搞
  • 安全扫描:帮你揪出硬编码 credentials 和过宽的 IAM 权限

重点是:它对 AWS 服务的理解是原生的。写 Lambda、DynamoDB、S3 相关代码时,补全准确度明显不一样。

场景一:写 Lambda 函数(最香的)

输入注释描述需求:

python 复制代码
# Create a Lambda function that:
# 1. Receives an S3 event when a new image is uploaded
# 2. Uses Bedrock to analyze the image content
# 3. Stores the analysis result in DynamoDB
# 4. Sends a notification via SNS

Q Developer 生成的代码:

python 复制代码
import boto3
import json
import os
from datetime import datetime

bedrock = boto3.client('bedrock-runtime', region_name='us-east-1')
dynamodb = boto3.resource('dynamodb')
sns = boto3.client('sns')
s3 = boto3.client('s3')

table = dynamodb.Table(os.environ['TABLE_NAME'])
topic_arn = os.environ['SNS_TOPIC_ARN']

def handler(event, context):
    for record in event['Records']:
        bucket = record['s3']['bucket']['name']
        key = record['s3']['object']['key']
        
        # Get image from S3
        response = s3.get_object(Bucket=bucket, Key=key)
        image_bytes = response['Body'].read()
        
        # Analyze with Bedrock Claude
        analysis = bedrock.invoke_model(
            modelId='anthropic.claude-3-haiku-20240307-v1:0',
            body=json.dumps({
                'messages': [{
                    'role': 'user',
                    'content': [
                        {'type': 'image', 'source': {
                            'type': 'base64',
                            'media_type': 'image/jpeg',
                            'data': __import__('base64').b64encode(image_bytes).decode()
                        }},
                        {'type': 'text', 'text': 'Describe this image in detail.'}
                    ]
                }],
                'max_tokens': 1024
            })
        )
        
        result = json.loads(analysis['body'].read())
        description = result['content'][0]['text']
        
        # Store in DynamoDB
        table.put_item(Item={
            'image_key': key,
            'bucket': bucket,
            'description': description,
            'analyzed_at': datetime.utcnow().isoformat(),
            'status': 'completed'
        })
        
        # Send notification
        sns.publish(
            TopicArn=topic_arn,
            Subject=f'Image Analyzed: {key}',
            Message=f'Image {key} analyzed successfully.\n\nDescription: {description[:200]}'
        )
    
    return {'statusCode': 200, 'body': 'OK'}

说实话,Bedrock 的 modelId、多模态输入格式、S3 event 结构------全对。环境变量用法也合理。

核心缺的是错误处理,手动加 try/except 改了不到 10 行就能跑。比从零写快了至少 20 分钟。

场景二:CDK 基础设施代码

typescript 复制代码
// Create a CDK stack with:
// - API Gateway REST API
// - Lambda function behind it
// - DynamoDB table for storage
// - Cognito user pool for auth

生成的 CDK 代码基本可用。IAM 权限的 grantReadWriteData() 和 API Gateway 的 LambdaIntegration 都是推荐写法,不是那种一把梭 "Resource": "*" 的野路子。

场景三:安全扫描

我拿老项目跑了一遍,发现了 3 个之前 review 没抓住的问题:

  • 硬编码的 credentials
  • 过于宽泛的 IAM 策略
  • 未加密的 S3 桶配置

这个功能平时不起眼,但关键时刻能救命。

场景四:代码转换

Python 2 转 Python 3 的老活:

  • print 语句 → print() 函数 ✓
  • unicodestr
  • dict.iteritems()dict.items()
  • except Exception, eexcept Exception as e

准确率大概 95%,剩下 5% 是边缘情况手动调。

总结一下

场景 效率提升 准确度
AWS 服务代码 明显
CDK/CloudFormation 明显
安全扫描 有价值 中高
代码转换 明显
通用业务逻辑 一般 中等

核心优势就一句话:对 AWS 生态理解深。写 Bedrock、Lambda、DynamoDB 代码时,API 签名、IAM 权限模型、调用格式都是对的。

局限也有------复杂业务逻辑还得人来设计,AI 生成的代码结构合理但缺乏业务上下文理解。

怎么用

  1. VS Code 装 Amazon Q 扩展
  2. Builder ID 登录(免费)
  3. 开写,AI 自动补全

免费版日常够用,Pro 版($19/月)上下文窗口更大,安全扫描额度更多。


🔗 Amazon Q Developer:aws.amazon.com/cn/q/develo... 🔗 VS Code 扩展:marketplace.visualstudio.com/items?itemN...

相关推荐
亚马逊云开发者12 小时前
AI Agent 安全护栏,配置即用
aws
炸裂狸花猫13 小时前
Kubernetes架构演进:Node Pool分层与Pod IP不足的解决方案
云原生·架构·kubernetes·aws·oci·oke
亚林瓜子14 小时前
AWS EB为AutoScaling组添加告警
云计算·aws·alarm·ec2·cw·eb
亚林瓜子14 小时前
AWS RDS创建ReadLatency,WriteLatency,DBLoad,AuroraVolumeBytesLeftTotal四种指标告警
mysql·aws·aurora·alarm·cloudwatch·rds·cw
亚马逊云开发者15 小时前
MySQL 撑不住了?试试这个 Serverless 数据库
aws
亚马逊云开发者1 天前
Bedrock 推理成本优化指南:批量推理省 50%,提示缓存省 90%
aws
亚马逊云开发者1 天前
用 Kiro 从零做了个 Web 项目,聊聊规范驱动开发是不是真的好使
aws
zhojiew1 天前
在eks集群中部署eks-node-monitoring-agent并利用NodeDiagnostic收集节点日志
aws·eks
信看2 天前
亚马逊 AWS MQTT(S) 测试
网络·云计算·aws