SSM 参数存储 - 如何动态选择我需要访问的参数版本



我正在使用SSM安全参数存储来存储RDS数据库的密码。

  • 我有云形成
    • 生成密码并将其存储在具有特定名称的密钥下。 该名称是根据云形成的输入参数之一生成的
    • 该参数使用由 CloudFormation 创建的 IAM 角色进行存储
  • 另一个在之后运行的 CloudFormation 堆栈
    • 使用相同的 IAM 角色检索参数并使用参数作为密码部署 RDS
    • CloudFormation使用这样的ssm-secure:
"MasterUserPassword": {
"Fn::Sub": "{{resolve:ssm-secure:${WorkshopName}:1}}"
},

请注意"1"。 SSM 安全字符串参数文档非常明确:一个整数,用于指定要使用的参数版本。您必须指定确切的版本。您当前无法指定 AWS CloudFormation 使用最新版本的参数

这就是无赖

  • 使用最新版本正是我想做的
  • 在某些情况下,我最终可能会在版本 1 插槽中使用旧密钥。 然后一切都失败,因为第一个 CFN 堆栈创建 v2,下一个堆栈尝试检索 v1 并失败(它是在不同的 IAM 角色下创建的,并失败并显示The ciphertext refers to a customer master key that does not exist, does not exist in this region, or you are not allowed to access.(

关于我如何实现更具弹性的逻辑的任何编程建议

  • 始终获取最新版本,或
  • 在尝试获取 v1 时捕获失败,然后递增版本,直到成功

看起来这里的行为已更改:

版本

一个整数,指定要使用的参数的版本。 如果您没有指定确切的版本,CloudFormation 将使用最新的 创建或更新堆栈时参数的版本。为 有关更多信息,请参阅在 AWS 中使用参数版本 系统管理器用户指南

自选。

所以现在它可以访问最新版本

最新更新