基于环境,我正在尝试为变量设置URL:暂存我的URL应该是https://staging.DNHostedZoneName,如果prod-它应该只是https://DNSHostedZoneName:
这是我的病情:
Conditions:
IsEnvProd: Fn::Equals [ !Ref Env, 'prod' ]
IsEnvStage: Fn::Equals [ !Ref Env, 'stage' ]
在这里对其进行评估:
Environment:
- Name: NODE_ENV
Value: !Ref NodeEnv
- Fn::If:
- IsEnvStage
- Name: CORE_URL
Value:
Fn::Join:
- ""
- - "https://"
- "staging"
- "."
- !Ref DnsHostedZoneName
- Name: NCVCORE_URL
Value:
Fn::Join:
- ""
- - "https://"
- !Ref DnsHostedZoneName
我遇到以下错误:
Template format error: Conditions can only be boolean operations on parameters and other conditions
答案 0 :(得分:0)
没有完整的模板,很难尝试重新创建问题,但是在这里重构了您的代码片段,并删除了可能的错误。
调整条件以使用所有速记。
Conditions:
IsEnvProd: !Equals [!Ref "Env", "prod"]
IsEnvStage: !Equals [!Ref "Env", "stage"]
YAML中有一个额外的空间,因此已将其删除并重新格式化。
Environment:
- Name: "NODE_ENV"
Value: !Ref "NodeEnv"
- !If
- "IsEnvStage"
- Name: "CORE_URL"
Value: !Sub "https://staging.${DnsHostedZoneName}"
- Name: "NCVCORE_URL"
Value: !Sub "https://${DnsHostedZoneName}"
答案 1 :(得分:0)
通常,定义的条件用作aws资源的属性,您可以将条件的名称指定为值。您可以尝试https://krunal4amity.github.io-这是一个在线cloudformation模板生成器。它带走了很多如此可怕的工作。