Constructos de la capa 1
Los constructos de la capa 1 son los componentes básicos de AWS CDK y se distinguen de manera fácil de otros constructos por el prefijo Cfn. Por ejemplo, el paquete de Amazon DynamoDB en AWS CDK contiene un constructo Table, que es un constructo de la capa 2. El constructo correspondiente de la capa 1 se llama CfnTable y representa de manera directa un constructo Table de DynamoDB de CloudFormation Es imposible utilizar AWS CDK sin acceder a esta primera capa, aunque una aplicación de AWS CDK, en general, nunca utiliza un constructo de la capa 1 de manera directa. Sin embargo, en la mayoría de los casos, los constructos de la capa 2 y 3 a los que los desarrolladores están acostumbrados a utilizar dependen en gran medida de los constructos de la capa 1. Por lo tanto, puede pensar en los constructos de la capa 1 como el puente entre CloudFormation y AWS CDK.
La finalidad única de AWS CDK es generar plantillas de CloudFormation mediante el uso de lenguajes de codificación estándar. Tras ejecutar el comando de la CLI cdk synth y generar las plantillas de CloudFormation resultantes, el trabajo de AWS CDK estará completo. El comando cdk deploy está ahí solo por practicidad, pero lo que hace al ejecutar ese comando sucede de principio a fin en CloudFormation. La pieza del rompecabezas que traduce el código AWS CDK al formato que entiende CloudFormation es el constructo de la capa 1.
AWS CDK: el ciclo de vida de CloudFormation para los constructos de la capa 1
El proceso de creación y uso de los constructos de la capa 1 consta de los pasos siguientes:
-
El proceso de creación de AWS CDK convierte las especificaciones de CloudFormation en código programático en forma de constructos de la capa 1.
-
Los desarrolladores escriben código que hace referencia directa o indirectamente a los constructos de la capa 1 como parte de una aplicación. de AWS CDK.
-
Los desarrolladores ejecutan el comando cdk synth para convertir el código programático al formato dictado por las especificaciones (plantillas) de CloudFormation.
-
Los desarrolladores ejecutan el comando cdk deploy para implementar las pilas de CloudFormation que se incluyen en estas plantillas en los entornos de las cuentas de AWS.
Hagamos un ejercicio pequeño. Vaya al repositorio de código abierto de AWS CDKpackages, aws-cdk-lib, aws-<servicename>, lib). Para este ejemplo, vamos a utilizar Amazon S3, pero funciona para cualquier servicio. Si mira el archivo index.ts
export * from './s3.generated';
Sin embargo, no verá el archivo s3.generated en ningún lugar del directorio correspondiente. Esto se debe a que los constructos de la capa 1 se generan de manera automática a partir de la especificación de recursos de CloudFormation durante el proceso de creación de AWS CDK. Verá s3.generated en el paquete solo después de ejecutar el comando de creación de AWS CDK del paquete.
Especificación de recursos de AWS CloudFormation
La especificación del recurso AWS CloudFormation define la infraestructura como código (IaC) de AWS y determina cómo el código de las plantillas de CloudFormation se convierte en recursos en una cuenta de AWS. Esta especificación define los recursos de AWS en formato JSONprovider::service::resource. Por ejemplo, el nombre del tipo de recurso de un bucket de Amazon S3 sería AWS::S3::Bucket y el nombre del tipo de recurso de un punto de acceso de Amazon S3 sería AWS::S3::AccessPoint. Estos tipos de recursos se pueden representar en una plantilla de CloudFormation mediante la sintaxis definida en la especificación del recurso AWS CloudFormation. Cuando se ejecuta el proceso de compilación del AWS CDK, cada tipo de recurso también se convierte en un constructo de la capa 1.
En consecuencia, cada constructo de la capa 1 es una imagen reflejada programática de su recurso de CloudFormation correspondiente. Todas las propiedades que aplicaría en una plantilla de CloudFormation están disponibles al crear una instancia de un constructo de la capa 1, y todas las propiedades de CloudFormation necesarias también son necesarias como argumento al crear una instancia del constructo de la capa 1 correspondiente. En la siguiente tabla, se compara un bucket de S3 representado en una plantilla de CloudFormation con el mismo bucket de S3 definido como constructo de la capa 1 de AWS CDK.
Plantilla de CloudFormation |
Constructo de la capa 1 |
|---|---|
|
|
Como puede ver, el constructo de la capa 1 es el manifiesto exacto en el código del recurso de CloudFormation. No hay atajos ni simplificaciones, por lo que la cantidad de texto repetitivo que se debe escribir es casi la misma. Sin embargo, se supone que una de las grandes ventajas de usar AWS CDK es que ayuda a eliminar gran parte de esa sintaxis repetitiva de CloudFormation. ¿Y cómo sucede eso? Ahí es donde entra en juego el constructo de la capa 2.