Estoy trabajando en un entorno con canalizaciones basadas en Cloudformation existentes. Me pregunto si es posible describir mi infraestructura en CDK y luego generar la formación en la nube para usarla en la canalización sin cambios en las canalizaciones. Quiero que el hecho de que uso CDK sea completamente transparente.
En general, no recomendaría usar la salida del cdk synth a través de CloudFormation, excepto que sepa muy bien lo que está haciendo.
Esta es la razón: hay algunos casos extremos en los que el CDK realiza el arranque y la publicación de activos por adelantado, por ejemplo, para las llamadas fuentes de activos (imágenes acoplables, archivos s3, etc.).
El tema tiene cierta superposición con problemas en el repositorio de CDK en GitHub que preguntan sobre la integración de CI/CD. [1]
Se está trabajando para desarrollar un proceso de CI/CD totalmente automatizado para el CDK [2]. El llamado ensamblado en la nube [3] contiene todos los recursos que son necesarios para implementar a través de CloudFormation, pero como señala el RFC:
El ensamblaje de la nube incluye una plantilla de CloudFormation para cada pila y fuentes de activos (imágenes acoplables, archivos s3, etc.) que deben empaquetarse y publicarse en el almacén de activos en cada entorno que los consume.
Si no está usando ningún activo o tiene la opción de empaquetarlo e implementarlo antes de usar CloudFormation, debería ser posible usar la salida del sintetizador cdk en CloudFormation al proporcionar los parámetros CFN correctos (como otros ya han señalado en este hilo).
[1] https://github.com/aws/aws-cdk/issues/6894
[2] https://github.com/aws/aws-cdk-rfcs/blob/master/text/0049-continuous-delivery.md
[3] https://github.com/aws/aws-cdk/blob/master/packages/@aws-cdk/cloud-assembly-schema/README.md
Sí, es posible. Tengo un proceso que usa el CDK para 'construir' la plantilla de CloudFormation usando cdk synth . Luego, esta plantilla se carga en un depósito S3 en una ruta versionada.
Luego, puede implementar la plantilla de CloudFormation desde el depósito mediante la opción --template-url en create-stack .
https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html
La salida de cdk synth se puede almacenar en un json.
build_spec=BuildSpec.from_object({ "version": "0.2", "run-as": "root", "phases": { "install": { "commands": [ 'npm install -g aws-cdk', 'pip install -r requirements.txt', ] }, "build": { "commands": [ 'cdk synth stack-dev --verbose --debug=true -o > output.json' ] } }, "artifacts": { "files": "output.json" }, }) cdk_build_action = CodeBuildAction( action_name="CDKBuild", project=cdk_build, input=source_artifact, outputs=[cdk_build_output] ) Este json se puede reenviar a la etapa de implementación con CloudFormationCreateUpdateStackAction CloudFormationCreateUpdateStackAction(template_path=cdk_build_output.at_path("output.json"))