关于 amazon-web-services
amazon-web-services 是面向使用 AWS 的开发者和架构师的云开发技能,涵盖 JavaScript SDK v3 与 AWS CDK v2。内容涉及云服务集成、基础设施即代码及常见配置与安全实践。
主要功能
- 01AWS SDK for JavaScript v3 模块化用法
- 02AWS CDK v2 基础设施即代码
- 03Lambda、S3 与 DynamoDB 模式
- 04SQS、SNS 与事件消息
- 05IAM 最小权限实践
- 06CDK 模板断言与快照测试
适用场景
- 01构建无服务器应用
- 02部署容器与托管数据库
- 03设置事件驱动系统
- 04使用 TypeScript 定义云基础设施
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ oakoss/ agent-skills --skill amazon-web-services安装后在 Claude Code 中输入/amazon-web-services确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/cdk-infrastructure.mdcontainers-ecs-fargate.mddynamodb.mdiam-security.mdlambda-functions.mdmessaging-sqs-sns.mdnetworking-cloudfront-route53.mds3-storage.md详细介绍
Amazon Web Services
概述
Amazon Web Services(AWS)提供云计算服务,用于构建可扩展的应用程序。AWS SDK for JavaScript v3 使用模块化软件包(@aws-sdk/client-*),并提供一流的 TypeScript 支持。AWS CDK v2 使用 TypeScript 构造定义基础设施即代码,并将其合成为 CloudFormation 模板。
适用场景: 构建云原生应用程序、无服务器架构、容器部署、托管数据库、CDN 分发、事件驱动系统或基础设施即代码。
不适用场景: 简单的静态网站(可考虑 Vercel/Netlify)、仅用于本地开发的工具、无需部署到云端的项目。
快速参考
| 服务 / 模式 | API / 构造 | 要点 |
|---|---|---|
| S3 上传 | PutObjectCommand | 从 @aws-sdk/client-s3 模块化导入 |
| S3 预签名 URL | getSignedUrl() | 来自 @aws-sdk/s3-request-presigner,最长 7 天 |
| Lambda 函数 | new lambda.Function() | CDK L2 构造,设置 memorySize 和 timeout |
| Lambda 层 | new lambda.LayerVersion() | 在多个函数间共享代码和依赖项 |
| IAM 策略 | new iam.PolicyStatement() | 始终遵循最小权限原则,避免使用 * 资源 |
| DynamoDB 表 | new dynamodb.Table() | 单表设计,可变负载使用 PAY_PER_REQUEST |
| DynamoDB GSI | table.addGlobalSecondaryIndex() | 单独设置吞吐量,最终一致性 |
| SQS 队列 | new sqs.Queue() | 为失败消息配置 DLQ,使用 WaitTimeSeconds 进行长轮询 |
| SNS 主题 | new sns.Topic() | 扇出到 SQS、Lambda、HTTP 端点 |
| CloudFront | new cloudfront.Distribution() | S3 源站使用 OAC,配置缓存策略 |
| RDS/Aurora | new rds.DatabaseCluster() | 使用 RDS Proxy 进行连接池管理 |
| ECS Fargate | new ecs_patterns.ApplicationLoadBalancedFargateService() | 更高级别的模式构造 |
| Route 53 | new route53.ARecord() | 为 AWS 资源使用别名记录 |
| Secrets Manager | secretsmanager.Secret.fromSecretNameV2() | 自动轮换,绝不要硬编码密钥 |
| CDK 堆栈 | new cdk.Stack(app, 'Id') | 每个部署单元使用一个堆栈 |
| CDK 测试 | Template.fromStack(stack) | 精细断言和快照测试 |
常见错误
| 错误 | 正确做法 |
|---|---|
使用 AWS SDK v2(aws-sdk) | 使用模块化 v3(@aws-sdk/client-*),减小打包体积 |
IAM Action: "*" 或 Resource: "*" | 将范围限定为特定操作和资源 ARN |
| SQS 队列没有 DLQ | 始终为失败的消息配置死信队列 |
| 使用 DynamoDB 扫描来查询 | 先设计访问模式,再使用带 GSI/LSI 的 Query |
| 在代码或环境变量中硬编码密钥 | 使用 Secrets Manager 或 SSM Parameter Store |
Lambda 打包 node_modules 时未进行摇树优化 | 使用 NodejsFunction 和 esbuild 打包 |
有状态资源未设置 RemovalPolicy | 为生产数据库和存储桶设置 RemovalPolicy.RETAIN |
| 每个 CRUD 操作都创建一个 Lambda | 将相关操作分组,并使用事件路由 |
| RDS 未使用连接池 | 使用 RDS Proxy,或限制每个 Lambda 的 max_connections |
| CloudFront 未设置缓存策略 | 明确定义 CachePolicy,以控制 TTL 和标头 |
| CDK 测试只使用快照 | 将细粒度断言与快照测试结合使用 |
| 预签名 URL 未指定内容类型 | 上传时在 PutObjectCommand 中包含 ContentType |
委派
- 基础设施模式:使用
ExploreAgent 探索 AWS 架构 - 安全审查:使用
TaskAgent 审核 IAM 策略 - 成本优化:使用
TaskAgent 调整资源规格
如果有
docker技能,请将容器构建模式和 Dockerfile 优化委派给它。 如果有github-actions技能,请将 AWS 部署的 CI/CD 流水线模式委派给它。 如果有typescript-patterns技能,请将 CDK 代码中使用的 TypeScript 严格模式和类型模式委派给它。 如果有application-security技能,请将 AWS 安全最佳实践和威胁建模委派给它。
参考资料
评论
支持 Markdown