【发布时间】:2021-02-20 01:30:49
【问题描述】:
我正在使用 CDK 在 AWS 上构建我们的基础设施。我为我的微服务创建了我的 IAM 用户,以便在定义的策略下与 AWS 服务通信。我的问题是我无法获取 aws 密钥和 id,然后将其作为 Env 变量传递给我的容器。见下文:
首先,我创建我的 IAM 用户,我的微服务将使用该用户。
const user = new User(this, "user", {
userName: `${myAppEnv}-api-iam-user`,
});
其次,我正在尝试创建访问密钥。
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,
});
接下来,我想将它作为环境变量传递。
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
你知道我怎么能做到这一点吗?
【问题讨论】:
标签: amazon-iam amazon-ecs aws-cdk