如何获取CloudFormation中Condition的评估值?输出引用报错求助
解决AWS CloudFormation中无法直接引用Condition评估结果的问题
错误原因
!Ref仅能引用CloudFormation的资源、参数或伪参数,而CreateBucket是Condition(条件),不属于上述可引用范畴。直接用!Ref CreateBucket会被解析为未定义的资源,导致模板验证报错。
解决方案
要获取Condition的评估结果,你可以在Outputs中直接复用Condition的逻辑表达式,让CloudFormation重新计算该条件的布尔值:
修改后的完整模板示例:
Parameters: BucketName: Default: '' Type: String Conditions: CreateBucket: !Not - !Equals - !Ref BucketName - 'skip' Resources: Bucket: Type: 'AWS::S3::Bucket' Condition: CreateBucket Outputs: CreateBucketResult: Description: "CreateBucket条件的评估结果" Value: !Not - !Equals - !Ref BucketName - 'skip' Export: Name: "CreateBucketResult"
验证与效果
修改后执行aws cloudformation validate-template --template-body file:"bucket.yml"即可通过验证。部署栈后,Outputs中的CreateBucketResult会返回布尔值(true或false),与CreateBucket条件的实际评估结果完全一致。
内容的提问来源于stack exchange,提问作者rfg
相关产品推荐
相关产品推荐

