如何在 CloudFormation 模板条件语句中使用 AWS SSM 参数存储的值?

7

我在AWS SSM参数存储UI中配置了一个键值对,键是my-ssm-key,值是ssm-value

我有以下用于基于Serverless构建的CloudFormation的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-valuessm_value_is_correct = no

条件语句为什么会解析为“no”而不是“yes”?使用 SSM 参数存储值的正确方法是什么?

参数存储截图:SSM param store screenshot 环境变量截图:Env variables screenshot


为什么不将 SSM_KEY_IS_CORRECT 也设置为环境变量,这样您就可以看到它是如何解决的了? - Arun Kamalanathan
1
@ArunK 我尝试过使用 foo: SSM_KEY_IS_CORRECT,但在这种情况下,SSM_KEY_IS_CORRECT 只被视为字符串而不是变量。因此环境变量只是 "SSM_KEY_IS_CORRECT" - rohithpr
1个回答

1

我通过使用这个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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接