Amazon web services 云形成条件惰性评价
是否有可能避免根据另一个条件评估云形成条件?例如 我有一个AWS CloudFormation模板,带有参数Amazon web services 云形成条件惰性评价,amazon-web-services,yaml,amazon-cloudformation,Amazon Web Services,Yaml,Amazon Cloudformation,是否有可能避免根据另一个条件评估云形成条件?例如 我有一个AWS CloudFormation模板,带有参数EventSourceArn: Parameters: EventSourceArn: Type: String Default: "" …并且,使用此参数,我想定义创建某些资源的条件: Conditions: IsSqs: !Equals - !Select [2, !Split [':', !Ref EventSourceArn]] - "sq
EventSourceArn
:
Parameters:
EventSourceArn:
Type: String
Default: ""
…并且,使用此参数,我想定义创建某些资源的条件:
Conditions:
IsSqs: !Equals
- !Select [2, !Split [':', !Ref EventSourceArn]]
- "sqs"
IsDynamo: !Equals
- !Select [2, !Split [':', !Ref EventSourceArn]]
- "dynamodb"
# snip
Resources:
EventSourceMappingForSqs:
Type: AWS::Lambda::EventSourceMapping
Condition: IsSqs
# snip
EventSourceMappingForDynamo:
Type: AWS::Lambda::EventSourceMapping
Condition: IsDynamo
# snip
如果未传入EventSourceArn
,且其值最终为默认空字符串,则此模板将生成堆栈错误:template error:Fn::Select无法选择索引2处不存在的值
。根据……这是预期的,但是,有没有办法避免运行!完全选择
,然后让IsSqs
和IsDynamo
正确计算为false
我尝试在之前添加一个额外的条件!选择
,但仍会运行:
# DOES NOT WORK:
Conditions:
HasEventSource: !Not [!Equals [!Ref EventSourceArn, "" ]]
IsSqs: !And [Condition: HasEventSource, !Equals [!Select [2, !Split [':', !Ref EventSourceArn]], "sqs"]]
工作原理是将
EventSourceArn
值默认为:“
,但这对我来说似乎很难看,如果有一种不那么难看的方法,我想避免它。我认为这是不可能的。条件相当有限。您可能可以根据数据进行更改条件的转换。参数的默认值是多少!选择“永不失败”?