【问题标题】:Ensure tagging using AWS CDK确保使用 AWS CDK 进行标记
【发布时间】:2021-11-06 19:09:31
【问题描述】:
我正在寻找一种使用 AWS CDK 编写单元测试的方法,以确保正确标记堆栈的所有资源。有没有办法为所有资源编写断言,例如:
expect(stack).toHaveAllResources({
Tags: [
{
Key: "ou",
Value: "ds",
},
],
});
【问题讨论】:
标签:
typescript
amazon-web-services
jestjs
amazon-cloudformation
aws-cdk
【解决方案1】:
aws-cdk/assert 包并不真正支持此用例。关于如何在 CDK 上进行此类合规性测试,我也遇到过类似的困难。我对 CDK slack 社区进行了快速讨论,基本上得出的结论是,目前最好的方法仍然是使用 cfn-guard 或 checkov 或类似工具来对 cfn 堆栈进行合规性测试(我相信有些支持标签检查)。
我希望你真的想用 jest(我完全可以理解),我认为 Aspects 是你最好的选择。编写一个方面(example and guide here 以“访问”堆栈中的所有节点并对它们进行一些测试。我没有完整的标签示例,但我希望它为您指明了正确的方向。
另请注意,并非所有资源都支持标记。因此,如果它按照您最初建议的方式检查所有资源的标签,那么您的测试大部分时间都会失败。一种方法是挑选一些您肯定想要标记的资源类型(角色、存储桶、堆栈本身等)。
编辑:对于那些对合规性测试感兴趣的人,我发现了这个新的 github 解决方案,它使用与上述使用 Aspects 描述的相同类型的实现:https://github.com/cdklabs/cdk-nag