Las pilas de CDK de AWS se dirigen a una cuenta o región en función de un entorno; detalles aquí . Este es un ejemplo de una aplicación que implementa una pila en varias cuentas de destino:
const envEU = { account: '2383838383', region: 'eu-west-1' }; const envUSA = { account: '8373873873', region: 'us-west-2' }; new MyFirstStack(app, 'first-stack-eu', { env: envEU }); new MyFirstStack(app, 'first-stack-us', { env: envUSA });Mi pregunta es cómo implementar estas 2 pilas: ¿es posible implementarlas como una sola operación? Si es así, ¿qué credenciales se usan y qué roles se requieren en las 2 cuentas?
Idealmente, me gustaría poder hacer un solo comando para implementar todas las pilas en todas las cuentas:
cdk deploy ...¿O la implementación solo es posible a través de 2 pasos?
cdk deploy first-stack-eu --profile=profile_for_account_2383838383 cdk deploy first-stack-us --profile=profile_for_account_8373873873En la formación en la nube, puede usar Stack Sets para implementaciones de varias cuentas y varias regiones.
Sin embargo, esto aún no es compatible con CDK según el problema de GitHub:
Terminé usando el complemento cdk-assume-role-credential-plugin para realizar la tarea. La descripción de ese complemento dice:
Este complemento permite que la CLI de CDK obtenga automáticamente las credenciales de AWS de la cuenta de AWS de destino de una pila. Esto significa que puede ejecutar un solo comando (es decir, cdk synth) con un conjunto de credenciales de AWS, y la CLI determinará la cuenta de AWS de destino para cada pila y obtendrá automáticamente credenciales temporales para la cuenta de AWS de destino al asumir un rol en la cuenta. .
Escribí un tutorial detallado sobre cómo usar este complemento para realizar implementaciones de cuentas cruzadas de AWS usando CDK aquí: https://johntipper.org/aws-cdk-cross-account-deployments-with-cdk-pipelines-and-cdk -asumir-rol-credencial-plugin/
Si tiene varias pilas en su aplicación, debe pasar cada pila al comando cdk deployment, por ejemplo cdk deploy WmStackRouteCertStack004BE231 WmStackUploadStackF8C20A98
No conozco una forma de implementar todas las pilas en una aplicación, no me gusta este comportamiento y es la razón por la que trato de evitar crear varias pilas.