gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 04:46:24 27 4
gpt4 key购买 nike

如何在不使用 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/

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