首页 > 解决方案 > 获取 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());

标签: javaamazon-web-servicesaws-cdkamazon-dynamodb-streams

解决方案


当您的 Java 代码正在运行时,该值很可能不可用。

使用 CDK 有一个多步骤过程可以让您的代码执行:

  1. 您的 Java 代码被执行并触发底层 JSII 层
  2. JSII 执行 CDK 的底层 Javascript/Typescript 实现
  3. Typescript 层生成 CloudFormation 代码
  4. CloudFormation 代码(和其他资产)被发送到 AWS API
  5. CloudFormation 执行模板并供应资源

某些属性仅在步骤 5) 期间可用,在此之前仅包含最终放入 CloudFormation 模板的内部引用。如果我没记错的话,Table Stream ARN 就是其中之一。

这意味着如果您想要该值,则必须创建一个显示它们的 CloudFormation 输出,该输出将在部署期间填充。


推荐阅读