Implemente AWS CDK aplicaciones - AWS Cloud Development Kit (AWS CDK) v2

Esta es la guía para AWS CDK desarrolladores de la versión 2. La CDK versión anterior entró en mantenimiento el 1 de junio de 2022 y finalizó el soporte el 1 de junio de 2023.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Implemente AWS CDK aplicaciones

Una AWS Cloud Development Kit (AWS CDK) implementación es el proceso de aprovisionamiento de la AWS infraestructura.

Cómo funcionan AWS CDK las implementaciones

AWS CDK Utiliza el AWS CloudFormation servicio para realizar despliegues. Antes de la implementación, se sintetizan las pilas. CDK Esto crea una CloudFormation plantilla y artefactos de despliegue para cada CDK pila de la aplicación. Las implementaciones se inician desde una máquina de desarrollo local o desde un entorno de integración y entrega continuas (CI/CD). Durante la implementación, los activos se cargan en los recursos iniciales y se envía la CloudFormation plantilla para CloudFormation aprovisionar los recursos. AWS

Para que una implementación se realice correctamente, se requiere lo siguiente:

  • La interfaz de línea de AWS CDK comandos (AWS CDK CLI) debe estar provista de permisos válidos.

  • El AWS entorno debe estar arrancado.

  • AWS CDK Debe conocer los recursos de arranque en los que cargar los activos.

Requisitos previos para las implementaciones CDK

Antes de poder implementar una AWS CDK aplicación, debe completar lo siguiente:

  • Configure las credenciales de seguridad para CDKCLI.

  • Inicie su AWS entorno.

  • Configure un AWS entorno para cada una de sus CDK pilas.

  • Desarrolla tu CDK aplicación.

Configure las credenciales de seguridad

Para utilizarlas con las CDK CLI que interactuar AWS, debe configurar las credenciales de seguridad en su máquina local. Para obtener instrucciones, consulte Configure las credenciales de seguridad para AWS CDKCLI.

Arranque su entorno AWS

Una implementación siempre está asociada a uno o más AWS entornos. Antes de poder realizar la implementación, primero se debe iniciar el entorno. Bootstrapping aprovisiona recursos en su entorno que CDK utiliza para realizar y administrar las implementaciones. Estos recursos incluyen un depósito de Amazon Simple Storage Service (Amazon S3) y un repositorio de Amazon Elastic Container Registry (ECRAmazon) para almacenar y gestionar activos. Estos recursos también incluyen las funciones AWS Identity and Access Management (IAM) que se utilizan para proporcionar permisos durante el desarrollo y la implementación.

Le recomendamos que utilice el AWS CDK comando Command Line Interface (AWS CDK CLI) cdk bootstrap para arrancar el entorno. Si es necesario, puede personalizar el arranque o crear estos recursos manualmente en su entorno. Para obtener instrucciones, consulte Inicie su entorno para usarlo con AWS CDK.

Configure los entornos AWS

Cada CDK pila debe estar asociada a un entorno para determinar dónde se implementa la pila. Para obtener instrucciones, consulte Configure los entornos para usarlos con el AWS CDK.

Desarrolle su CDK aplicación

Dentro de un CDK proyecto, usted crea y desarrolla su CDK aplicación. Dentro de tu aplicación, creas una o más CDK pilas. Dentro de tus pilas, importas y utilizas componentes fijos de la biblioteca AWS Construct para definir tu infraestructura. Antes de poder implementarla, CDK la aplicación debe contener al menos una pila.

CDKsíntesis de aplicaciones

Para realizar la síntesis, le recomendamos que utilice el CDK CLI cdk synth comando. El cdk deploy comando también realizará una síntesis antes de iniciar la implementación. Sin embargo, si lo usascdk synth, puedes validar tu CDK aplicación y detectar errores antes de iniciar la implementación.

El comportamiento de la síntesis lo determina el sintetizador de pila que configure para su pila. CDK Si no configuras un sintetizador, DefaultStackSynthesizer se usará. También puede configurar y personalizar la síntesis para adaptarla a sus necesidades. Para obtener instrucciones, consulte Configure y personalice la síntesis de CDK pilas.

Para que la CloudFormation plantilla sintetizada se implemente correctamente en su entorno, debe ser compatible con la forma en que se inició su entorno. Por ejemplo, la CloudFormation plantilla debe especificar el bucket de Amazon S3 correcto en el que implementar los activos. Si utiliza el método predeterminado para arrancar su entorno, el sintetizador de pilas predeterminado funcionará. Si personaliza CDK el comportamiento, como el arranque o la síntesis, el comportamiento de la implementación puede variar. CDK

El ciclo de vida de la aplicación

Al realizar la síntesis, la CDK aplicación pasa por las siguientes fases, conocidas como ciclo de vida de la aplicación:

Construcción (o inicialización)

El código crea una instancia de todas las construcciones definidas y, a continuación, las vincula entre sí. En esta etapa, se instancian todas las construcciones (app, stacks y sus construcciones secundarias) y se ejecuta la cadena de constructores. La mayor parte del código de la aplicación se ejecuta en esta etapa.

Preparación

Todas las construcciones que han implementado el prepare método participan en una ronda final de modificaciones para configurar su estado final. La fase de preparación se produce automáticamente. Como usuario, no ves ningún comentario sobre esta fase. Es poco frecuente que necesites usar el anzuelo de «preparar» y, por lo general, no se recomienda. Tenga mucho cuidado al mutar el árbol de construcción durante esta fase, ya que el orden de las operaciones podría afectar al comportamiento.

Durante esta fase, una vez que se haya creado el árbol de construcción, también se aplicarán todos los aspectos que haya configurado.

Validación

Todas las construcciones que han implementado el validate método pueden validarse por sí mismas para garantizar que se encuentren en un estado que permita su despliegue correcto. Se le notificará cualquier error de validación que se produzca durante esta fase. Por lo general, te recomendamos que realices la validación lo antes posible (normalmente tan pronto como recibas información) y que descartes las excepciones lo antes posible. Realizar la validación de forma temprana mejora la fiabilidad, ya que los seguimientos de las pilas son más precisos y garantiza que el código pueda seguir ejecutándose de forma segura.

Síntesis

Esta es la etapa final de la ejecución de CDK la aplicación. Se activa con una llamada aapp.synth(), recorre el árbol de construcciones e invoca el synthesize método en todas las construcciones. Las construcciones que se implementan synthesize pueden participar en la síntesis y producir artefactos de implementación para el ensamblaje de nube resultante. Estos artefactos incluyen CloudFormation plantillas, paquetes de AWS Lambda aplicaciones, activos de archivos e Docker imágenes y otros artefactos de implementación. En la mayoría de los casos, no necesitará implementar el synthesize método.

Ejecutando tu aplicación

La CDK CLI necesidad de saber cómo ejecutar tu CDK aplicación. Si creaste el proyecto a partir de una plantilla mediante el cdk init comando, el cdk.json archivo de tu aplicación incluye una app clave. Esta clave especifica el comando necesario para el idioma en el que está escrita la aplicación. Si su idioma requiere compilación, la línea de comandos realiza este paso antes de ejecutar la aplicación automáticamente.

TypeScript
{ "app": "npx ts-node --prefer-ts-exts bin/my-app.ts" }
JavaScript
{ "app": "node bin/my-app.js" }
Python
{ "app": "python app.py" }
Java
{ "app": "mvn -e -q compile exec:java" }
C#
{ "app": "dotnet run -p src/MyApp/MyApp.csproj" }
Go
{ "app": "go mod download && go run my-app.go" }

Si no creaste tu proyecto con la línea de comandos proporcionada CDKCLI, o si deseas anular la línea de comandos proporcionadacdk.json, puedes proporcionar la --app opción al ejecutar el cdk comando.

$ cdk --app 'executable' cdk-command ...

La executable parte del comando indica el comando que debe ejecutarse para ejecutar la CDK aplicación. Use comillas como se muestra, ya que estos comandos contienen espacios. La cdk-command es un subcomando similar synth o deploy que indica CDK CLI lo que quieres hacer con tu aplicación. Siga esto con cualquier opción adicional necesaria para ese subcomando.

También CDK CLI pueden interactuar directamente con un conjunto de nubes ya sintetizado. Para ello, pase el directorio en el que está almacenado el ensamblaje de la nube. --app En el siguiente ejemplo, se enumeran las pilas definidas en el ensamblaje de nube en el que se almacenan. ./my-cloud-assembly

$ cdk --app ./my-cloud-assembly ls

Conjuntos en la nube

La llamada a app.synth() es lo que indica que hay que AWS CDK sintetizar un ensamblaje en la nube a partir de una aplicación. Por lo general, no se interactúa directamente con los ensamblajes en la nube. Son archivos que incluyen todo lo necesario para implementar la aplicación en un entorno de nube. Por ejemplo, incluye una AWS CloudFormation plantilla para cada pila de la aplicación. También incluye una copia de cualquier archivo, activo o Docker imagen a los que hagas referencia en tu aplicación.

Consulte la especificación del ensamblaje en la nube para obtener detalles sobre el formato de los ensamblajes en la nube.

Para interactuar con el ensamblaje de nubes que crea tu AWS CDK aplicación, normalmente usas el AWS CDK CLI. Sin embargo, cualquier herramienta que pueda leer el formato de ensamblaje en la nube se puede usar para implementar su aplicación.

Implementar la aplicación

Para implementar la aplicación, le recomendamos que utilice el CDK CLI cdk deploy comando para iniciar las implementaciones o configurar las implementaciones automatizadas.

Cuando se ejecutacdk deploy, se CDK CLI inicia cdk synth para prepararse para la implementación. El siguiente diagrama ilustra el ciclo de vida de la aplicación en el contexto de una implementación:

Diagrama de flujo del ciclo de vida de la AWS CDK aplicación.

Durante la implementación, CDK CLI toma el ensamblaje de nube producido por la síntesis y lo despliega en un AWS entorno. Los activos se cargan en Amazon S3 y Amazon, ECR y la CloudFormation plantilla se envía a Amazon AWS CloudFormation para su implementación.

Cuando comience la fase de AWS CloudFormation implementación, la CDK aplicación ya habrá terminado de ejecutarse y se habrá cerrado. Esto tiene las siguientes implicaciones:

  • La CDK aplicación no puede responder a los eventos que se producen durante la implementación, como la creación de un recurso o la finalización de toda la implementación. Para ejecutar el código durante la fase de despliegue, debes inyectarlo en la AWS CloudFormation plantilla como un recurso personalizado. Para obtener más información sobre cómo agregar un recurso personalizado a tu aplicación, consulta el AWS CloudFormation módulo o el ejemplo del recurso personalizado. También puedes configurar el módulo Triggers para que ejecute código durante las implementaciones.

  • Es posible que la CDK aplicación tenga que funcionar con valores que no se pueden conocer en el momento en que se ejecuta. Por ejemplo, si la AWS CDK aplicación define un bucket de Amazon S3 con un nombre generado automáticamente y usted recupera el atributo bucket.bucketName (Python:bucket_name), ese valor no es el nombre del bucket implementado. En su lugar, se obtiene un Token valor. Para determinar si un valor concreto está disponible, llama a cdk.isUnresolved(value) (Python:is_unresolved). Para obtener más información, consulte Los tokens y el AWS CDK.

Permisos de despliegue

Antes de poder realizar el despliegue, se deben establecer los permisos. El siguiente diagrama ilustra los permisos que se utilizan durante una implementación predeterminada, cuando se utiliza el proceso de arranque y el sintetizador de pilas predeterminados:

Diagrama de flujo del proceso de despliegue predeterminado. AWS CDK
El actor inicia el despliegue

Los despliegues son iniciados por un actor, utilizando el. CDK CLI Un actor puede ser una persona o un servicio como AWS CodePipeline.

Si es necesario, se CDK CLI ejecuta cdk synth cuando tú correscdk deploy. Durante la síntesis, la AWS identidad asume LookupRole que debe realizar búsquedas de contexto en el AWS entorno.

Los permisos están establecidos

En primer lugar, las credenciales de seguridad del actor se utilizan para autenticarse AWS y obtener la primera IAM identidad del proceso. En el caso de los actores humanos, la forma en que se configuran y obtienen las credenciales de seguridad depende de la forma en que usted o su organización administren los usuarios. Para obtener más información, consulte Configure las credenciales de seguridad para AWS CDKCLI. En el caso de los actores de servicio CodePipeline, por ejemplo, se asume y utiliza una función de IAM ejecución.

A continuación, las IAM funciones creadas en el AWS entorno durante el arranque se utilizan para establecer los permisos necesarios para realizar las acciones necesarias para la implementación. Para obtener más información sobre estas funciones y para qué conceden permisos, consulte. IAMroles creados durante el arranque Este proceso incluye lo siguiente:

  • La AWS identidad asume la DeploymentActionRole función y se la CloudFormationExecutionRole transfiere CloudFormation, lo que garantiza que CloudFormation asuma la función cuando realiza cualquier acción en su AWS entorno. DeploymentActionRoleotorga permiso para realizar despliegues en su entorno y CloudFormationExecutionRole determina qué acciones CloudFormation se pueden realizar.

  • La AWS identidad asume queFilePublishingRole, lo que determina las acciones que se pueden realizar en el bucket de Amazon S3 creado durante el arranque.

  • La AWS identidad asume laImagePublishingRole, lo que determina las acciones que se pueden realizar en el ECR repositorio de Amazon creado durante el arranque.

  • Si es necesario, la AWS identidad asume que debe LookupRole realizar búsquedas de contexto en el entorno. AWS Esta acción también se puede realizar durante la síntesis de plantillas.

Se lleva a cabo el despliegue

Durante el despliegue, CDK CLI lee el parámetro de versión de arranque para confirmar el número de versión de arranque. AWS CloudFormation también lee este parámetro en el momento del despliegue para confirmarlo. Si los permisos en todo el flujo de trabajo de despliegue son válidos, se realiza el despliegue. Los activos se cargan en los recursos iniciales y la CloudFormation plantilla creada en la síntesis se implementa utilizando el CloudFormation servicio como una CloudFormation pila para aprovisionar los recursos.