【问题标题】:Can I get a specific version of a Secrets Manager secret in an ECS task definition?我能否在 ECS 任务定义中获取特定版本的 Secrets Manager 密钥?
【发布时间】:2019-06-22 13:41:10
【问题描述】:

我使用 AWS Secrets Manager 存储了一个密钥。我正在尝试检索密钥作为 ECS 任务定义中的环境变量。

the docs 之后,我创建了一个 ECS 任务定义,其中包括以下部分:

"secrets": [
  {
    "name": "MY_PASSWORD",
    "valueFrom": "/aws/reference/secretsmanager/my_password"
  }
],

据我了解,当我的任务开始时,这是:

  1. 从 Secrets Manager 获取最新版本的秘密 my_password
  2. 在任务中解密
  3. 将其分配给环境变量MY_PASSWORD

我想在我的任务定义中加载密钥的特定版本,因此更改密钥意味着创建一个新的任务定义。

我可以这样做吗?


我在 Google 上搜索过,但找不到其他人尝试这样做。

我尝试将版本 ID 附加到 valueFrom 参数,即

"secrets": [
  {
    "name": "MY_PASSWORD",
    "valueFrom": "/aws/reference/secretsmanager/my_password:39231735-0279-4093-b8d1-7acd5a467295"
  }
],

但出现错误:

为密钥 es_username 指定的 Systems Manager 参数名称无效。参数名称最长为 2048 个字符,包括以下字母和符号:a-zA-Z0-9_.-,

【问题讨论】:

  • 嗨,我知道这已经很晚了,但你解决了这个问题吗?我无法克服这个错误,它一直对我以这种方式定义的秘密大喊大叫

标签: amazon-ecs aws-secrets-manager


【解决方案1】:

根据AWS Docs,我们应该通过 Secrets ARN 来完成这项工作。

语法:

{
    "containerDefinitions": [{
        "secrets": [{
            "name": "environment_variable_name",
            "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name"
        }]
    }]
}

为了获取secret的具体版本,可以传递staging label或者具体的版本ID。

使用暂存标签的示例:

{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name::AWSPREVIOUS:"
    }]
  }]
}

使用版本 ID 的示例:

{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name:::VersionID"
    }]
  }]
}

【讨论】:

    猜你喜欢
    • 2023-01-02
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 2020-01-09
    • 2021-09-18
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多