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

AWS CDK - Cannot use tokens in construct ID - How do I dynamically name constructs based off the names of other constructs?

我想在 cdk 中为多个 DynamoDB table 创建相同的 CW alarm/metrics,我的直觉是尝试使用 for 循环来附加 DDB 的名称 table 到 CW 警报,但这样做会产生以下错误:无法在构造 ID

中使用标记

这是有道理的,因为令牌尚未被评估,所以它只是一个占位符值。但是,按顺序命名警报的一个好的替代方法是什么?

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

我正在使用下面的代码来获得灵感,但我看不到我可以调用哪些值不会触发此错误。

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

您应该使用 table 的 iduniqueId,例如:

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

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