AWS CDK - 在为容器指定机密时是否可以访问 Secrets Manager 机密中的单个 (JSON) 值?
AWS CDK - Possible to access individual (JSON) value within a Secrets Manager secret when specifying secrets for a container?
我正在尝试在 AWS CDK 上构建一个相对简单的堆栈,其中涉及来自 aws-ecs-patterns
的 ApplicationLoadBalancedFargateService
。
我的问题涉及机密。我在 Secrets Manager 中有一个秘密,它有几个 key/values(我认为从技术上讲它存储为 JSON 文档,但 AWS 提供了一个 key/val 接口),我需要将它们传递给我容器单独。我目前在等效的非 cdk(在控制台中制作)堆栈中通过简单地指定密钥来执行此操作,如下所示:arn:aws:secretsmanager:us-west-2:[acct]:secret/name-??????:KEY::
,其中 `KEY 是密钥,并将正确的值插入到容器中一个环境变量。
当我尝试使用 CDK 执行此操作时,我在使用 cdk synth 时遇到错误:
`secretCompleteArn` does not appear to be complete; missing 6-character suffix
如果我删除最后一位 (:KEY::
),它会成功合成,但我的容器实际上并没有得到我想要的。
这就是我尝试在我的 cdk(打字稿)代码中使用它的方式:
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
},
},
});
有没有办法让它工作?还是我需要改变我 store/use 我的秘密的方式?
这是将特定密钥作为环境变量传递给容器的方式:
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'),
},
},
});
我正在尝试在 AWS CDK 上构建一个相对简单的堆栈,其中涉及来自 aws-ecs-patterns
的 ApplicationLoadBalancedFargateService
。
我的问题涉及机密。我在 Secrets Manager 中有一个秘密,它有几个 key/values(我认为从技术上讲它存储为 JSON 文档,但 AWS 提供了一个 key/val 接口),我需要将它们传递给我容器单独。我目前在等效的非 cdk(在控制台中制作)堆栈中通过简单地指定密钥来执行此操作,如下所示:arn:aws:secretsmanager:us-west-2:[acct]:secret/name-??????:KEY::
,其中 `KEY 是密钥,并将正确的值插入到容器中一个环境变量。
当我尝试使用 CDK 执行此操作时,我在使用 cdk synth 时遇到错误:
`secretCompleteArn` does not appear to be complete; missing 6-character suffix
如果我删除最后一位 (:KEY::
),它会成功合成,但我的容器实际上并没有得到我想要的。
这就是我尝试在我的 cdk(打字稿)代码中使用它的方式:
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
},
},
});
有没有办法让它工作?还是我需要改变我 store/use 我的秘密的方式?
这是将特定密钥作为环境变量传递给容器的方式:
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'),
},
},
});