SuperAPI AI 工具集

aws-cloud-patterns

部署与运维

查看项目

更新于 10-15 12:10

技能介绍

用途

AWS 云模式(aws-cloud-patterns)是一份面向 AWS 上构建应用的模式集合,覆盖 Lambda、ECS、S3、DynamoDB,以及使用 CDK 或 Terraform 的基础设施即代码(IaC)。资料以可直接参考的代码示例和检查清单为主,帮助在实现无服务器与云原生架构时采用一致的写法。

主要能力

Lambda 函数模式

示例使用 aws-lambda 的 APIGatewayProxyHandlerV2 与 @aws-sdk/client-dynamodb、@aws-sdk/lib-dynamodb。处理器从 event.pathParameters?.id 取参数,缺失时返回 400;通过 GetCommand 按 pk 查询表(表名来自 process.env.TABLE_NAME),未命中返回 404,命中返回 200 与 JSON 响应体。要点是:在处理器外部初始化 SDK 客户端,以便在多次调用之间复用连接。

DynamoDB 单表设计

给出 OrderItem 接口示例,包含 pk(如 USER#<userId>)、sk(如 ORDER#<orderId>)、gsi1pk(如 ORDER#<orderId>)、gsi1sk(如 ITEM#<itemId>)、entityType("Order" | "OrderItem")、data 与可选 ttl。查询参数示例使用 KeyConditionExpression: "pk = :pk AND begins_with(sk, :prefix)",配合 ExpressionAttributeValues 中的 :pk 与 :prefix。原则是先设计访问模式,再建模键;用 GSI 支持替代查询模式。

CDK 基础设施

示例定义 ApiStack,创建 DynamoDB 表(分区键 pk、排序键 sk、PAY_PER_REQUEST 计费、开启时间点恢复、RemovalPolicy.RETAIN),创建 NodejsFunction(入口 src/handler.ts、运行时 NODEJS_22_X、架构 ARM_64、内存 256、超时 10 秒、环境变量 TABLE_NAME),并通过 table.grantReadWriteData(fn) 授予读写权限。

S3 事件处理

示例从 S3Event 遍历 event.Records,读取 record.s3.bucket.name 与经 decodeURIComponent 处理(并将 + 替换为空格)的 record.s3.object.key,用 GetObjectCommand 获取对象,obj.Body?.transformToString() 转为字符串后调用 processFile(key, body)。

反模式

资料列出的反模式包括:硬编码 AWS 凭证而不使用 IAM 角色;未合理设置 Lambda 超时与内存;在 DynamoDB 上使用类似 SELECT * 的扫描而非带键条件的查询;为每个 CRUD 操作各建一个 Lambda 而非按领域分组;缺少针对错误率与限流的 CloudWatch 告警;未在 DynamoDB 表上启用时间点恢复。

检查清单

  • SDK 客户端在 Lambda 处理器外部初始化
  • IAM 角色遵循最小权限原则
  • 在表结构之前设计 DynamoDB 访问模式
  • Lambda 使用 ARM64 架构以节省成本
  • S3 存储桶启用版本控制与生命周期策略
  • 为 Lambda 错误、时长与限流设置 CloudWatch 告警
  • 基础设施以代码定义(CDK 或 Terraform)
  • 密钥存放于 Systems Manager Parameter Store 或 Secrets Manager

使用方式

资料未提供安装命令或具体调用步骤,仅以代码示例与清单形式呈现模式。可按需将示例中的代码片段作为实现参考,并结合 CDK 或 Terraform 落地基础设施。

适用场景

适用于在 AWS 上设计无服务器 API、DynamoDB 数据建模、S3 事件驱动处理,以及用 CDK 定义基础设施的场景。

限制

资料未说明 ECS 的具体模式示例、Terraform 的具体代码示例、支持的运行时范围、许可协议或版本信息,这些内容暂未提供。