java - 获取 DynamoDB Stream ARN 的 AWS CDK 返回 null
问题描述
是否可以使用 AWS CDK 获取 DynamoDB 表的流 ARN?
我尝试了以下方法,但是当我使用它访问 streamArn 时,getTableStreamArn
它返回 null。
ITable table = Table.fromTableArn(this, "existingTable", <<existingTableArn>>);
System.out.println("ITable Stream Arn : " + table.getTableStreamArn());
也尝试过使用fromTableAttribute
,但流 arn 仍然是空的。
ITable table =
Table.fromTableAttributes(
this, "existingTable", TableAttributes.builder().tableArn(<<existingTableArn>>).build());
解决方案
当您的 Java 代码正在运行时,该值很可能不可用。
使用 CDK 有一个多步骤过程可以让您的代码执行:
- 您的 Java 代码被执行并触发底层 JSII 层
- JSII 执行 CDK 的底层 Javascript/Typescript 实现
- Typescript 层生成 CloudFormation 代码
- CloudFormation 代码(和其他资产)被发送到 AWS API
- CloudFormation 执行模板并供应资源
某些属性仅在步骤 5) 期间可用,在此之前仅包含最终放入 CloudFormation 模板的内部引用。如果我没记错的话,Table Stream ARN 就是其中之一。
这意味着如果您想要该值,则必须创建一个显示它们的 CloudFormation 输出,该输出将在部署期间填充。