Amazon cloudformation Fn::基于云形成参数环境的If条件

Amazon cloudformation Fn::基于云形成参数环境的If条件,amazon-cloudformation,Amazon Cloudformation,基于环境,我正在尝试设置变量的URL:如果prod,则我的URL应该是: 以下是我的情况: Conditions: IsEnvProd: Fn::Equals [ !Ref Env, 'prod' ] IsEnvStage: Fn::Equals [ !Ref Env, 'stage' ] 以下是对其进行评估的地方: Environment: - Name: NODE_ENV Value: !Ref NodeEnv

基于环境,我正在尝试设置变量的URL:如果prod,则我的URL应该是:

以下是我的情况:

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

如果没有完整的模板,很难尝试重新创建该问题,但是在这里,您的代码片段被重构,并删除了一个可能的错误

调整条件以使用所有速记

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}"

如果没有完整的模板,很难尝试重新创建该问题,但是在这里,您的代码片段被重构,并删除了一个可能的错误

调整条件以使用所有速记

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}"

通常,定义的条件用作aws资源的属性,您可以将条件的名称指定为值。你可以试试——它是一个在线云信息模板生成器。这会消耗大量此类可怕的工作。

通常,定义的条件用作aws资源的属性,您可以将条件的名称指定为值。你可以试试——它是一个在线云信息模板生成器。它带走了许多这样可怕的工作