我正在使用CDK在AWS中建立一个Fargate服务
const albFargateService = new ecs_patterns.ApplicationLoadBalancedFargateService(
this,
'FargateService',
{
vpc: ...,
taskImageOptions: {
image: ...,
containerPort: ...,
secrets: {
MY_ENV_VAR: Secret.fromSecretsManager(
**ISecret**,
'fieldWithinTheSecret'
),
}
}
}
)考虑到秘密的名称,我应该如何获得ISecret实例?
我看过AWS中的AWS.SecretsManager,但它只返回字符串。
发布于 2020-08-27 18:11:19
目前还没有Secret.fromSecretName-method。假设您使用的是现有的秘密,则应该使用Secret.fromSecretArn-method。
注意,如果使用KMS键,则应该使用Secret.fromSecretAttributes-method,如从AWS机密管理器中获取值中所述。
import * as ecs from "@aws-cdk/aws-ecs";
import * as ecs_patterns from "@aws-cdk/aws-ecs-patterns";
import * as secretsmanager from "@aws-cdk/aws-secretsmanager";
const mySecret = secretsmanager.Secret.fromSecretArn(this, "mySecret", "arn:aws:secretsmanager:<region>:<account-id-number>:secret:<secret-name>-<random-6-characters>");
const albFargateService = new ecs_patterns.ApplicationLoadBalancedFargateService(
this,
'FargateService',
{
vpc: ...,
taskImageOptions: {
image: ...,
containerPort: ...,
secrets: {
MY_ENV_VAR: ecs.Secret.fromSecretsManager(mySecret),
}
}
}
);发布于 2022-05-06 06:31:55
使用CDK 2更新的密钥,您可以使用Secret.fromSecretNameV2()引用一个秘密,并使用Secret.secretValueFromJson('keyname').toString();检索一个特定的秘密值--参见下面的代码片段
const appSecret = Secret.fromSecretNameV2(this,'app-secret',"secret-name");
const value1 = appSecret.secretValueFromJson('KeyName1').toString();
const value2 = appSecret.secretValueFromJson('KeyName2').toString();最好的做法是,您可以在任何地方使用这个秘密值,比如科涅托秘密,它不会硬编码云形成堆栈中的秘密值。相反,它将使用令牌,并在部署时将其解析为值。
https://stackoverflow.com/questions/63617381
复制相似问题