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.
Personalización del arranque del AWS CDK
Puede personalizar el arranque del AWS Cloud Development Kit (AWS CDK) mediante la interfaz de línea de comandos del AWS CDK (AWS CDKCLI) o modificando e implementando la plantilla de arranque de AWS CloudFormation.
Para obtener una introducción al arranque, consulte Arranque de AWS CDK.
Temas
Utilice la CLI del CDK para personalizar el arranque
A continuación, se muestran algunos ejemplos de cómo puede personalizar el arranque mediante la CLI del CDK. Para obtener una lista de todas las opciones cdk bootstrap
, consulte cdk bootstrap.
- Anule el nombre del bucket de Amazon S3
-
Utilice la opción
--bootstrap-bucket-name
para anular el nombre del bucket de Amazon S3 predeterminado. Esto puede requerir que modifique la síntesis de plantillas. Para obtener más información, consulte Personalice la síntesis de pilas de CDK. - Modifique las claves de cifrado del lado del servidor del bucket de Amazon S3
-
De forma predeterminada, el bucket de Amazon S3 de la pila de arranque está configurado para usar claves administradas de AWS para el cifrado del lado del servidor. Para usar una clave administrada por el cliente existente, utilice la opción
--bootstrap-kms-key-id
y proporcione un valor para que la clave del AWS Key Management Service (AWS KMS) la utilice. Si desea tener un mayor control sobre la clave de cifrado, proporcione una--bootstrap-customer-key
para que utilice una clave administrada por el cliente. - Adjunte políticas administradas al rol de implementación que asuma AWS CloudFormation
-
De forma predeterminada, las pilas se implementan con todos los permisos de administrador mediante la política
AdministratorAccess
. Para usar sus propias políticas administradas, utilice la opción--cloudformation-execution-policies
y proporcione los ARN de las políticas administradas para asociarlos a la función de implementación.Para proporcionar varias políticas, páselas en una sola cadena, separadas por comas:
$
cdk bootstrap --cloudformation-execution-policies
"arn:aws:iam::aws:policy/AWSLambda_FullAccess,arn:aws:iam::aws:policy/AWSCodeDeployFullAccess"
Para evitar errores en la implementación, asegúrese de que las políticas que especifique sean suficientes para cualquier implementación que vaya a realizar en el entorno que se arranca.
- Cambie el calificador que se agrega a los nombres de los recursos de la pila de arranque
-
De forma predeterminada, el calificador
hnb659fds
se agrega al ID físico de los recursos de la pila de arranque. Para cambiar este valor, use la opción--qualifier
.Esta modificación resulta útil cuando se aprovisionan varias pilas de arranque en el mismo entorno para evitar conflictos de nombres.
El calificador se cambia para aislar los nombres entre las pruebas automatizadas del propio CDK. A menos que pueda reducir con mucha precisión los permisos de IAM otorgados a la función de ejecución de CloudFormation, tener dos pilas de arranque diferentes en una sola cuenta no brinda ninguna ventaja de aislamiento de permisos. Por lo tanto, no suele ser necesario cambiar este valor.
Cuando cambia el calificador, la aplicación CDK debe pasar el valor modificado al sintetizador de pilas. Para obtener más información, consulte Personalice la síntesis de pilas de CDK.
-
Utilice la opción
--tags
en el formato deKEY=VALUE
para agregar etiquetas de CloudFormation a su pila de arranque. - Especifique otras Cuentas de AWS que se puedan implementar en el entorno que se arranca
-
Utilice la opción
--trust
para proporcionar más Cuentas de AWS que tengan permiso para implementarse en el entorno que se arranca. De forma predeterminada, siempre se confiará en la cuenta que ejecuta el arranque.Esta opción resulta útil cuando se arranca un entorno en el que se implementará una Pipeline del CDK de otro entorno.
Cuando utilice esta opción, también debe proporcionar las
--cloudformation-execution-policies
.Para agregar cuentas de confianza a una pila de arranque existente, debe especificar todas las cuentas en las que puede confiar, incluidas las que haya proporcionado anteriormente. Si solo proporciona cuentas nuevas en las que confiar, se eliminarán las cuentas de confianza anteriores.
A continuación, se muestra un ejemplo de confianza de dos cuentas:
$
cdk bootstrap
⏳ Bootstrapping environment aws://123456789012/us-west-2... Trusted accounts for deployment: 234567890123, 987654321098 Trusted accounts for lookup: (none) Execution policies: arn:aws:iam::aws:policy/AdministratorAccess CDKToolkit: creating CloudFormation changeset... ✅ Environment aws://123456789012/us-west-2 bootstrapped.aws://123456789012/us-west-2
--trust234567890123
--trust987654321098
--cloudformation-execution-policiesarn:aws:iam::aws:policy/AdministratorAccess
- Especifique otras Cuentas de AWS que puedan buscar información en el entorno que se arranca
-
Utilice la opción
--trust-for-lookup
para especificar Cuentas de AWS que están autorizadas para buscar información contextual del entorno que se arranca. Esta opción resulta útil para dar permiso a las cuentas para sintetizar las pilas que se van a implementar en el entorno, sin concederles realmente permiso para implementar esas pilas directamente. - Habilite la protección de la terminación para la pila de arranque
-
Si se elimina una pila de arranque, también se eliminarán los recursos de AWS que se aprovisionaron originalmente en el entorno. Tras el arranque del entorno, recomendamos que no elimine ni vuelva a crear la pila de arranque del entorno, a menos que lo haga de forma intencionada. En su lugar, intente actualizar la pila de arranque a una nueva versión ejecutando de nuevo el comando
cdk bootstrap
.Utilice la opción
--termination-protection
para administrar la configuración de la protección de terminación de la pila de arranque. Es posible evitar que una pila de arranque y sus recursos se eliminen de manera accidental; para ello, habilite la protección de terminación. Esto es particularmente importante si utiliza Pipelines del CDK, ya que no hay ninguna opción de recuperación general en caso de que elimine accidentalmente la pila de arranque.Después de activar la protección de terminación, puede usar la AWS CLI o la consola de AWS CloudFormation para verificarlo.
Para habilitar la protección de terminación
-
Ejecute el siguiente comando para habilitar la protección de terminación en una pila de arranque nueva o existente:
$
cdk bootstrap --termination-protection
-
Utilice la AWS CLI o la consola de CloudFormation verificarlo. A continuación, se muestra un ejemplo mediante la AWS CLI. Si modificó el nombre de la pila de arranque, sustituya el
CDKToolkit
por el nombre de la pila:$
aws cloudformation describe-stacks --stack-name
" trueCDKToolkit
--query "Stacks[0].EnableTerminationProtection
-
Modificar la plantilla de arranque predeterminada
Cuando necesite una mayor personalización de la que la CLI del CDK pueda proporcionar, puede modificar la plantilla de arranque según sea necesario. A continuación, implemente la plantilla para arrancar su entorno.
Para modificar e implementar la plantilla de arranque predeterminada
-
Obtenga la plantilla de arranque predeterminada mediante la opción
--show-template
. De forma predeterminada, la CLI del CDK mostrará la plantilla en la ventana de su terminal. Puede modificar el comando de la CLI del CDK para guardar la plantilla en su máquina local. A continuación, se muestra un ejemplo:$
cdk bootstrap --show-template
> my-bootstrap-template.yaml
-
Modifique la plantilla de arranque según sea necesario. Todos los cambios que realice deben respetar la plantilla de contrato de arranque. Para obtener más información sobre la plantilla de contrato de arranque, consulte Respete el contrato de arranque.
Para asegurarse de que nadie que ejecute
cdk bootstrap
cuando utilice la plantilla predeterminada sobrescriba sus personalizaciones accidentalmente más adelante, cambie el valor predeterminado del parámetroBootstrapVariant
de la plantilla. La CLI del CDK solo permitirá sobrescribir la pila de arranque mediante plantillas que tengan la mismaBootstrapVariant
y una versión igual o superior a la de la plantilla implementada actualmente. -
Implemente la plantilla modificada mediante el método de implementación del AWS CloudFormation de su preferencia. A continuación, se muestra un ejemplo que utiliza la CLI del CDK:
$
cdk bootstrap --template
my-bootstrap-template.yaml
Respete el contrato de arranque
Para que las aplicaciones del CDK se implementen correctamente, las plantillas de CloudFormation generadas durante la síntesis deben especificar correctamente los recursos creados durante el arranque. Estos recursos se denominan comúnmente recursos de arranque. El arranque crea recursos en su entorno de AWS que el AWS CDK utiliza para llevar a cabo implementaciones y administrar los activos de las aplicaciones. La síntesis produce plantillas de CloudFormation a partir de cada pila de CDK de la aplicación. Estas plantillas no solo definen los recursos de AWS que se aprovisionarán a partir de la aplicación. También especifican los recursos de arranque que se van a utilizar durante la implementación.
Durante la síntesis, la CLI del CDK no sabe específicamente cómo se ha arrancó el entorno de AWS. En su lugar, la CLI del CDK produce plantillas de CloudFormation basadas en el sintetizador que configure. Por lo tanto, es posible que al momento de personalizar el arranque deba personalizar la síntesis. Para obtener instrucciones sobre cómo personalizar la síntesis, consulte Personalice la síntesis de pilas de CDK. El objetivo es garantizar que las plantillas sintetizadas de CloudFormation sean compatibles con el entorno de arranque. Esta compatibilidad se conoce como contrato de arranque.
El método más sencillo para personalizar la síntesis de pilas consiste en modificar la clase DefaultStackSynthesizer
de la instancia Stack
. Si necesita una personalización más allá de la que puede ofrecer esta clase, puede escribir su propio sintetizador como una clase que implemente el código IStackSynthesizer
(que quizás derive del DefaultStackSynthesizer
).
Cuando personalice el arranque, respete la plantilla del contrato de arranque para que siga siendo compatible con DefaultStackSynthesizer
. Si modifica el arranque más allá de la plantilla del contrato de arranque, deberá escribir su propio sintetizador.
Control de versiones
La plantilla de arranque debe contener un recurso para crear un parámetro de Amazon EC2 Systems Manager (SSM) con un nombre reconocido y un resultado que refleje la versión de la plantilla:
Resources: CdkBootstrapVersion: Type: AWS::SSM::Parameter Properties: Type: String Name: Fn::Sub: '/cdk-bootstrap/${Qualifier}/version' Value: 4 Outputs: BootstrapVersion: Value: Fn::GetAtt: [CdkBootstrapVersion, Value]
Roles
El DefaultStackSynthesizer
requiere cinco roles de IAM para cinco propósitos diferentes. Si no utiliza los roles predeterminados, debe especificar los ARN de su rol de IAM dentro del objeto DefaultStackSynthesizer
. Los roles son los siguientes:
-
Al rol de implementación lo asumen la CLI del CDK y AWS CodePipeline para la implementación en un entorno. Su
AssumeRolePolicy
controla quién puede llevar a cabo la implementación en el entorno. En la plantilla, puede ver los permisos que necesita este rol. -
Al rol de búsqueda lo asume la CLI del CDK para llevar a cabo búsquedas de contexto en un entorno. Su
AssumeRolePolicy
controla quién puede llevar a cabo la implementación en el entorno. Los permisos que necesita este rol se pueden ver en la plantilla. -
Al rol de publicación de archivos y al rol de publicación de imágenes lo asumen la CLI del CDK y los proyectos de AWS CodeBuild para publicar activos en un entorno. Se utilizan para escribir en el bucket de Amazon S3 y en el repositorio de Amazon ECR, respectivamente. Estos roles requieren acceso de escritura a estos recursos.
-
El rol de ejecución de AWS CloudFormation se transfiere a AWS CloudFormation para llevar a cabo implementación real. Sus permisos son aquellos con los que se ejecutará la implementación. Los permisos se transfieren a la pila como un parámetro que enumera los ARN de las políticas administradas.
Salidas
La CLI del CDK requiere que existan las siguientes salidas de CloudFormation en la pila de arranque:
-
BucketName
: el nombre del bucket del activo de archivo. -
BucketDomainName
: el bucket del activo de archivo en formato de nombre de dominio. -
BootstrapVersion
: la versión actual de la pila de arranque.
Historial de plantillas
La plantilla de arranque cuenta con control de versiones y evoluciona con el tiempo junto con el AWS CDK. Si proporciona su propia plantilla de arranque, manténgala actualizada mediante la plantilla canónica predeterminada. Querrá asegurarse de que su plantilla siga funcionando con todas las características del CDK. Para obtener más información, consulte Historial de versiones de la plantilla de arranque.