web-dev-qa-db-ja.com

Cloudformationテンプレート条件でAWS SSMパラメータストア値を使用する方法

AWS SSMパラメータストアUIでキーと値のペアをmy-ssm-key = ssm-valueとして構成しました。

サーバーレスで構築されたCF用の次のYAMLテンプレートがあります。

service: redirect-test

provider:
  name: aws
  runtime: python3.8

  environment:
    ssm_value: '{{resolve:ssm:my-ssm-key:1}}'
    ssm_value_is_correct: !If [SSM_KEY_IS_CORRECT, yes, no]

functions:
  hello:
    handler: handler.hello

resources:
  Conditions:
    SSM_KEY_IS_CORRECT:
      !Equals
        - '{{resolve:ssm:my-ssm-key:1}}'
        - 'ssm-value'

スタックをデプロイすると、環境変数がssm_value = ssm-valueおよびssm_value_is_correct = noに設定されます。

条件文が「はい」ではなく「いいえ」に解決されるのはなぜですか?条件文でSSMパラメータストア値を使用する正しい方法は何ですか?

パラメータストアのスクリーンショット: SSM param store screenshot 環境変数のスクリーンショット: Env variables screenshot

7
rohithpr

このCFテンプレートを使用して問題を解決できました。

service: redirect-test

provider:
  name: aws
  runtime: python3.8

  environment:
    ssm_value: !Ref MySSMValue
    ssm_value_is_correct: !If [SSM_KEY_IS_CORRECT, yes, no]

functions:
  hello:
    handler: handler.hello

resources:
  Conditions:
    SSM_KEY_IS_CORRECT:
      !Equals
        - !Ref MySSMValue
        - ssm-value

  Parameters:
    MySSMValue:
      Description: My SSM Value
      Type: AWS::SSM::Parameter::Value<String>
      Default: my-ssm-key

Environment variables with correct expected values

1
rohithpr