提问者:小点点

是否可以在 ECS 任务定义中获取特定版本的密钥管理器密钥?


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

按照文档,我创建了一个 ECS 任务定义,其中包括以下部分:

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

据我所知,当我的任务开始时,这:

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

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

我能做到吗?

我在谷歌上搜索过,但找不到其他人试图这么做。

我尝试将版本ID附加到value efrom参数,即。

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

但出现了一个错误:

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


共1个答案

匿名用户

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

语法:

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

为了获得机密的特定版本,您可以传递暂存标签或特定版本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"
    }]
  }]
}