如何在Amazon EventBridge中匹配布尔值false而非仅检查存在性?
在Amazon EventBridge中匹配布尔类型值
false的方法 要在EventBridge事件模式中匹配布尔值false(而非仅检查字段是否存在),你可以直接在模式中指定字段的目标值为false,无需使用exists操作符。EventBridge支持直接匹配布尔类型的原始值,写法和匹配字符串、数字的逻辑一致。
结合你提供的S3事件示例,布尔字段实际嵌套在requestParameters.PublicAccessBlockConfiguration层级下,以下是两种场景的事件模式写法:
场景1:匹配字段存在且值为false
如果仅需要匹配字段存在且值明确为false的情况,事件模式可以这样写:
{ "source": ["aws.s3"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["s3.amazonaws.com"], "eventName": ["PutBucketPublicAccessBlock", "DeleteBucketPublicAccessBlock"], "requestParameters": { "PublicAccessBlockConfiguration": { "$or": [ {"RestrictPublicBuckets": [false]}, {"BlockPublicPolicy": [false]}, {"BlockPublicAcls": [false]}, {"IgnorePublicAcls": [false]} ] } } } }
场景2:匹配字段不存在 或 字段存在且值为false
如果需要同时覆盖“字段不存在”和“字段存在但值为false”两种情况,可以在$or中同时包含两种条件:
{ "source": ["aws.s3"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["s3.amazonaws.com"], "eventName": ["PutBucketPublicAccessBlock", "DeleteBucketPublicAccessBlock"], "requestParameters": { "PublicAccessBlockConfiguration": { "$or": [ {"RestrictPublicBuckets": [false]}, {"RestrictPublicBuckets": [{"exists": false}]}, {"BlockPublicPolicy": [false]}, {"BlockPublicPolicy": [{"exists": false}]}, {"BlockPublicAcls": [false]}, {"BlockPublicAcls": [{"exists": false}]}, {"IgnorePublicAcls": [false]}, {"IgnorePublicAcls": [{"exists": false}]} ] } } } }
注意:你的原始事件模式遗漏了requestParameters.PublicAccessBlockConfiguration的层级,必须对应事件中的实际嵌套结构才能正确匹配。
内容的提问来源于stack exchange,提问作者Sri
相关产品推荐
相关产品推荐

