【问题标题】:How to define and use at the same time a SSM parameter in CloudFormation?CloudFormation中如何同时定义和使用SSM参数?
【发布时间】:2019-08-12 16:41:02
【问题描述】:

这是一个 SAM 模板(与 CloudFormation 模板相同):

Globals:
    Function:
        Environment:
            Variables:
                BAR: '{{resolve:ssm:myparam:1}}'
...
    MyParam:
        Type: "AWS::SSM::Parameter"
        Properties:
            Name: myparam
            Type: String
            Value: 'REPLACE_ME' # must be defined manually in the AWS Console

我无法部署此堆栈,因为:

FAILED. Reason: Parameters: [ssm:myparam:1] cannot be found.

当然,我是在堆栈中创建这个参数……


如何引用我在同一模板中创建的 SSM 参数?

【问题讨论】:

  • 我认为对 SSM 参数使用相同的模板是没有意义的,因为您可以通过 !GetAtt 访问它们(见下文)。

标签: amazon-cloudformation ssm aws-ssm aws-parameter-store


【解决方案1】:

您是否尝试通过Fn::GetAtt (!GetAtt MyParam.Value) 访问变量?

Globals:
    Function:
        Environment:
            Variables:
                BAR: !GetAtt MyParam.Value
...
    MyParam:
        Type: "AWS::SSM::Parameter"
        Properties:
            Name: myparam
            Type: String
            Value: 'REPLACE_ME' # must be defined manually in the AWS Console

【讨论】:

  • 谢谢,问题是我想在参数中存储密钥(所以我不想在模板中写那个秘密)。所以我使用 CloudFormation 创建参数,但随后我必须在 AWS 控制台中手动定义值。所以我很想引用参数的值,而不是我放在模板中的初始值。
  • Matthieu,您也许可以使用 SSM 参数来执行此操作,但在我的工作中,我们正在使用 SecretsManager Secrets 执行类似的操作。我们将 !Ref YourSecretName 作为 CF 中的 Lambda 函数环境变量传递。创建函数时,Env 变量是一个 ARN 引用,然后可以在运行时解析。这对你的情况有用吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多