首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在SecretManager容器定义中指定来自CloudFormation的秘密

如何在SecretManager容器定义中指定来自CloudFormation的秘密
EN

Stack Overflow用户
提问于 2022-08-03 15:39:37
回答 1查看 395关注 0票数 0

嘿,伙计们,我有下面的CF配置,并希望从SecretManager中解析一个秘密。

代码语言:javascript
运行
复制
  DefinitionBackend:
    Type: AWS::ECS::TaskDefinition
    DependsOn: TaskPolicy
    Properties:
      ExecutionRoleArn: !GetAtt TaskRole.Arn
      NetworkMode: awsvpc
      RequiresCompatibilities:
        - FARGATE
      Cpu: 1024
      Memory: 5120
      ContainerDefinitions:
        - Name: admin
          Essential: true
          Image: !Sub XXXXXXXXXX.dkr.ecr.${AWS::REGION}.amazonaws.com/some-image:${AWS::StackName}-${ImageTag}
          PortMappings:
            - ContainerPort: 8003
          Command:
            - ....
          Secrets:
            - Name: DATABASE_URL
              ValueFrom: '{{resolve:secretsmanager:Dev:SecretString:DATABASE_URL}}'

秘密称为Dev,其中有几个KEY:VALUE对,比如DATABASE_URL,它是一个数据库连接字符串。我想使用上面的配置来解决来自SecretManager的秘密,但是我得到了一个错误:

Resource handler returned message: "Invalid request provided: Create TaskDefinition: The Systems Manager parameter name specified for secret DATABASE_URL is invalid. The parameter name can be up to 2048 characters and include the following letters and symbols: a-zA-Z0-9_.-,

数据库字符串采用以下格式,以前在环境变量中工作得很好:

"DATABASE_URL":"postgresql://web:PASSWORD@dev.234098234uuoi.eu-central-1.rds.amazonaws.com:5432/database"

你有什么想法吗?我是把它检索错了,还是只需要把它转换成一种不同的格式,比如Base64,才能把它和秘密一起使用呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-03 15:48:18

您正在尝试解析秘密的值,并将该值直接传递到任务定义中。这不是ECS容器机密的工作方式。它问您从哪里从获取值,而不是实际值是什么。你需要传递秘密的ARN,而不是秘密的价值。

我认为您需要将模板更改为:

代码语言:javascript
运行
复制
ValueFrom: !GetAtt Dev.Arn 

当容器启动时,ECS服务将在Secrets中查找秘密的值,并将其添加为当时的环境变量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73224083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档