AWS-CDK-DynamoDB初始数据

ServerMonkey

使用AWS CDK进行无服务器项目,但我遇到了一个棘手的问题。我的项目部署了一个DynamoDB表,在执行Lambda函数之前,需要使用该表填充数据。

需要加载的数据是通过调用API生成的,而不是可以通过.json文件或简单的文件加载的静态数据。

关于如何满足生产工作负载这一要求的任何想法?

罗曼·基申科(Roman Kishchenko)

您可以使用AwsCustomResourcePutItem调用表。

AwsSdkCall initializeData = AwsSdkCall.builder()
        .service("DynamoDB")
        .action("putItem")
        .physicalResourceId(PhysicalResourceId.of(tableName + "_initialization"))
        .parameters(Map.ofEntries(
                Map.entry("TableName", tableName),
                Map.entry("Item", Map.ofEntries(
                        Map.entry("id", Map.of("S", "0")),
                        Map.entry("data", Map.of("S", data))
                )),
                Map.entry("ConditionExpression", "attribute_not_exists(id)")
        ))
        .build();

AwsCustomResource tableInitializationResource = AwsCustomResource.Builder.create(this, "TableInitializationResource")
        .policy(AwsCustomResourcePolicy.fromStatements(List.of(
                PolicyStatement.Builder.create()
                        .effect(Effect.ALLOW)
                        .actions(List.of("dynamodb:PutItem"))
                        .resources(List.of(table.getTableArn()))
                        .build()
        )))
        .onCreate(initializeData)
        .onUpdate(initializeData)
        .build();
tableInitializationResource.getNode().addDependency(table);

PutItem如果创建堆栈或table更新堆栈,则将触发操作tableName在这种情况下应该是不同的)。如果由于某种原因它不起作用,则可以将其设置physicalResourceId为随机值,即UUID,以在每次堆栈更新时触发操作(由于导致该操作是幂等的ConditionExpression

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法将现有CloudFormation模板的元数据(AWS :: CloudFormation :: Init)部分迁移到AWS CDK

来自分类Dev

AWS CDK与现有DynamoDB和流一起使用

来自分类Dev

在AWS CDK中请求验证

来自分类Dev

在AWS CDK中请求验证

来自分类Dev

AWS CDK:按CDK顺序运行外部构建命令?

来自分类Dev

AWS CDK:将数据库实例分配给集群

来自分类Dev

AWS CDK-停止生成策略

来自分类Dev

AWS-CDK和Powershell Lambda

来自分类Dev

使用AWS CDK配置Lambda Warmer

来自分类Dev

使用aws-cdk进行本地开发

来自分类Dev

AWS CDK Python(未找到凭证)

来自分类Dev

无法在AWS CDK中导入VPC

来自分类Dev

AWS CDK授予对堆栈外部资源的权限

来自分类Dev

调试TypeScript AWS CDK应用程序

来自分类Dev

通过cloudformation使用aws`cdk synth`输出

来自分类Dev

AWS CDK API网关构造库

来自分类Dev

AWS CDK-SecurityGroup创建打字稿

来自分类Dev

AWS CDK-角色和策略创建

来自分类Dev

现有项目的AWS CDK Init

来自分类Dev

AWS CDK新的合成器版本

来自分类Dev

限制AWS CDK中的AppSync权限

来自分类Dev

适用于AWS的无服务器框架:将初始数据添加到Dynamodb表中

来自分类Dev

由Lambda函数支持的AWS CDK自定义资源

来自分类Dev

如何在AWS CDK中指定源安全组ID?

来自分类Dev

如何在AWS CDK中导入现有的VPC?

来自分类Dev

如何在AWS CDK中创建侦听器规则?

来自分类Dev

AWS CDK如何在IAM策略中包含主体?

来自分类Dev

无法使用python在AWS CDK中写入策略文档

来自分类Dev

如何将AWS CDK打包到Lambda层中?