J'utilise CDK pour construire notre infrastructure sur AWS. Je crée mon utilisateur IAM pour mes microservices afin qu'ils puissent communiquer avec les services AWS selon les politiques définies. Mon problème est que je n'arrive pas à obtenir la clé secrète et l'ID d'AWS et à les passer comme variable Env à mon conteneur. Voir ci-dessous :
Tout d'abord, je crée mon utilisateur IAM qui sera utilisé par mes microservices.
const user = new User(this, "user", {
userName: `${myAppEnv}-api-iam-user`,
});
Deuxièmement, j'essaie de créer une clé d'accès.
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,
});
Ensuite, je veux le passer comme une variable 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` }),
});
Lorsque le déploiement de mon CDK se termine avec succès, je vois l'impression suivante :/
Outputs:
staging-ecstack.AccessKeyId = SOMETHING
staging-ecstack.SecretAccessKeyId = SOMETHINGsy12X21xSSOMETHING2X2
Avez-vous une idée de la façon dont je peux y parvenir ?