You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS CDK中为新建DynamoDB表预置默认初始数据

AWS CDK为DynamoDB表插入默认数据的实现方案

方案1:CDK原生实现(小数据量场景推荐)

CDK本身没有内置专门的DynamoDB数据写入接口,但可以通过AwsCustomResource调用AWS原生API实现部署时自动写入默认数据,无需额外工具:

  • 需提前引入依赖包:aws-cdk-lib/custom-resources、aws-cdk-lib/aws-dynamodb
  • 实现逻辑示例(TypeScript版本):
import { AwsCustomResource, AwsCustomResourcePolicy, PhysicalResourceId } from 'aws-cdk-lib/custom-resources';
import { Table, AttributeType, BillingMode, CfnOutput } from 'aws-cdk-lib/aws-dynamodb';
import { Stack, StackProps } from 'aws-cdk-lib';
import { Construct } from 'constructs';

export class DynamoDBSeedStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);

    // 定义DynamoDB表
    const demoTable = new Table(this, 'DemoTable', {
      partitionKey: { name: 'id', type: AttributeType.STRING },
      billingMode: BillingMode.PAY_PER_REQUEST
    });

    // 写入单条默认数据,多条数据可以重复定义AwsCustomResource,或使用batchWriteItem接口批量写入
    new AwsCustomResource(this, 'SeedDefaultItem1', {
      onCreate: {
        service: 'DynamoDB',
        action: 'putItem',
        parameters: {
          TableName: demoTable.tableName,
          Item: {
            id: { S: 'item_001' },
            name: { S: '默认条目1' },
            count: { N: '10' }
          }
        },
        // 物理资源ID变更时会触发重新执行写入
        physicalResourceId: PhysicalResourceId.of(`seed-item-001-v1`)
      },
      // 自动授予DynamoDB表的写入权限
      policy: AwsCustomResourcePolicy.fromSdkCalls({
        resources: [demoTable.tableArn]
      })
    });
  }
}
  • 该方案的写入逻辑会随CDK部署自动执行,适合少于50条的基础配置数据写入场景。

方案2:表创建完成后运行辅助脚本(大数据量/敏感数据场景推荐)

如果需要写入的条目较多,或者数据包含敏感信息不想存入CDK状态文件,可以在DynamoDB表创建完成后通过独立脚本写入:

  1. 先在CDK栈中添加输出,导出创建完成的表名,方便后续脚本读取:
new CfnOutput(this, 'DemoTableName', {
  value: demoTable.tableName,
  exportName: 'DemoTableName'
});
  1. 部署CDK栈完成后,通过AWS CLI或者SDK执行写入操作,示例CLI批量写入命令:
aws dynamodb batch-write-item --request-items file://./seed-data.json

其中seed-data.json按照DynamoDB API要求的格式存放所有待写入的默认条目,单次请求最多支持写入25条数据,超出可以分多次调用。
3. 可以将部署和写入逻辑封装到同一执行流中,比如通过npm script按顺序执行cdk deploy --outputs-file cdk-outputs.json和读取输出执行写入的Node.js脚本,实现全流程自动化。


注意事项

  • 用AwsCustomResource写入的数据会记录到CloudFormation的事件日志中,敏感数据不要用该方式写入。
  • 如果需要每次部署都刷新默认数据,可以给AwsCustomResource增加和onCreate配置一致的onUpdate参数。

内容的提问来源于stack exchange,提问作者Djlynux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 22:45:03