用了一周 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...

相关推荐
威联通网络存储3 天前
基于TS-h3087XU-RP的大型成套空分设备DCS历史趋势数据治理
aws
A小辣椒18 天前
AWS Clould Support Engineer就职面试题
aws
亚林瓜子21 天前
AWS WAF中如何放行某个触发了托管规则的接口
aws·waf
悠悠1213823 天前
AWS DevOps Agent 体验一周后,我决定把 oncall 手机调成静音了
云计算·aws·devops
yyuuuzz23 天前
独立站运营的几个技术层面常见问题
大数据·运维·服务器·网络·数据库·aws
yyuuuzz23 天前
游戏云服务器推荐的技术选择思路
大数据·运维·服务器·游戏·云计算·aws
kernelcraft24 天前
Boto3:Python 操作 AWS 的官方 SDK
开发语言·python·其他·aws
普通网友1 个月前
Serverless 框架:多云函数部署(AWS + 阿里云 + 腾讯云)
阿里云·serverless·aws
TG_yunshuguoji1 个月前
亚马逊云代理商:如何用 CloudWatch+Lambda 打造自动化告警系统
大数据·运维·自动化·云计算·aws
yyuuuzz1 个月前
独立站搭建的几个核心技术问题
运维·服务器·网络·数据库·aws