gpt4 book ai didi

amazon-web-services - AWS CDK - 在为容器指定 secret 时是否可以访问 Secrets Manager secret 中的单个 (JSON) 值?

转载 作者:行者123 更新时间:2023-12-05 01:29:33 31 4
gpt4 key购买 nike

我正在尝试在 AWS CDK 上组合一个相对简单的堆栈,其中涉及来自 aws-ecs-patternsApplicationLoadBalancedFargateService

我的问题涉及 secret 。我在 Secrets Manager 中有一个 secret ,它有几个键/值(我认为从技术上讲它存储为 JSON 文档,但 AWS 提供了一个键/值接口(interface)),我需要将它们单独传递到我的容器。我目前通过简单地指定 key 在等效的非 cdk(在控制台中制作)堆栈中执行此操作,如下所示:arn:aws:secretsmanager:us-west-2:[acct]:secret/name-? ??????:KEY::,其中 `KEY 是 key ,正确的值作为环境变量插入到容器中。

当我尝试使用 CDK 执行此操作时,我在使用 cdk synth 时遇到错误:

`secretCompleteArn` does not appear to be complete; missing 6-character suffix

如果我删除最后一位 (:KEY::),它会成功合成,但我的容器实际上并没有得到我想要的。

这就是我尝试在我的 cdk( typescript )代码中使用它的方式:

new ApplicationLoadBalancedFargateService(this, 'Service', {
...
taskImageOptions: {
image: containerImage, // defined elsewhere
...
secrets: {
'DB_DATABASE': ecs.Secret.fromSecretsManager(
Secret.fromSecretCompleteArn(this, 'secret-DB_DATABASE',
'arn:aws:secretsmanager:us-west-2:[acct]:secret:secret/name-??????:KEY::')),

//there's really a few more, pulling keys from the same secret. Omitting for brevity
},
},
});

有没有办法让它工作?还是我需要改变我存储/使用我的 secret 的方式?

最佳答案

这是将特定 key 作为环境变量传递给容器的方式:

const mySecret = secretsmanager.Secret.fromSecretCompleteArn('<your arn>');

taskDefinition.addContainer('MyContainer', {
// ... other props ...
secrets: {
SECRET_KEY: ecs.Secret.fromSecretsManager(mySecret, 'specificKey'),
},
});

或使用 ApplicationLoadBalancedFargateService:

new ApplicationLoadBalancedFargateService(this, 'Service', {
...
taskImageOptions: {
image: containerImage, // defined elsewhere
...
secrets: {
'DB_DATABASE': ecs.Secret.fromSecretsManager(mySecret, 'specificKey'),
},
},
});

关于amazon-web-services - AWS CDK - 在为容器指定 secret 时是否可以访问 Secrets Manager secret 中的单个 (JSON) 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67715261/

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