cdk deploy - 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.

cdk deploy

Implemente una o más AWS CDK pilas en su entorno. AWS

Durante la implementación, la CDK CLI generará indicadores de progreso, similares a los que se pueden observar desde la AWS CloudFormation consola.

Si el AWS entorno no está en fase de arranque, solo se desplegarán correctamente las pilas sin activos y con plantillas sintetizadas de menos de 51.200 bytes.

Uso

$ cdk deploy <arguments> <options>

Argumentos

ID lógico de la pila de CDK

El ID lógico de la pila de CDK de la aplicación que se va a implementar.

Tipo: cadena

Obligatorio: no

Opciones

Para obtener una lista de las opciones globales que funcionan con todos los CLI comandos del CDK, consulte. Opciones globales

--all BOOLEAN

Implemente todas las pilas en su aplicación CDK.

Valor predeterminado: false

--asset-parallelism BOOLEAN

Especifique si desea crear y publicar activos en paralelo.

--asset-prebuild BOOLEAN

Especifique si desea crear todos los activos antes de implementar la primera pila. Esta opción es útil para Docker compilaciones fallidas.

Valor predeterminado: true

--build-exclude, -E ARRAY

No reconstruya el activo con el ID indicado.

Esta opción se puede especificar varias veces en un solo comando.

Valor predeterminado: []

--change-set-name STRING

El nombre del conjunto de AWS CloudFormation cambios que se va a crear.

Esta opción no es compatible con --method='direct'.

--concurrency NUMBER

Implemente múltiples pilas en paralelo y, al mismo tiempo, tenga en cuenta las dependencias entre pilas. Utilice esta opción para acelerar las implementaciones. Aun así, debe tener en cuenta AWS CloudFormation otros límites Cuenta de AWS de velocidad.

Proporcione un número para especificar el número máximo de despliegues simultáneos (si la dependencia lo permite) que se deben realizar.

Valor predeterminado: 1

--exclusively, -e BOOLEAN

Implemente únicamente las pilas solicitadas y no incluya las dependencias.

--force, -f BOOLEAN

Cuando despliegues para actualizar una pila existente, la CDK CLI comparará la plantilla y las etiquetas de la pila implementada con las de la pila que se va a implementar. Si no se detecta ningún cambio, la CDK CLI omitirá la implementación.

Para anular este comportamiento y desplegar siempre las pilas, incluso si no se detectan cambios, utilice esta opción.

Valor predeterminado: false

--help, -h BOOLEAN

Muestra la información de referencia del cdk deploy comando.

--hotswap BOOLEAN

Implementaciones de Hotswap para un desarrollo más rápido. Esta opción intenta realizar un despliegue de hotswap más rápido si es posible. Por ejemplo, si modificas el código de una función Lambda en tu aplicación de CDK, la CDK CLI actualizará el recurso directamente a través de las API de servicio en lugar de realizar una implementación. CloudFormation

Si la CDK CLI detecta cambios que no admiten el intercambio en caliente, dichos cambios se ignorarán y aparecerá un mensaje. Si prefieres realizar un CloudFormation despliegue completo como alternativa, úsalo en su lugar. --hotswap-fallback

El CDK CLI usa tus AWS credenciales actuales para realizar las llamadas a la API. No asume las funciones de tu pila de bootstrap, incluso si el indicador de @aws-cdk/core:newStyleStackSynthesis función está establecido en. true Esas funciones no tienen los permisos necesarios para actualizar los AWS recursos directamente, sin usarlos CloudFormation. Por ese motivo, asegúrese de que sus credenciales pertenezcan a las mismas pilas con Cuenta de AWS las que va a realizar las implementaciones de hotswap y de que cuenten con los permisos de IAM necesarios para actualizar los recursos.

Actualmente, se admite el intercambio en caliente para los siguientes cambios:

  • Activos de código (incluidas Docker imágenes y código en línea), cambios de etiquetas y cambios de configuración (solo se admiten variables de descripción y entorno) de las funciones de Lambda.

  • Versiones de Lambda y cambios de alias.

  • Cambios de definición de máquinas de AWS Step Functions estado.

  • Cambios en los activos de contenedores de los servicios de Amazon ECS.

  • Cambios en los activos del sitio web de las implementaciones de bucket de Amazon S3.

  • Cambios en el origen y el entorno de los AWS CodeBuild proyectos.

  • Cambios en la plantilla de mapeo de VTL para AWS AppSync resolutores y funciones.

  • Cambios en el esquema de las API AWS AppSync GraphQL.

Se admite el uso de determinadas funciones CloudFormation intrínsecas como parte de una implementación intercambiada en caliente. Entre ellos se incluyen:

  • Ref

  • Fn::GetAtt— Solo se admite parcialmente. Consulte esta implementación para conocer los recursos y atributos compatibles.

  • Fn::ImportValue

  • Fn::Join

  • Fn::Select

  • Fn::Split

  • Fn::Sub

Esta opción también es compatible con las pilas anidadas.

nota
  • Esta opción introduce deliberadamente variaciones en las CloudFormation pilas para acelerar los despliegues. Por este motivo, utilícela únicamente con fines de desarrollo. No utilice esta opción para sus despliegues de producción.

  • Esta opción se considera experimental y puede tener cambios importantes en el futuro.

  • Los valores predeterminados de algunos parámetros pueden ser diferentes a los del parámetro hotswap. Por ejemplo, el porcentaje mínimo de estado de un servicio Amazon ECS se establecerá actualmente en0. Si esto ocurre, revise la fuente en consecuencia.

Valor predeterminado: false

--hotswap-fallback BOOLEAN

Esta opción es similar a--hotswap. La diferencia es que se --hotswap-fallback recurrirá a realizar un CloudFormation despliegue completo si se detecta un cambio que lo requiera.

Para obtener más información acerca de esta opción, consulte --hotswap.

Valor predeterminado: false

--ignore-no-stacks BOOLEAN

Realiza una implementación incluso si tu aplicación de CDK no contiene ninguna pila.

Esta opción resulta útil en el siguiente escenario: puede que tengas una aplicación con varios entornos, como dev y. prod Al iniciar el desarrollo, es posible que tu aplicación de producción no tenga ningún recurso o que los recursos estén comentados. Esto provocará un error de implementación con un mensaje que indica que la aplicación no tiene pilas. Se usa --ignore-no-stacks para evitar este error.

Valor predeterminado: false

--logs BOOLEAN

Muestra el CloudWatch registro de Amazon en la salida estándar (stdout) para todos los eventos de todos los recursos de las pilas seleccionadas.

Esta opción solo es compatible con--watch.

Valor predeterminado: true

--method, -m STRING

Configure el método para realizar una implementación.

  • change-set— Método predeterminado. La CDK CLI crea un conjunto de CloudFormation cambios con los cambios que se van a implementar y, a continuación, realiza el despliegue.

  • direct— No cree un conjunto de cambios. En su lugar, aplique el cambio inmediatamente. Esto suele ser más rápido que crear un conjunto de cambios, pero se pierde la información de progreso.

  • prepare-change-set— Cree un conjunto de cambios pero no realice el despliegue. Esto resulta útil si dispone de herramientas externas que inspeccionarán el conjunto de cambios o si tiene un proceso de aprobación de los conjuntos de cambios.

Valores válidos: change-set, direct, prepare-change-set

Valor predeterminado: change-set

--notification-arns ARRAY

Los ARN de los temas de Amazon SNS CloudFormation que notificarán los eventos relacionados con la pila.

--outputs-file, -O STRING

La ruta en la que se escriben los resultados de la pila de las implementaciones.

Tras la implementación, los resultados de la pila se escribirán en el archivo de salida especificado en formato JSON.

Puedes configurar esta opción en el cdk.json archivo del proyecto o ~/.cdk.json en tu máquina de desarrollo local:

{ "app": "npx ts-node bin/myproject.ts", // ... "outputsFile": "outputs.json" }

Si se implementan varias pilas, los resultados se escriben en el mismo archivo de salida, organizados por claves que representan el nombre de la pila.

--parameters ARRAY

Transfiera parámetros adicionales CloudFormation durante el despliegue.

Esta opción acepta una matriz con el siguiente formato:STACK:KEY=VALUE.

  • STACK— El nombre de la pila a la que se va a asociar el parámetro.

  • KEY— El nombre del parámetro de la pila.

  • VALUE— El valor que se transferirá en el momento de la implementación.

Si no se proporciona un nombre de pila, o si * se proporciona como nombre de pila, los parámetros se aplicarán a todas las pilas que se estén desplegando. Si una pila no utiliza el parámetro, la implementación fallará.

Los parámetros no se propagan a las pilas anidadas. Para pasar los parámetros a las pilas anidadas, utilice la construcción. NestedStack

Valor predeterminado: {}

--previous-parameters BOOLEAN

Utilice los valores anteriores para los parámetros existentes.

Si esta opción está establecida enfalse, debe especificar todos los parámetros de cada despliegue.

Valor predeterminado: true

--progress STRING

Configure la forma en que el CDK CLI muestra el progreso de la implementación.

  • bar— Muestra los eventos de despliegue de la pila como una barra de progreso, con los eventos del recurso que se está desplegando actualmente.

  • events— Proporcione un historial completo, incluidos todos los CloudFormation eventos.

También puedes configurar esta opción en el cdk.json archivo del proyecto o ~/.cdk.json en tu máquina de desarrollo local:

{ "progress": "events" }

Valores válidos: bar, events

Valor predeterminado: bar

--require-approval STRING

Especifique qué cambios importantes desde el punto de vista de la seguridad requieren aprobación manual.

  • any-change — Se requiere una aprobación manual para cualquier cambio en la pila.

  • broadening— Se requiere la aprobación manual si los cambios implican una ampliación de los permisos o las reglas de los grupos de seguridad.

  • never— No se requiere aprobación.

Valores válidos: any-change, broadening, never

Valor predeterminado: broadening

--rollback BOOLEAN

Durante la implementación, si no se puede crear o actualizar un recurso, la implementación volverá al último estado estable antes de que CLI vuelva la CDK. Todos los cambios realizados hasta ese momento se anularán. Los recursos que se crearon se eliminarán y las actualizaciones que se hayan realizado se revertirán.

Especifique false si desea desactivar este comportamiento. Si no se puede crear o actualizar un recurso, el CDK CLI dejará en su lugar los cambios realizados hasta ese momento y regresará. Esto puede resultar útil en entornos de desarrollo en los que se realiza una iteración rápida.

Para--rollback=false, puede usar --no-rollback o-R.

nota

Cuandofalse, las implementaciones que provocan la sustitución de recursos siempre fallan. Solo puede usar este valor de opción para las implementaciones que actualicen o creen nuevos recursos.

Valor predeterminado: true

--toolkit-stack-name STRING

El nombre de la pila de herramientas de CDK existente.

Esta opción solo se usa para las aplicaciones de CDK que utilizan la síntesis antigua.

--watch BOOLEAN

Observe continuamente los archivos de proyecto de CDK e implemente las pilas especificadas automáticamente cuando se detecten cambios.

Esta opción implica de forma --hotswap predeterminada.

Esta opción tiene un CLI comando CDK equivalente. Para obtener más información, consulte cdk watch.

Ejemplos

Implemente la pila denominada MyStackName

$ cdk deploy MyStackName --app='node bin/main.js'

Implemente varias pilas en una aplicación

cdk listUtilízalo para enumerar tus pilas:

$ cdk list CdkHelloWorldStack CdkStack2 CdkStack3

Para desplegar todas las pilas, usa la --all opción:

$ cdk deploy --all

Para elegir qué pilas implementar, proporciona los nombres de las pilas como argumentos:

$ cdk deploy CdkHelloWorldStack CdkStack3

Implemente pilas de canalizaciones

Se usa cdk list para mostrar los nombres de las pilas como rutas, mostrando dónde se encuentran en la jerarquía de canalización:

$ cdk list PipelineStack PiplelineStack/Prod PipelineStack/Prod/MyService

Usa la --all opción o el comodín * para desplegar todas las pilas. Si tienes una jerarquía de pilas como la descrita anteriormente --all y solo * coincidirás con las del nivel superior. Para hacer coincidir todas las pilas de la jerarquía, usa. **

Puede combinar estos patrones. A continuación, se despliegan todas las pilas del Prod escenario:

$ cdk deploy PipelineStack/Prod/**

Pase los parámetros en el momento del despliegue

Defina los parámetros en su pila de CDK. El siguiente es un ejemplo que crea un parámetro con el nombre TopicNameParam de un tema de Amazon SNS:

new sns.Topic(this, 'TopicParameter', { topicName: new cdk.CfnParameter(this, 'TopicNameParam').value.toString() });

Para proporcionar un valor de parámetro deparameterized, ejecute lo siguiente:

$ cdk deploy --parameters "MyStackName:TopicNameParam=parameterized"

Puede anular los valores de los parámetros mediante la --force opción. El siguiente es un ejemplo de cómo anular el nombre del tema de una implementación anterior:

$ cdk deploy --parameters "MyStackName:TopicNameParam=parameterName" --force

Escribe los resultados de la pila en un archivo después de la implementación

Defina las salidas en su archivo de pila de CDK. A continuación se muestra un ejemplo que crea una salida para una función ARN:

const fn = new lambda.Function(this, "fn", { handler: "index.handler", code: lambda.Code.fromInline(`exports.handler = \${handler.toString()}`), runtime: lambda.Runtime.NODEJS_LATEST }); new cdk.CfnOutput(this, 'FunctionArn', { value: fn.functionArn, });

Implemente la pila y escriba los resultados enoutputs.json:

$ cdk deploy --outputs-file outputs.json

El siguiente es un ejemplo de una implementación outputs.json posterior:

{ "MyStack": { "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:MyStack-fn5FF616E3-G632ITHSP5HK" } }

En este ejemplo, la clave FunctionArn corresponde al ID lógico de la CfnOutput instancia.

A continuación, se muestra un ejemplo de outputs.json cómo después de la implementación se despliegan varias pilas:

{ "MyStack": { "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:MyStack-fn5FF616E3-G632ITHSP5HK" }, "AnotherStack": { "VPCId": "vpc-z0mg270fee16693f" } }

Modifique el método de despliegue

Para realizar una implementación más rápida, sin utilizar conjuntos de cambios, utilice--method='direct':

$ cdk deploy --method='direct'

Para crear un conjunto de cambios pero no implementarlo, utilice--method='prepare-change-set'. De forma predeterminada, se creará un conjunto de cambios con el nombrecdk-deploy-change-set. Si existe un conjunto de cambios anterior con este nombre, se sobrescribirá. Si no se detecta ningún cambio, se seguirá creando un conjunto de cambios vacío.

También puede asignar un nombre al conjunto de cambios. A continuación, se muestra un ejemplo:

$ cdk deploy --method='prepare-change-set' --change-set-name='MyChangeSetName'