gpt4 book ai didi

amazon-iam - AWS CDK - 如何将访问 key secret 和 secret key ID 作为环境参数传递给容器

转载 作者:行者123 更新时间:2023-12-04 14:10:35 25 4
gpt4 key购买 nike

我正在使用 CDK 在 AWS 上构建我们的基础设施。我为我的微服务创建了我的 IAM 用户,以便根据定义的策略与 AWS 服务对话。我的问题是我无法获得 aws key 和 id,然后将其作为 Env 变量传递给我的容器。见下文:
首先,我创建我的 IAM 用户,它将被我的微服务使用。

const user = new User(this, "user", {
userName: `${myAppEnv}-api-iam-user`,
});
其次,我正在尝试创建访问 key 。
const accessKey = new CfnAccessKey(this, "ApiUserAccessKey", {
userName: user.userName,
});

const accessKeyId = new CfnOutput(this, "AccessKeyId", {
value: accessKey.ref,
});

const accessKeySecret = new CfnOutput(this, "SecretAccessKeyId", {
value: accessKey.attrSecretAccessKey,
});
接下来,我想将它作为 env 变量传递。
const apiContainer = apiTaskDefinition.addContainer(containerId, {
image: apiImage,
environment: {
APP_ENV: myAppEnv,
AWS_ACCESS_KEY_ID: awsAccessKeyId.value || ":(",
AWS_SECRET_ACCESS_KEY: awsSecretAccessKey.value || ":(",
NOTIFICATIONS_TABLE_ARN: notificationsTableDynamoDBArn,
NOTIFICATIONS_QUEUE_URL: notificationsQueueUrl,
},
cpu: 256,
memoryLimitMiB: 512,
logging: new AwsLogDriver({ streamPrefix: `${myAppEnv}-ec-api` }),
});
当我的 CDK 部署成功完成时,我看到以下打印出来:/
Outputs:
staging-ecstack.AccessKeyId = SOMETHING
staging-ecstack.SecretAccessKeyId = SOMETHINGsy12X21xSSOMETHING2X2
你知道我怎么能做到这一点吗?

最佳答案

一般来说,创建 IAM 用户不是这里的方法 - 您最好使用 IAM 角色。使用 CDK 它将创建一个 taskRole当您实例化 taskDefinition 时自动为您服务构造。您可以使用各种 grant* 为堆栈中的其他构造分配权限。方法为 described here :

const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef');
const container = taskDefinition.addContainer('web', {
image: ecs.ContainerImage.fromRegistry("apps/myapp"),
memoryLimitMiB: 256,
});
// Grant this task role access to use other resources
myDynamodbTable.grantReadWriteData(taskDefinition.taskRole);
mySnsTopic.grantPublish(taskDefinition.taskRole);

关于amazon-iam - AWS CDK - 如何将访问 key secret 和 secret key ID 作为环境参数传递给容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64729459/

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