我可以在ECS任务定义中获得Secrets Manager机密的特定版本吗



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

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

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

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

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

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

我能做到吗?


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

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

"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_.-,

根据AWS文档,我们应该传递机密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"
}]
}]
}

最新更新