AWS CDK - 不能在构造 ID 中使用令牌 - 如何根据其他构造的名称动态命名构造?

Cla*_*ise 6 amazon-web-services typescript aws-cdk

我想为 cdk 中的多个 DynamoDB 表创建相同的 CW 警报/指标,我的直觉是尝试使用 for 循环将 DDB 表的名称附加到 CW 警报,但这样做会生成以下错误:不能在构造 ID 中使用令牌

这是有道理的,因为令牌还没有被评估,所以它只是一个占位符值。但是,按顺序命名警报有什么好的选择呢?

我的用例并不复杂,我可以重复相同的代码 X 次并每次调整名称,但这似乎是一种不正确的方法。

我正在使用波纹管代码作为灵感,但我看不到我可以调用哪些不会触发此错误的值。

https://aws.amazon.com/blogs/developer/aws-cdk-developer-preview/

jog*_*old 6

您应该使用表的idor uniqueId,例如:

for (const table of tables) {
  new cloudwatch.Alarm(this, `AlarmFor${table.node.id}`, ...); // or table.node.uniqueId
}
Run Code Online (Sandbox Code Playgroud)

但更好的模式可能是创建一个TableWithAlarm构造并在您的堆栈中多次实例化它。