断言资源没有属性
Posted
技术标签:
【中文标题】断言资源没有属性【英文标题】:Assert resources do not have properties 【发布时间】:2022-01-17 02:44:59 【问题描述】:您好,我想知道是否有推荐的模式来断言某些资源在 CDK 中没有属性。例如,如果您正在定义 IAM 策略,并且希望在使用 CDK 中的 /assertions 包的测试中强制不定义通配符,那么“正确”的方法是什么?根据 Matcher.object 制作自己的匹配器,反之亦然?
示例 IAM 定义
// this would be fine
const secretsManagerReadAccess = new iam.PolicyStatement(
actions: ['SecretsManager:GetSecretValue'],
resources: ['arn:aws:secretsmanager:us-east-1:ACCOUNTID:secret:SECRET_NAME'],
);
// this should blow up in a test
const secretsManagerWildcardAccess = new iam.PolicyStatement(
actions: ['SecretsManager:*'],
resources: ['arn:aws:secretsmanager:us-east-1:ACCOUNTID:secret:*'],
);
// the worst possible, probably not written correctly but you get the idea
const everything = new iam.PolicyStatement(
actions: ['*:*'],
resources: ['arn:aws:*:us-east-1:ACCOUNTID:*:*'],
);
编辑:我想更好的表达方式是,您如何将 CDK 定义中的某些模式列入黑名单?
【问题讨论】:
【参考方案1】:你可以链接Matchers,你可以使用Captures来构造模式过滤器。
const actionCapture = new Capture();
template.hasResourceProperties(
"AWS::IAM::Role",
Match.not(Match.objectLike(
PolicyDocument:
Statement: [
Action: actionCapture,
,
],
,
))
);
expect(actionCapture.asString()).toEqual(expect.not.stringContaining("*"));
更多示例,请咨询Developer Guide。
【讨论】:
以上是关于断言资源没有属性的主要内容,如果未能解决你的问题,请参考以下文章
<URL> 处的跨站点资源设置为没有 `SameSite` 属性 .NET
资源 'data.template_file.user_data' 没有属性 'rendered'
docker上的Spring启动无法从资源中读取属性文件,但可以在没有Docker的情况下使用java -jar