AWS CDK CLI referencia - 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.

AWS CDK CLI referencia

La interfaz de línea de AWS Cloud Development Kit (AWS CDK) comandos (AWS CDK CLI), también conocida como CDK Toolkit, es la herramienta principal para interactuar con AWS CDK la aplicación. Ejecuta tu aplicación, examina el modelo de aplicación que has definido y produce e implementa las AWS CloudFormation plantillas generadas por el. AWS CDK También proporciona otras funciones útiles para crear proyectos y trabajar con ellos. AWS CDK En este tema se incluye información sobre los casos de uso habituales de CDK CLI.

El CDK CLI se instala con el Node Package Manager. En la mayoría de los casos, se recomienda instalarlo globalmente.

npm install -g aws-cdk # install latest version npm install -g aws-cdk@X.YY.Z # install specific version
sugerencia

Si trabaja habitualmente con varias versiones del AWS CDK, considere la posibilidad de instalar una versión correspondiente del CDK CLI en CDK proyectos individuales. Para ello, omita en -g el npm install comando. Luego úsalo npx aws-cdk para invocarlo. Esto ejecuta la versión local si existe, y recurre a una versión global si no existe.

CDK CLI comandos

Todas CDK CLI los comandos comienzan concdk, al que sigue un subcomando (list,synthesize,deploy, etc.). Algunos subcomandos tienen una versión más corta (ls,synth, etc.) que es equivalente. Las opciones y los argumentos siguen al subcomando en cualquier orden.

Para obtener una descripción de todos los subcomandos, opciones y argumentos, consulte. AWS CDK CLI Referencia de los comandos  

Especifique las opciones y sus valores

Las opciones de la línea de comandos comienzan con dos guiones ()--. Algunas opciones que se utilizan con frecuencia tienen sinónimos de una sola letra que comienzan con un solo guión (por ejemplo, --app tiene un sinónimo). -a El orden de las opciones en un CDK CLI el comando no es importante.

Todas las opciones aceptan un valor, que debe seguir al nombre de la opción. El valor puede estar separado del nombre por un espacio en blanco o por un signo igual=. Las dos opciones siguientes son equivalentes.

--toolkit-stack-name MyBootstrapStack --toolkit-stack-name=MyBootstrapStack

Algunas opciones son banderas (booleanas). Puede especificar true o false como su valor. Si no proporciona un valor, se considerará que el valor estrue. También puede anteponer el nombre de la opción no- para dar a entenderfalse.

# sets staging flag to true --staging --staging=true --staging true # sets staging flag to false --no-staging --staging=false --staging false

Algunas opciones, a saber--context,--parameters,--plugin, y --tags--trust, se pueden especificar más de una vez para especificar varios valores. Se indica que [array] están escritas en CDK CLI ayuda. Por ejemplo:

cdk bootstrap --tags costCenter=0123 --tags responsibleParty=jdoe

Ayuda integrada

La CDK CLI tiene una ayuda integrada. Puede ver la ayuda general sobre la utilidad y una lista de los subcomandos proporcionados emitiendo:

cdk --help

Para obtener ayuda sobre un subcomando concreto, por ejemplodeploy, especifíquelo antes del --help indicador.

cdk deploy --help

Problema cdk version para mostrar la versión del CDK CLI. Proporcione esta información cuando solicite asistencia.

Informes de versiones

Para obtener información sobre cómo AWS CDK se usa, las construcciones utilizadas por AWS CDK las aplicaciones se recopilan e informan mediante un recurso identificado comoAWS::CDK::Metadata. Este recurso se añade a AWS CloudFormation las plantillas y se puede revisar fácilmente. Esta información también se puede utilizar AWS para identificar pilas mediante un constructo con problemas conocidos de seguridad o confiabilidad. También se puede usar para contactar a sus usuarios con información importante.

nota

Antes de la versión 1.93.0, AWS CDK indicaban los nombres y las versiones de los módulos cargados durante la síntesis, en lugar de las construcciones utilizadas en la pila.

De forma predeterminada, AWS CDK informa del uso de construcciones en los siguientes NPM módulos que se utilizan en la pila:

  • AWS CDK módulo principal

  • AWS Construya módulos de biblioteca

  • AWS Módulo Solutions Constructs

  • AWS Módulo del kit de implementación de Render Farm

El AWS::CDK::Metadata recurso tiene un aspecto parecido al siguiente.

CDKMetadata:
  Type: "AWS::CDK::Metadata"
  Properties:
    Analytics: "v2:deflate64:H4sIAND9SGAAAzXKSw5AMBAA0L1b2PdzBYnEAdio3RglglY60zQi7u6TWL/XKmNUlxeQSOKwaPTBqrNhwEWU3hGHiCzK0dWWfAxoL/Fd8mvk+QkS/0X6BdjnCdgmOOQKWz+AqqLDt2Y3YMnLYWwAAAA="

La Analytics propiedad es una lista comprimida con gzip, codificada en base64 y codificada en prefijo de las construcciones de la pila.

Opte por no participar en los informes de versiones

Puede optar por no participar en los informes de versiones mediante el CDK CLI o configurando el cdk.json archivo de su proyecto.

Para excluirse de los informes de versiones, utilice el CDK CLI
  • Utilice la --no-version-reporting opción con cualquier CDK CLI comando para excluirse de un solo comando. El siguiente es un ejemplo de exclusión voluntaria durante la síntesis de plantillas:

    $ cdk synth --no-version-reporting

    Como las plantillas se AWS CDK sintetizan automáticamente cuando las ejecutascdk deploy, también deberías utilizarlas --no-version-reporting con el cdk deploy comando.

Para excluirse de los informes de versiones, configure el archivo cdk.json
  • versionReportingfalseEstablézcalo en ./cdk.json o~/.cdk.json. Esto lo excluye de forma predeterminada. A continuación, se muestra un ejemplo:

    { "app": "...", "versionReporting": false }

    Tras la configuración, puede anular este comportamiento y activarlo especificando un --version-reporting comando individual.

nota

Si opta por no participar en los informes de versiones, no AWS CDK recopilarán ni informarán sobre los datos sobre las construcciones que esté utilizando. Por este motivo, no AWS CDK podrán identificar si te has visto afectado por problemas de seguridad y no te enviarán notificaciones al respecto.

Autenticación con AWS

Existen diferentes formas de configurar el acceso programático a AWS los recursos, según el entorno y el AWS acceso del que disponga.

Para elegir el método de autenticación y configurarlo para el CDK CLI, consulte Configure las credenciales de seguridad para AWS CDKCLI.

El enfoque recomendado para los nuevos usuarios que se desarrollen a nivel local, que no cuenten con un método de autenticación por parte de su empleador, es configurar AWS IAM Identity Center. Este método incluye la instalación del AWS CLI para facilitar la configuración y para iniciar sesión con regularidad en el portal de AWS acceso. Si elige este método, su entorno debería contener los siguientes elementos después de completar el procedimiento de autenticación del Centro de IAM Identidad descrito en la Guía de referencia de herramientas AWS SDKs y herramientas:

  • El AWS CLI, que se utiliza para iniciar una sesión en el portal de AWS acceso antes de ejecutar la aplicación.

  • Un AWSconfigarchivo compartido que tiene un [default] perfil con un conjunto de valores de configuración a los que se puede hacer referencia desde AWS CDK. Para encontrar la ubicación de este archivo, consulte Ubicación de los archivos compartidos en la Guía de referencia de AWS SDKs and Tools.

  • El archivo compartido de config establece la configuración de region. Esto establece Región de AWS el valor predeterminado AWS CDK y CDK CLI se utiliza para AWS las solicitudes.

  • El CDK CLI utiliza la configuración del proveedor de SSO tokens del perfil para adquirir las credenciales antes de enviar las solicitudes a AWS. El sso_role_name valor, que es un IAM rol conectado a un conjunto de permisos del Centro de IAM Identidad, debería permitir el acceso al Servicios de AWS utilizado en la aplicación.

    El siguiente config archivo de ejemplo muestra un perfil predeterminado configurado con la configuración de un proveedor de SSO token. La configuración sso_session del perfil hace referencia a la sección llamada sso-session. La sso-session sección contiene los ajustes para iniciar una sesión en el portal de AWS acceso.

    [default] sso_session = my-sso sso_account_id = 111122223333 sso_role_name = SampleRole region = us-east-1 output = json [sso-session my-sso] sso_region = us-east-1 sso_start_url = https://provided-domain.awsapps.com/start sso_registration_scopes = sso:account:access

Inicie una sesión en el portal de AWS acceso

Antes de acceder Servicios de AWS, necesita una sesión activa en el portal de AWS acceso para CDK CLI para utilizar la autenticación de IAM Identity Center para resolver las credenciales. Según la duración de las sesiones configuradas, su acceso eventualmente caducará y CDK CLI se producirá un error de autenticación. Ejecute el siguiente comando AWS CLI para iniciar sesión en el portal de AWS acceso.

aws sso login

Si la configuración de su proveedor de SSO token utiliza un perfil con nombre en lugar del perfil predeterminado, el comando esaws sso login --profile NAME. Especifique también este perfil al ejecutar cdk comandos mediante la --profile opción o la variable de AWS_PROFILE entorno.

Para comprobar si ya tiene una sesión activa, ejecute el siguiente AWS CLI comando.

aws sts get-caller-identity

La respuesta a este comando debe indicar la cuenta de IAM Identity Center y el conjunto de permisos configurados en el config archivo compartido.

nota

Si ya tiene una sesión activa en el portal de AWS acceso y la ejecutaaws sso login, no tendrá que proporcionar credenciales.

Es posible que el proceso de inicio de sesión le pida que permita el AWS CLI acceso a sus datos. Dado que AWS CLI está construido sobre el SDK de Python, los mensajes de permiso pueden contener variaciones del botocore nombre.

Especifique la región y otras configuraciones

El CDK CLI necesita saber la AWS región en la que se está desplegando y cómo autenticarse AWS. Esto es necesario para las operaciones de despliegue y para recuperar los valores de contexto durante la síntesis. Juntas, su cuenta y su región forman el entorno.

La región se puede especificar mediante variables de entorno o en archivos de configuración. Son las mismas variables y archivos que utilizan otras AWS herramientas, como la AWS CLI y las diversas AWS SDKs. Los CDK CLI busca esta información en el siguiente orden.

  • La variable de entorno AWS_DEFAULT_REGION.

  • Un perfil con nombre definido en el AWS config archivo estándar y especificado mediante la --profile opción de cdk comandos.

  • La [default] sección del AWS config archivo estándar.

Además de especificar la AWS autenticación y una región en la [default] sección, también puede añadir una o más [profile NAME] secciones, donde NAME es el nombre del perfil. Para obtener más información sobre los perfiles con nombre, consulte los archivos de configuración y credenciales compartidos en la Guía de referencia de herramientas AWS SDKs y herramientas.

El AWS config archivo estándar se encuentra en ~/.aws/config (macOS/Linux) o %USERPROFILE%\.aws\config (Windows). Para obtener detalles y ubicaciones alternativas, consulte la ubicación de los archivos de configuración y credenciales compartidos en la Guía de referencia de herramientas AWS SDKsy herramientas

El entorno que especificas en tu AWS CDK aplicación mediante la env propiedad de la pila se utiliza durante la síntesis. Se usa para generar una AWS CloudFormation plantilla específica del entorno y, durante la implementación, anula la cuenta o región especificada mediante uno de los métodos anteriores. Para obtener más información, consulte Entornos para AWS CDK.

nota

AWS CDK Utiliza credenciales de los mismos archivos fuente que otras AWS herramientas eSDKs, incluida la. AWS Command Line Interface Sin embargo, AWS CDK es posible que se comporten de forma algo diferente a estas herramientas. Utiliza la parte AWS SDK for JavaScript inferior del capó. Para obtener detalles completos sobre la configuración de las credenciales para el AWS SDK for JavaScript, consulte Configuración de credenciales.

Si lo desea, puede usar la opción --role-arn (o-r) para especificar el ARN IAM rol que debe usarse para la implementación. Esta función debe ser asumida por la AWS cuenta que se esté utilizando.

Especifique el comando de la aplicación

Muchas funciones del CDK CLI requieren que se sinteticen una o más AWS CloudFormation plantillas, lo que a su vez requiere ejecutar la aplicación. AWS CDK Soporta programas escritos en varios lenguajes. Por lo tanto, utiliza una opción de configuración para especificar el comando exacto necesario para ejecutar la aplicación. Esta opción se puede especificar de dos maneras.

En primer lugar, y lo más habitual, se puede especificar con la app clave que se encuentra dentro del archivocdk.json. Se encuentra en el directorio principal de tu AWS CDK proyecto. El CDK CLI proporciona un comando adecuado al crear un nuevo proyecto concdk init. Aquí está el cdk.json de un TypeScript proyecto nuevo, por ejemplo.

{ "app": "npx ts-node bin/hello-cdk.ts" }

El CDK CLI busca cdk.json en el directorio de trabajo actual al intentar ejecutar tu aplicación. Por eso, puedes mantener un shell abierto en el directorio principal de tu proyecto para su emisión CDK CLI comandos.

Los CDK CLI también busca la clave de la aplicación ~/.cdk.json (es decir, en tu directorio principal) si no la encuentra./cdk.json. Añadir aquí el comando de la aplicación puede resultar útil si normalmente trabajas con CDK código en el mismo idioma.

Si te encuentras en otro directorio o quieres ejecutar tu aplicación con un comando distinto del que aparececdk.json, usa la opción --app (o-a) para especificarlo.

cdk --app "npx ts-node bin/hello-cdk.ts" ls

Al implementarla, también puedes especificar un directorio que contenga conjuntos de nubes sintetizadoscdk.out, como el valor de--app. Las pilas especificadas se despliegan desde este directorio; la aplicación no se sintetiza.

Especifique las pilas

Muchas CDK CLI los comandos (por ejemplocdk deploy) funcionan en las pilas definidas en tu aplicación. Si tu aplicación contiene solo una pila, el CDK CLI asume que lo dices en serio si no especificas una pila de forma explícita.

De lo contrario, debes especificar la pila o pilas con las que quieres trabajar. Para ello, especifique las pilas deseadas por ID de forma individual en la línea de comandos. Recuerde que el ID es el valor especificado por el segundo argumento al crear una instancia de la pila.

cdk synth PipelineStack LambdaStack

También puedes usar caracteres comodín para especificar IDs que coincidan con un patrón.

  • ?coincide con cualquier carácter individual

  • *coincide con cualquier número de caracteres (*solo coincide con todas las pilas)

  • **coincide con todos los elementos de una jerarquía

También puede usar la --all opción para especificar todas las pilas.

Si tu aplicación usa CDKPipelines, el CDK CLI entiende tus pilas y etapas como una jerarquía. Además, la --all opción y el * comodín solo coinciden con las pilas de nivel superior. Para hacer coincidir todas las pilas, usa. ** También se usa ** para indicar todas las pilas de una jerarquía determinada.

Cuando utilice caracteres comodín, encierre el patrón entre comillas o evite los caracteres comodín con ellos. \ Si no lo hace, es posible que la consola intente expandir el patrón hasta incluir los nombres de los archivos del directorio actual. En el mejor de los casos, esto no hará lo que esperabas; en el peor de los casos, podrías desplegar pilas que no tenías intención de usar. Esto no es estrictamente necesario en Windows porque cmd.exe no expande los caracteres comodín, pero no obstante es una buena práctica.

cdk synth "*Stack" # PipelineStack, LambdaStack, etc. cdk synth 'Stack?' # StackA, StackB, Stack1, etc. cdk synth \* # All stacks in the app, or all top-level stacks in a CDK Pipelines app cdk synth '**' # All stacks in a CDK Pipelines app cdk synth 'PipelineStack/Prod/**' # All stacks in Prod stage in a CDK Pipelines app
nota

El orden en el que se especifican las pilas no es necesariamente el orden en el que se procesarán. El CDK CLI tiene en cuenta las dependencias entre las pilas a la hora de decidir el orden en el que se van a procesar. Por ejemplo, supongamos que una pila usa un valor producido por otra (como el ARN de un recurso definido en la segunda pila). En este caso, la segunda pila se sintetiza antes que la primera debido a esta dependencia. Puedes añadir dependencias entre las pilas manualmente mediante el método de la addDependency()pila.

Arranque su entorno AWS

La implementación de pilas con ellas CDK requiere el aprovisionamiento de AWS CDK recursos dedicados especiales. El cdk bootstrap comando crea los recursos necesarios para usted. Solo necesita arrancar si va a implementar una pila que requiera estos recursos dedicados. Para obtener más información, consulte AWS CDK arranque.

cdk bootstrap

Si se ejecuta sin argumentos, como se muestra aquí, el cdk bootstrap comando sintetiza la aplicación actual y arranca los entornos en los que se desplegarán sus pilas. Si la aplicación contiene pilas independientes del entorno, que no especifican un entorno de forma explícita, se arrancan la cuenta y la región predeterminadas, o bien se especifica el entorno mediante ellas. --profile

Fuera de una aplicación, debes especificar de forma explícita el entorno que se va a iniciar. También puedes hacerlo para iniciar un entorno que no esté especificado en tu aplicación o en tu perfil local. AWS Las credenciales deben estar configuradas (por ejemplo, en~/.aws/credentials) para la cuenta y la región especificadas. Puede especificar un perfil que contenga las credenciales necesarias.

cdk bootstrap ACCOUNT-NUMBER/REGION # e.g. cdk bootstrap 1111111111/us-east-1 cdk bootstrap --profile test 1111111111/us-east-1
importante

Cada entorno (combinación de cuenta/región) en el que se implemente dicha pila debe iniciarse por separado.

Es posible que se le cobre AWS por lo que AWS CDK almacenen en los recursos de arranque. Además, si los utilizas-bootstrap-customer-key, se creará una AWS KMS clave, que también conlleva cargos por entorno.

nota

Las versiones anteriores de la plantilla bootstrap creaban una KMS clave de forma predeterminada. Para evitar cargos, vuelva a arrancar usando. --no-bootstrap-customer-key

nota

CDK CLI La versión 2 no es compatible con la plantilla de arranque original, denominada plantilla heredada, que se utiliza de forma predeterminada con la versión 1. CDK

importante

La plantilla bootstrap moderna concede de forma efectiva los permisos implícitos --cloudformation-execution-policies a cualquier AWS cuenta de la --trust lista. De forma predeterminada, esto extiende los permisos de lectura y escritura a cualquier recurso de la cuenta de arranque. Asegúrese de configurar la pila de arranque con políticas y cuentas de confianza con las que se sienta cómodo.

Crea una nueva aplicación

Para crear una nueva aplicación, cree un directorio para ella y, después, dentro del directorio, ejecutecdk init.

mkdir my-cdk-app cd my-cdk-app cdk init TEMPLATE --language LANGUAGE

Los idiomas compatibles (LANGUAGE) son:

Código

Idioma

typescript

TypeScript

javascript

JavaScript

python

Python

java

Java

csharp

C#

TEMPLATE es una plantilla opcional. Si la plantilla deseada es una aplicación, la predeterminada, puede omitirla. Las plantillas disponibles son:

Plantilla

Descripción

app(predeterminado)

Crea una AWS CDK aplicación vacía.

sample-app

Crea una AWS CDK aplicación con una pila que contiene una SQS cola de Amazon y un SNS tema de Amazon.

Las plantillas utilizan el nombre de la carpeta del proyecto para generar nombres para los archivos y las clases de la nueva aplicación.

Listar pilas

Para ver una lista IDs de las pilas de la AWS CDK aplicación, introduce uno de los siguientes comandos equivalentes:

cdk list cdk ls

Si tu aplicación contiene pilas de CDKPipelines, el CDK CLI muestra los nombres de las pilas como rutas según su ubicación en la jerarquía de canalizaciones. (Por ejemplo,PipelineStack,PipelineStack/Prod, yPipelineStack/Prod/MyService.)

Si tu aplicación contiene muchas pilas, puedes especificar una pila total o parcial IDs de las pilas que se van a enumerar. Para obtener más información, consulte Especifique las pilas.

Agrega la --long marca para ver más información sobre las pilas, incluidos los nombres de las pilas y sus entornos (AWS cuenta y región).

Sintetiza las pilas

El cdk synthesize comando (casi siempre abreviadosynth) sintetiza una pila definida en tu aplicación en una plantilla. CloudFormation

cdk synth # if app contains only one stack cdk synth MyStack cdk synth Stack1 Stack2 cdk synth "*" # all stacks in app
nota

El CDK CLI realmente ejecuta tu aplicación y sintetiza plantillas nuevas antes de la mayoría de las operaciones (por ejemplo, al implementar o comparar pilas). Estas plantillas se almacenan de forma predeterminada en el cdk.out directorio. El cdk synth comando simplemente imprime las plantillas generadas para una o más pilas especificadas.

Consulte todas cdk synth --help las opciones disponibles. En la siguiente sección se describen algunas de las opciones que se utilizan con más frecuencia.

Especifique los valores de contexto

Usa la -c opción --context o para pasar los valores de contexto del tiempo de ejecución a tu CDK aplicación.

# specify a single context value cdk synth --context key=value MyStack # specify multiple context values (any number) cdk synth --context key1=value1 --context key2=value2 MyStack

Al implementar varias pilas, los valores de contexto especificados normalmente se transfieren a todas ellas. Si lo desea, puede especificar valores diferentes para cada pila anteponiendo el nombre de la pila al valor de contexto.

# different context values for each stack cdk synth --context Stack1:key=value Stack2:key=value Stack1 Stack2

Especifique el formato de visualización

Por defecto, la plantilla sintetizada se muestra en YAML formato. En su lugar, añada la --json bandera para mostrarla en JSON formato.

cdk synth --json MyStack

Especifique el directorio de salida

Agregue la opción --output (-o) para escribir las plantillas sintetizadas en un directorio que no seacdk.out.

cdk synth --output=~/templates

Implemente pilas

El cdk deploy subcomando despliega una o más pilas específicas en tu cuenta. AWS

cdk deploy # if app contains only one stack cdk deploy MyStack cdk deploy Stack1 Stack2 cdk deploy "*" # all stacks in app
nota

El CDK CLI ejecuta tu aplicación y sintetiza AWS CloudFormation plantillas nuevas antes de implementar cualquier cosa. Por lo tanto, la mayoría de las opciones de línea de comandos que puedes usar cdk synth (por ejemplo,--context) también se pueden usar concdk deploy.

Consulte todas cdk deploy --help las opciones disponibles. En la siguiente sección se describen algunas de las opciones más útiles.

Omita la síntesis

El cdk deploy comando normalmente sintetiza las pilas de la aplicación antes de la implementación para garantizar que la implementación refleje la versión más reciente de la aplicación. Si sabes que no has cambiado el código desde la última vezcdk synth, puedes suprimir el paso de síntesis redundante durante la implementación. Para ello, especifica el cdk.out directorio de tu proyecto en la --app opción.

cdk deploy --app cdk.out StackOne StackTwo

Deshabilite la reversión

AWS CloudFormation tiene la capacidad de revertir los cambios para que los despliegues sean atómicos. Esto significa que tienen éxito o fracasan en su conjunto. AWS CDK Hereda esta capacidad porque sintetiza e implementa AWS CloudFormation plantillas.

Rollback garantiza que sus recursos estén en un estado uniforme en todo momento, lo cual es vital para las pilas de producción. Sin embargo, mientras sigue desarrollando su infraestructura, algunos fallos son inevitables y revertir las implementaciones fallidas puede ralentizar el proceso.

Por este motivo, el CDK CLI le permite deshabilitar la reversión agregándola --no-rollback a su cdk deploy comando. Con este indicador, las implementaciones fallidas no se anulan. En su lugar, los recursos desplegados antes que el recurso fallido permanecen en su lugar y el siguiente despliegue comienza con el recurso fallido. Pasará mucho menos tiempo esperando las implementaciones y mucho más tiempo desarrollando su infraestructura.

Intercambio en caliente

Usa la --hotswap marca con cdk deploy para intentar actualizar tus AWS recursos directamente en lugar de generar un conjunto de AWS CloudFormation cambios e implementarlo. La implementación vuelve a la AWS CloudFormation implementación si no es posible el intercambio en caliente.

Actualmente, el intercambio en caliente admite funciones Lambda, máquinas de estado Step Functions e imágenes de contenedores de Amazon. ECS El --hotswap indicador también desactiva la reversión (es decir, implica). --no-rollback

importante

No se recomienda el intercambio en caliente para las implementaciones de producción.

Modo reloj

El CDK CLIEl modo de visualización (cdk deploy --watcho cdk watch abreviado) monitorea continuamente los archivos y activos fuente de la CDK aplicación para detectar cambios. Realiza un despliegue inmediato de las pilas especificadas cuando se detecta un cambio.

De forma predeterminada, estas implementaciones utilizan el --hotswap indicador, que acelera la implementación de los cambios en las funciones de Lambda. También se recurre a la implementación AWS CloudFormation si se ha cambiado la configuración de la infraestructura. Para poder realizar cdk watch siempre AWS CloudFormation despliegues completos, añada la --no-hotswap marca acdk watch.

Todos los cambios realizados mientras cdk watch se está realizando una implementación se combinan en una sola implementación, que comienza tan pronto como se completa la implementación en curso.

El modo de vigilancia utiliza la "watch" clave del proyecto cdk.json para determinar qué archivos se van a supervisar. De forma predeterminada, estos archivos son los archivos y activos de la aplicación, pero esto se puede cambiar modificando las "exclude" entradas "include" y de la "watch" clave. En el siguiente cdk.json archivo se muestra un ejemplo de estas entradas.

{ "app": "mvn -e -q compile exec:java", "watch": { "include": "src/main/**", "exclude": "target/*" } }

cdk watchejecuta el "build" comando desde cdk.json para compilar la aplicación antes de la síntesis. Si su implementación requiere algún comando para compilar o empaquetar el código Lambda (o cualquier otro elemento que no esté en la CDK aplicación), agréguelo aquí.

Los comodines tipo Git, * tanto como**, se pueden usar en las teclas "watch" y"build". Cada ruta se interpreta en relación con el directorio principal de. cdk.json El valor predeterminado include es**/*, es decir, todos los archivos y directorios del directorio raíz del proyecto. excludees opcional.

importante

No se recomienda el modo de vigilancia para las implementaciones de producción.

Especifique los parámetros AWS CloudFormation

El CDK CLI admite la especificación de AWS CloudFormation parámetros en el momento del despliegue. Puede proporcionarlos en la línea de comandos que sigue a la --parameters bandera.

cdk deploy MyStack --parameters uploadBucketName=UploadBucket

Para definir varios parámetros, utilice varios --parameters indicadores.

cdk deploy MyStack --parameters uploadBucketName=UpBucket --parameters downloadBucketName=DownBucket

Si va a implementar varias pilas, puede especificar un valor diferente de cada parámetro para cada pila. Para ello, añada al nombre del parámetro el nombre de la pila y dos puntos. De lo contrario, se pasa el mismo valor a todas las pilas.

cdk deploy MyStack YourStack --parameters MyStack:uploadBucketName=UploadBucket --parameters YourStack:uploadBucketName=UpBucket

De forma predeterminada, AWS CDK conserva los valores de los parámetros de las implementaciones anteriores y los utiliza en las implementaciones posteriores si no se especifican de forma explícita. Utilice la --no-previous-parameters marca para solicitar que se especifiquen todos los parámetros.

Especifique el archivo de salida

Si la pila declara AWS CloudFormation los resultados, normalmente se muestran en la pantalla al finalizar el despliegue. Para escribirlos en un archivo en JSON formato, usa la --outputs-file bandera.

cdk deploy --outputs-file outputs.json MyStack

Apruebe los cambios relacionados con la seguridad

Para protegerlo de los cambios no intencionados que afecten a su postura de seguridad, la CDK CLI le pide que apruebe los cambios relacionados con la seguridad antes de implementarlos. Puede especificar el nivel de cambio que requiere aprobación:

cdk deploy --require-approval LEVEL

LEVEL puede ser uno de los siguientes:

Plazo

Significado

never

La aprobación nunca es necesaria

any-change

Se requiere la aprobación de alguno IAM o security-group-related cambio

broadening(predeterminado)

Requiere aprobación cuando se añaden IAM declaraciones o normas de tráfico; las mudanzas no requieren aprobación

El ajuste también se puede configurar en el cdk.json archivo.

{ "app": "...", "requireApproval": "never" }

Compara pilas

El cdk diff comando compara la versión actual de una pila (y sus dependencias) definida en tu aplicación con las versiones ya implementadas o con una AWS CloudFormation plantilla guardada, y muestra una lista de cambios.

Stack HelloCdkStack
IAM Statement Changes
┌───┬──────────────────────────────┬────────┬──────────────────────────────┬──────────────────────────────┬───────────┐
│   │ Resource                     │ Effect │ Action                       │ Principal                    │ Condition │
├───┼──────────────────────────────┼────────┼──────────────────────────────┼──────────────────────────────┼───────────┤
│ + │ ${Custom::S3AutoDeleteObject │ Allow  │ sts:AssumeRole               │ Service:lambda.amazonaws.com │           │
│   │ sCustomResourceProvider/Role │        │                              │                              │           │
│   │ .Arn}                        │        │                              │                              │           │
├───┼──────────────────────────────┼────────┼──────────────────────────────┼──────────────────────────────┼───────────┤
│ + │ ${MyFirstBucket.Arn}         │ Allow  │ s3:DeleteObject*             │ AWS:${Custom::S3AutoDeleteOb │           │
│   │ ${MyFirstBucket.Arn}/*       │        │ s3:GetBucket*                │ jectsCustomResourceProvider/ │           │
│   │                              │        │ s3:GetObject*                │ Role.Arn}                    │           │
│   │                              │        │ s3:List*                     │                              │           │
└───┴──────────────────────────────┴────────┴──────────────────────────────┴──────────────────────────────┴───────────┘
IAM Policy Changes
┌───┬────────────────────────────────────────────────────────┬────────────────────────────────────────────────────────┐
│   │ Resource                                               │ Managed Policy ARN                                     │
├───┼────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────┤
│ + │ ${Custom::S3AutoDeleteObjectsCustomResourceProvider/Ro │ {"Fn::Sub":"arn:${AWS::Partition}:iam::aws:policy/serv │
│   │ le}                                                    │ ice-role/AWSLambdaBasicExecutionRole"}                 │
└───┴────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────┘
(NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299)

Parameters
[+] Parameter AssetParameters/4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392/S3Bucket AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3BucketBF7A7F3F: {"Type":"String","Description":"S3 bucket for asset \"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\""}
[+] Parameter AssetParameters/4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392/S3VersionKey AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3VersionKeyFAF93626: {"Type":"String","Description":"S3 key for asset version \"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\""}
[+] Parameter AssetParameters/4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392/ArtifactHash AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392ArtifactHashE56CD69A: {"Type":"String","Description":"Artifact hash for asset \"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\""}

Resources
[+] AWS::S3::BucketPolicy MyFirstBucket/Policy MyFirstBucketPolicy3243DEFD
[+] Custom::S3AutoDeleteObjects MyFirstBucket/AutoDeleteObjectsCustomResource MyFirstBucketAutoDeleteObjectsCustomResourceC52FCF6E
[+] AWS::IAM::Role Custom::S3AutoDeleteObjectsCustomResourceProvider/Role CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092
[+] AWS::Lambda::Function Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F
[~] AWS::S3::Bucket MyFirstBucket MyFirstBucketB8884501
 ├─ [~] DeletionPolicy
 │   ├─ [-] Retain
 │   └─ [+] Delete
 └─ [~] UpdateReplacePolicy
     ├─ [-] Retain
     └─ [+] Delete

Para comparar las pilas de tu aplicación con la implementación existente:

cdk diff MyStack

Para comparar las pilas de tu aplicación con las de una plantilla guardada CloudFormation :

cdk diff --template ~/stacks/MyStack.old MyStack

Importa los recursos existentes a una pila

Puede usar el cdk import comando para gestionar los recursos de CloudFormation una AWS CDK pila determinada. Esto resulta útil si va a AWS CDK migrar o mover recursos entre pilas o si va a cambiar su identificador lógico. cdk import Utiliza la importación de CloudFormation recursos. Consulta la lista de recursos que se pueden importar aquí.

Para importar un recurso existente a una AWS CDK pila, sigue los siguientes pasos:

  • Asegúrese de que el recurso no esté siendo administrado actualmente por ninguna otra CloudFormation pila. Si es así, primero establezca la política de eliminación RemovalPolicy.RETAIN en la pila en la que se encuentra el recurso actualmente y realice una implementación. A continuación, elimine el recurso de la pila y realice otra implementación. Este proceso garantizará que el recurso deje de ser administrado por él CloudFormation , pero no lo elimine.

  • Ejecute cdk diff a para asegurarse de que no haya cambios pendientes en la AWS CDK pila a la que desea importar los recursos. Los únicos cambios que se permiten en una operación de «importación» son la adición de nuevos recursos que desee importar.

  • Añada componentes a los recursos que desee importar a su pila. Por ejemplo, si quieres importar un bucket de Amazon S3, añade algo comonew s3.Bucket(this, 'ImportedS3Bucket', {});. No modifique ningún otro recurso.

    También debe asegurarse de modelar exactamente el estado que tiene el recurso actualmente en la definición. Para el ejemplo del segmento, asegúrate de incluir las AWS KMS claves, las políticas del ciclo de vida y cualquier otra información relevante sobre el segmento. Si no lo hace, es posible que las operaciones de actualización posteriores no den los resultados esperados.

    Puede elegir si desea incluir o no el nombre del depósito físico. Por lo general, recomendamos no incluir nombres de AWS CDK recursos en las definiciones de recursos para que sea más fácil implementar los recursos varias veces.

  • Ejecute cdk import STACKNAME.

  • Si los nombres de los recursos no están en el modelo, se le CLI pedirá que introduzca los nombres reales de los recursos que va a importar. Después de esto, comienza la importación.

  • Cuando cdk import los informes son correctos, el recurso ahora es administrado por AWS CDK y CloudFormation. Cualquier cambio posterior que realices en las propiedades de los recursos de tu AWS CDK aplicación, la configuración de construcción, se aplicará en la siguiente implementación.

  • Para confirmar que la definición del recurso de tu AWS CDK aplicación coincide con el estado actual del recurso, puedes iniciar una operación de detección de CloudFormation desviaciones.

Actualmente, esta función no admite la importación de recursos a pilas anidadas.

Configuración () cdk.json

Valores predeterminados para muchos CDK CLI Los indicadores de línea de comandos se pueden almacenar en el cdk.json archivo de un proyecto o en el .cdk.json archivo del directorio de usuarios. A continuación se incluye una referencia alfabética a los ajustes de configuración compatibles.

Clave Notas CDK CLI option
app El comando que ejecuta la aplicación. CDK --app
assetMetadata Sifalse, CDK no agrega metadatos a los recursos que utilizan activos. --no-asset-metadata
bootstrapKmsKeyId Anula el ID de la AWS KMS clave utilizada para cifrar el bucket de despliegue de Amazon S3. --bootstrap-kms-key-id
build El comando que compila o crea la CDK aplicación antes de la síntesis. No está permitido entrar~/.cdk.json. --build
browser El comando para iniciar un navegador web para el cdk docs subcomando. --browser
context Consulte Los valores de contexto y el AWS CDK. Los valores de contexto de un archivo de configuración no se borrarán antes. cdk context --clear (El CDK CLI coloca los valores de contexto almacenados en cachécdk.context.json.) --context
debug Sitrue, CDK CLI emite información más detallada útil para la depuración. --debug
language El lenguaje que se utilizará para inicializar nuevos proyectos. --language
lookups Sifalse, no se permiten búsquedas de contexto. La síntesis fallará si es necesario realizar alguna búsqueda de contexto. --no-lookups
notices Sifalse, suprime la visualización de mensajes sobre vulnerabilidades de seguridad, regresiones y versiones no compatibles. --no-notices
output El nombre del directorio en el que se emitirá el ensamblaje de nubes sintetizado (predeterminado). "cdk.out" --output
outputsFile El archivo en el que se escribirán los AWS CloudFormation resultados de las pilas desplegadas (en JSON formato). --outputs-file
pathMetadata Sifalse, los metadatos de la CDK ruta no se agregan a las plantillas sintetizadas. --no-path-metadata
plugin JSONmatriz que especifica los nombres de los paquetes o las rutas locales de los paquetes que amplían el CDK --plugin
profile Nombre del AWS perfil predeterminado utilizado para especificar las credenciales de la región y la cuenta. --profile
progress Si se establece en"events", el CDK CLI muestra todos los AWS CloudFormation eventos durante el despliegue, en lugar de una barra de progreso. --progress
requireApproval Nivel de aprobación predeterminado para los cambios de seguridad. Consulte Apruebe los cambios relacionados con la seguridad --require-approval
rollback Sifalse, las implementaciones fallidas no se revierten. --no-rollback
staging Sifalse, los activos no se copian en el directorio de salida (utilícelo para la depuración local de los archivos de origen con AWS SAM). --no-staging
tags JSONobjeto que contiene etiquetas (pares clave-valor) para la pila. --tags
toolkitBucketName El nombre del bucket de Amazon S3 utilizado para implementar activos como funciones de Lambda e imágenes de contenedores (consulte. Arranque su entorno AWS --toolkit-bucket-name
toolkitStackName El nombre de la pila de bootstrap (consulte. Arranque su entorno AWS --toolkit-stack-name
versionReporting Sifalse, opta por no participar en los informes de versiones. --no-version-reporting
watch JSONcontiene un objeto "include" y "exclude" claves que indican qué archivos deberían (o no deberían) activar la reconstrucción del proyecto cuando se modifiquen. Consulte Modo reloj. --watch