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 ejecutas
cdk deploy
, también deberías utilizarlas--no-version-reporting
con elcdk deploy
comando.
Para excluirse de los informes de versiones, configure el archivo cdk.json
-
versionReporting
false
Establé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 AWS
config
archivo 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 deregion
. 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ónsso_session
del perfil hace referencia a la sección llamadasso-session
. Lasso-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-sessionmy-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
. Especifique también este perfil al ejecutar cdk comandos mediante la --profile opción o la variable de NAME
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 decdk
comandos. -
La
[default]
sección del AWSconfig
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
secciones, donde NAME
]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
--languageLANGUAGE
Los idiomas compatibles (LANGUAGE
) son:
Código |
Idioma |
---|---|
|
TypeScript |
|
JavaScript |
|
Python |
|
Java |
|
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 |
---|---|
|
Crea una AWS CDK aplicación vacía. |
|
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 watch
ejecuta 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. exclude
es 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 |
---|---|
|
La aprobación nunca es necesaria |
|
Se requiere la aprobación de alguno IAM o security-group-related cambio |
|
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 como
new 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 |