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

在AWS CDK中请求验证

来自分类Dev

AWS-CDK和Powershell Lambda

来自分类Dev

AWS CDK-停止生成策略

来自分类Dev

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

来自分类Dev

使用aws-cdk进行本地开发

来自分类Dev

无法在AWS CDK中导入VPC

来自分类Dev

使用AWS CDK配置Lambda Warmer

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

AWS CDK Python(未找到凭证)

来自分类Dev

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

来自分类Dev

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

来自分类Dev

AWS CDK引导程序堆栈的用途和范围?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

调试TypeScript AWS CDK应用程序

来自分类Dev

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

来自分类Dev

AWS CDK API网关构造库

来自分类Dev

AWS CDK-角色和策略创建

来自分类Dev

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

来自分类Dev

AWS CDK-SecurityGroup创建打字稿

来自分类Dev

现有项目的AWS CDK Init

来自分类Dev

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

来自分类Dev

AWS CDK新的合成器版本

来自分类Dev

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

来自分类Dev

限制AWS CDK中的AppSync权限

来自分类Dev

在AWS CDK中请求验证