有没有办法在AWS CDK代码中自动从CW获取指标的所有维度?还有一个 cli 命令(aws cloudwatch list-metrics)和 SDK API(list-metrics)。我无法在 CDK 中找到等效的调用。
我的用例是,我在命名空间下有一个指标,它记录多个表的指标,并且表名作为维度传递给指标。我希望迭代所有维度,以便可以为维度中的所有表名称创建警报。此外,当添加新表时,我们不必更新代码中的任何内容。目前,我正在维护硬编码常量文件中的维度列表。
可以直接在 CDK 代码中添加 SDK 调用,例如
list-metrics
。 SDK 命令将在您的应用程序的每个合成器上调用*。然而,CDK 不建议这样做。它建议不要将 SDK 调用与您的 CDK 应用程序代码混合在一起:
如果您需要一些没有本机 CDK 上下文提供程序的值(来自 AWS 或其他地方),我们建议编写一个单独的脚本。该脚本应检索该值并将其写入文件,然后在 CDK 应用程序中读取该文件。仅当您想要刷新存储的值时运行脚本,而不是作为常规构建过程的一部分。
这种增加的复杂性的好处是,您可以将 SDK 响应置于源代码控制下并获得确定性部署:
您的应用程序不会发生带外更改,任何给定的提交始终会生成完全相同的 AWS CloudFormation 模板和随附资产。这使得单元测试更加可靠。
* CDK 有几个内置的 context 方法,如
Vpc.fromLookup
,它们进行初始 SDK 调用,然后从 cdk.context.json
读取缓存结果。