amazon-web-services - 在 ECS 容器的 aws-cdk 中串联 AWS Secret

标签 amazon-web-services environment-variables aws-cloudformation aws-cdk aws-secrets-manager

如何在不使用 toString() 写出 secret 的情况下,通过 Credentials.fromGeneeratedSecret() 调用创建 postgres URI 连接字符串?

我想我在某处读到过制作一个 lambda 来做到这一点,但这似乎有点矫枉过正

  const dbCreds = Credentials.fromGeneratedSecret("postgres")
  const username = dbCreds.username
  const password = dbCreds.password
  const uri = `postgresql://${username}:${password}@somerdurl/mydb?schema=public`

我很确定我不能做到以上。但是我的 hasura 和 api ECS 容器需要像上面这样的连接字符串,所以我认为这可能是一个解决的问题?

最佳答案

如果您想要导入 key 管理器中已存在的 key ,您只需按名称或 ARN 查找 key 即可。查看引用 how to get a value from AWS Secrets Manager 的文档.

一旦您在代码中获得了 secret ,就可以轻松地将其作为环境变量传递给您的应用程序。借助 CDK,甚至可以将 Secrets Manager 或 AWS Systems Manager Param Store 中的 secret 直接传递到 CDK 构造上。一个这样的例子是(如文档中指出的):

taskDefinition.addContainer('container', {
  image: ecs.ContainerImage.fromRegistry("amazon/amazon-ecs-sample"),
  memoryLimitMiB: 1024,
  environment: { // clear text, not for sensitive data
    STAGE: 'prod',
  },
  environmentFiles: [ // list of environment files hosted either on local disk or S3
    ecs.EnvironmentFile.fromAsset('./demo-env-file.env'),
    ecs.EnvironmentFile.fromBucket(s3Bucket, 'assets/demo-env-file.env'),
  ],
  secrets: { // Retrieved from AWS Secrets Manager or AWS Systems Manager Parameter Store at container start-up.
    SECRET: ecs.Secret.fromSecretsManager(secret),
    DB_PASSWORD: ecs.Secret.fromSecretsManager(dbSecret, 'password'), // Reference a specific JSON field, (requires platform version 1.4.0 or later for Fargate tasks)
    PARAMETER: ecs.Secret.fromSsmParameter(parameter),
  }
});

总的来说,在这种情况下,您不必在 CDK 中对实际 secret 进行任何解析或打印。您可以使用正确设置的环境变量来处理应用程序中的所有处理。

但是,仅从您的问题来看并不清楚您到底想做什么。尽管如此,所提供的资源应该能让您朝着正确的方向前进。

关于amazon-web-services - 在 ECS 容器的 aws-cdk 中串联 AWS Secret,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68805472/

相关文章:

java - AWS 分区加载器

amazon-web-services - Amazon AWS NAT 网关不工作,EC2 未在 ECS 集群中注册

python - aws cli dynamodb(ValidationException)错误

perl - 将环境的语言环境强加在 Perl block 中

amazon-web-services - 我可以在 AWS CloudFormation 启动 URL 中设置参数吗?

node.js - 无服务器框架。从包中排除不需要的功能

oracle11g - Oracle 数据库安装错误 : environment path

node.js - 将 Heroku 环境变量与 angular-cli 一起使用,通过 Node 服务器部署

amazon-web-services - 如何在一个区域的 3 个不同可用区启动三个相同的 EC2 实例而不使用自动扩展

bash - 如何在启动数据库时从 cloudformation 模板创建 RDS 架构?