gpt4 book ai didi

amazon-web-services - AWS CloudFormation ContainerDefinitions Secrets 为每个变量分配完整的 SecretString

转载 作者:行者123 更新时间:2023-12-03 07:15:43 26 4
gpt4 key购买 nike

我想使用存储在 secret 管理器中的凭据填充环境变量,但实例化任务中的 ENV 变量没有预期值,而是分配了完整的 SecretString

定义看起来与文档中指定的一样:

...
Parameters:
...
SecretARN:
Type: String
Description: ARN of the secrets manager

MyTask:
Type: AWS::ECS::TaskDefinition
Properties:
...
ContainerDefinitions:
- Name: 'my-task'
...
Secrets:
- Name: PASSWORD
ValueFrom: !Ref SecretARN
- Name: USERNAME
ValueFrom: !Ref SecretARN
...

secret 的 SecretString 如下所示:

{
"PASSWORD": "v3r1s3cr3t",
"USERNAME": "johndoe"
}

在应用程序或任务中,当我执行 env 时,输出打印如下:

PASSWORD='{ "PASSWORD": "v3r1s3cr3t", "USERNAME": "johndoe" }'
USERNAME='{ "PASSWORD": "v3r1s3cr3t", "USERNAME": "johndoe" }'

最佳答案

是的,Secrets Manager key 由 3 个部分组成:

  • secret 的名称或标签,例如PROD_DB_CREDS
  • 一个或多个 secret key ,例如DB_USERNAME、DB_PASSWORD
  • 以及 key 的实际 secret 值

当您使用 ARN 访问 PROD_DB_CREDS 时,您将获得一个包含键和值的 JSON 对象:

{
"DB_USERNAME": 'my-username',
"DB_PASSWORD": 'my-password'
}

您可以使用解析器访问 secret 值,而不是将 ARN 粘贴到 CloudFormation 模板的参数部分(如这些文档中所示: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html#dynamic-references-secretsmanager )

然后,您可以使用以下方法解析 CloudFormation 模板中的上述 secret 值:

MyTask:
Type: AWS::ECS::TaskDefinition
Properties:
...
ContainerDefinitions:
- Name: 'my-task'
...
Secrets:
- Name: PASSWORD
ValueFrom: '{{resolve:secretsmanager:PROD_DB_CREDS:SecretString:DB_PASSWORD}}'
- Name: USERNAME
ValueFrom: '{{resolve:secretsmanager:PROD_DB_CREDS:SecretString:DB_USERNAME}}'
...

您的 CloudFormation 服务角色将需要正确的权限才能访问 key 。

关于amazon-web-services - AWS CloudFormation ContainerDefinitions Secrets 为每个变量分配完整的 SecretString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57213974/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com