0

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

  • 我有 CloudFormation
    • 生成密码并将其存储在具有特定名称的密钥下。该名称是根据 CloudFormation 的输入参数之一生成的
    • 使用 CloudFormation 创建的 IAM 角色存储参数
  • 之后运行的另一个 CloudFormation 堆栈
    • 使用相同的 IAM 角色检索参数并使用参数作为密码部署 RDS
    • CloudFormationssm-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 时捕获失败,然后增加版本直到成功

4

0 回答 0