Este es el AWS Guía para desarrolladores de CDK v2. La primera versión del CDK pasó a la etapa de mantenimiento el 1.° de junio de 2022 y no cuenta con soporte desde 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 Referencia de la CLI del CDK
La AWS Kit de desarrollo en la nube (AWS CDK) Interfaz de línea de comandos (AWS CDK (CLI), también conocida como CDK Toolkit, es la herramienta principal para interactuar con su AWS Aplicación CDK. Ejecuta su aplicación, interroga el modelo de aplicación que ha definido y produce e implementa el AWS CloudFormation plantillas generadas por AWS CDK. También proporciona otras funciones útiles para crear y trabajar con AWS Proyectos de CDK. En este tema, se incluye información sobre casos de uso comunes de la CLI de CDK.
La CLI de CDK se instala con el Administrador de paquetes de nodo. En la mayoría de los casos, recomendamos instalarla globalmente.
npm install -g aws-cdk # install latest version npm install -g aws-cdk@X.YY.Z # install specific version
sugerencia
Si trabajas habitualmente con varias versiones del AWS CDK, considere la posibilidad de instalar una versión coincidente de la CLI del CDK en proyectos individuales del CDK. Para ello, omita -g en el comando npm install. Luego, use npx aws-cdk para invocarlo. Esto ejecuta la versión local, si existe, y recurre a una versión global, si no existe.
Comandos de la CLI de CDK
Todos los comandos de la CLI de CDK comienzan con cdk, seguido de 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 se ubican después del subcomando en cualquier orden.
Para obtener una descripción de todos los subcomandos, las opciones y los argumentos, consulte Referencia de comandos de la CLI de AWS CDK.
Especificar 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 guion (por ejemplo, --app tiene el sinónimo -a). El orden de las opciones en un comando de la CLI de CDK no es importante.
Todas las opciones aceptan un valor, el cual debe estar después del nombre de la opción. El valor puede separarse del nombre con un espacio en blanco o un signo igual =. Estas dos opciones 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 ningún valor, se considerará que el valor es true. También puede anteponer el nombre de la opción con no- para dar a entender false.
# sets staging flag to true --staging --staging=true --staging true # sets staging flag to false --no-staging --staging=false --staging false
Algunas opciones, específicamente --context, --parameters, --plugin, --tags y --trust, se pueden especificar más de una vez para especificar varios valores. En la ayuda de la CLI del CDK, se indica que son del tipo [array]. Por ejemplo:
cdk bootstrap --tags costCenter=0123 --tags responsibleParty=jdoe
Built-in ayudar
La CLI de CDK cuenta con ayuda integrada. Para ver la ayuda general sobre la utilidad y una lista de los subcomandos proporcionados, ejecute lo siguiente:
cdk --help
Para obtener ayuda con un subcomando en concreto, por ejemplo, deploy, especifíquelo antes de la bandera --help.
cdk deploy --help
Ejecute cdk version para mostrar la versión de la CLI de CDK. Proporcione esta información cuando solicite asistencia.
Informes de versiones
Para obtener información sobre cómo AWS Se usa CDK, las construcciones utilizadas por AWS Las aplicaciones del CDK se recopilan y notifican mediante un recurso identificado como AWS::CDK::Metadata. Para obtener más información, consulte Configurar AWS Informes de datos de uso del CDK.
Autenticación con AWS
Hay diferentes maneras en las que puede configurar el acceso programático a AWS recursos, según el entorno y el AWS acceso disponible para usted.
Para elegir el método de autenticación y configurarlo para la CLI del CDK, consulte Configure las credenciales de seguridad para AWS CDK CLI.
El enfoque recomendado para los nuevos usuarios que se desarrollan localmente y que no reciben un método de autenticación por parte de su empleador es configurar AWS Centro de identidad de IAM. Este método incluye la instalación del AWS CLI para facilitar la configuración y para iniciar sesión con regularidad en AWS portal de acceso. Si elige este método, su entorno debe contener los siguientes elementos después de completar el procedimiento para Autenticación del centro de identidad de IAM en el AWS Guía de referencia de SDK y herramientas:
-
El AWS CLI, que se utiliza para iniciar un AWS acceda a la sesión del portal antes de ejecutar la aplicación.
-
UN compartido AWS archivo de configuración tener 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 el AWS Guía de referencia de SDK y herramientas. -
El archivo compartido de
configestablece la configuración de la región. Esto establece el valor predeterminado AWS Región la AWS Uso de CDK y CDK CLI para AWS solicitudes. -
La CLI del CDK utiliza la configuración de proveedor de token de SSO del perfil para adquirir las credenciales antes de enviar las solicitudes a AWS. El
sso_role_nameel valor, que es una función de IAM conectada a un conjunto de permisos del Centro de identidad de IAM, debería permitir el acceso al AWS servicios utilizados en su aplicación.El siguiente archivo
configde ejemplo muestra la configuración de un perfil predeterminado con el proveedor de token de SSO. La configuraciónsso_sessiondel perfil hace referencia a la sección llamadasso-session. Elsso-sessionla sección contiene la configuración para iniciar un AWS acceder a la sesión del portal.[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
Iniciar una AWS acceder a la sesión del portal
Antes de acceder AWS servicios, necesita un servicio activo AWS acceda a la sesión del portal para que la CLI del CDK utilice la autenticación del IAM Identity Center para resolver las credenciales. En función de la duración de las sesiones configurada, el acceso caducará eventualmente, y la CLI de CDK detectará un error de autenticación. Ejecute el siguiente comando en AWS CLI para iniciar sesión en AWS portal de acceso.
aws sso login
Si la configuración del proveedor de token de SSO utiliza un perfil con nombre, en lugar del perfil predeterminado, el comando es aws sso login --profile <NAME>. Especifique también este perfil al emitir comandos cdk mediante la opción --profile o la variable de entorno AWS_PROFILE.
Para comprobar si ya tiene una sesión activa, ejecute lo siguiente AWS Comando CLI.
aws sts get-caller-identity
La respuesta a este comando debe indicar la cuenta y el conjunto de permisos del Centro de identidades de IAM configurados en el archivo compartido config.
nota
Si ya tienes un activo AWS acceda a la sesión del portal y ejecute aws sso login, no se le pedirá que proporcione credenciales.
Es posible que el proceso de inicio de sesión le pida que permita la AWS Acceso mediante CLI a sus datos. Desde el AWS La CLI se basa en el SDK de Python, los mensajes de permiso pueden contener variaciones del botocore nombre.
Especifique la región y otras configuraciones
La CLI del CDK necesita conocer el AWS La región en la que está realizando la implementación y cómo autenticarse AWS. Esto es necesario para las operaciones de implementación y para recuperar los valores de contexto durante la síntesis. Juntas, su cuenta y región forman el entorno.
La región se puede especificar mediante variables de entorno o con archivos de configuración. Estas son las mismas variables y archivos que utilizan otros AWS herramientas como la AWS CLI y los diversos AWS SDKs. La CLI de CDK busca esta información en el siguiente orden.
-
La variable de entorno de la
AWS_DEFAULT_REGION. -
Un perfil con nombre definido en el estándar AWS
configarchivo y especificado mediante el--profileopción activadacdkcomandos. -
El
[default]sección de la norma AWSconfigarchivo.
Además de especificar AWS autenticación y una región en el [default] sección, también puede agregar 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 Archivos de configuración y credenciales compartidos en el AWS Guía de referencia de SDK y herramientas.
El estándar AWS
config el archivo se encuentra en ~/.aws/config (macOS/Linux) o %USERPROFILE%\.aws\config (Windows). Para obtener más información y ubicaciones alternativas, consulte Ubicación de los archivos de configuración y credenciales compartidos en el AWS Guía de referencia de SDK y herramientas
El entorno que especifique en su AWS La aplicación CDK mediante el uso de la pila env La propiedad se usa durante la síntesis. Se usa para generar un entorno específico AWS CloudFormation y, durante la implementación, anula la cuenta o la región especificada por uno de los métodos anteriores. Para obtener más información, consulte Entornos para AWS CDK.
nota
El AWS El CDK usa credenciales de los mismos archivos fuente que otros AWS herramientas y SDK, incluidos los AWS Interfaz de línea de comandos. Sin embargo, el AWS El CDK puede comportarse de forma algo diferente al de estas herramientas. Utiliza el AWS SDK para JavaScript debajo del capó. Para obtener información completa sobre la configuración de las credenciales para el AWS SDK para JavaScript, consulte Configuración de credenciales.
Puede utilizar la opción --role-arn (o -r) para especificar el ARN de un rol de IAM que debe usarse para la implementación. Este papel debe ser asumido por el AWS cuenta que se está utilizando.
Especifique el comando app
Muchas funciones de la CLI del CDK requieren una o más AWS CloudFormation las plantillas se sintetizan, lo que a su vez requiere ejecutar la aplicación. El AWS El CDK admite programas escritos en una variedad de idiomas. Por lo tanto, utiliza una opción de configuración para especificar el comando exacto que se necesita para ejecutar la aplicación. Esta opción se puede especificar de dos formas.
En primer lugar, y lo que es más habitual, se puede especificar con la clave app que se encuentra en el archivo cdk.json. Está en el directorio principal de su AWS Proyecto CDK. La CLI de CDK proporciona un comando adecuado al crear un proyecto nuevo con cdk init. Aquí está el cdk.json de un fresco TypeScript proyecto, por ejemplo.
{ "app": "npx ts-node bin/hello-cdk.ts" }
La CLI del CDK busca cdk.json en el directorio de trabajo actual cuando intenta ejecutar su aplicación. Por eso, puede mantener un intérprete de comandos abierto en el directorio principal de su proyecto para ejecutar los comandos de la CLI de CDK.
La CLI de CDK también busca la clave de la aplicación en ~/.cdk.json (es decir, en su directorio principal) si no la encuentra en ./cdk.json. Agregar aquí el comando app puede resultar útil si normalmente trabaja con código de CDK en el mismo lenguaje.
Si está en otro directorio o quiere ejecutar su aplicación con un comando distinto del que aparece en cdk.json, use la opción --app (o -a) para especificarlo.
cdk --app "npx ts-node bin/hello-cdk.ts" ls
Al realizar la implementación, también puede especificar un directorio que contenga conjuntos de nubes sintetizados, por ejemplo, cdk.out, como el valor de --app. Las pilas especificadas se implementan desde este directorio; la aplicación no se sintetiza.
Especifique las pilas
Muchos comandos de la CLI del CDK (por ejemplo, cdk deploy) funcionan en las pilas definidas en su aplicación. Si la aplicación contiene solo una pila, la del CDK asume que indica esa si no especifica una pila de forma explícita.
De lo contrario, debe especificar la pila o las pilas con las que quiere 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 puede usar comodines para especificar ID que coincidan con un patrón.
-
?coincide con cualquier carácter -
*coincide con cualquier cantidad de caracteres (*solo coincide con todas las pilas) -
**coincide con todos los elementos de una jerarquía
También puede usar la opción --all para especificar todas las pilas.
Si su aplicación usa CDK Pipelines, la CLI de CDK interpreta que sus pilas y etapas son una jerarquía. Además, la opción --all y el comodín * solo coinciden con las pilas de nivel superior. Para hacer coincidir todas las pilas, use **. También se usa ** para indicar todas las pilas de una jerarquía determinada.
Cuando utilice comodines, encierre el patrón entre comillas o use \ como carácter de escape para el comodín. Si no lo hace, es posible que el intérprete de comandos intente expandir el patrón hasta incluir los nombres de los archivos del directorio actual. En el mejor de los casos, esto no generará lo que esperaba; en el peor de los casos, podría implementar pilas que no tenía intención de usar. Esto no es estrictamente necesario en Windows porque cmd.exe no expande los comodines, 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 especifique las pilas no es necesariamente el orden en el que se procesarán. La CLI del CDK 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. Puede agregar dependencias entre las pilas de forma manual con el método
addDependency()
de la pila.
Arranca tu AWS entorno
La implementación de pilas con el CDK requiere una dedicación especial AWS Se van a aprovisionar los recursos del CDK. El comando cdk bootstrap crea los recursos necesarios por usted. Solo necesita realizar el arranque si va a implementar una pila que requiera estos recursos dedicados. Consulte Arranque de AWS CDK para obtener más información.
cdk bootstrap
Si se ejecuta sin argumentos, como se muestra aquí, el comando cdk bootstrap sintetiza la aplicación actual e inicia los entornos en los que se implementarán sus pilas. Si la aplicación contiene pilas independientes del entorno, que no especifican un entorno de forma explícita, se inician la cuenta y la región predeterminadas, o bien, el entorno especificado con --profile.
Fuera de una aplicación, debe especificar de forma explícita el entorno que se va a iniciar. También puedes hacerlo para arrancar un entorno que no esté especificado en tu aplicación o local AWS perfil. 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 (account/region combinación) en la que se implemente dicha pila debe arrancarse por separado.
Puede incurrir en AWS cobra por lo que AWS El CDK se almacena en los recursos iniciados. Además, si usa --bootstrap-customer-key, un AWS Se creará la clave KMS, que también conlleva cargos por entorno.
nota
Las versiones anteriores de la plantilla de arranque creaban una clave de KMS de forma predeterminada. Para evitar los cargos, vuelva a realizar el arranque con --no-bootstrap-customer-key.
nota
La versión 2 de la CLI del CDK no es compatible con la plantilla de arranque original, denominada plantilla heredada, que se utiliza de forma predeterminada con la versión 1 de CDK.
importante
La plantilla de arranque moderna otorga de manera efectiva los permisos implícitos en el --cloudformation-execution-policies a cualquier AWS cuenta en el --trust lista. De forma predeterminada, esto extiende los permisos de lectura y escritura a cualquier recurso de la cuenta iniciada. Asegúrese de configurar la pila de arranque con políticas y cuentas de confianza con las que se sienta cómodo.
Cree una aplicación nueva
Para crear una aplicación nueva, cree un directorio para ella y, a continuación, ejecute el comando cdk init dentro del directorio.
mkdir my-cdk-app cd my-cdk-app cdk init <TEMPLATE> --language <LANGUAGE>
Estos son los lenguajes admitidos (<LANGUAGE>):
| Código | Idioma |
|---|---|
|
|
TypeScript |
|
|
JavaScript |
|
|
Python |
|
|
Java |
|
|
C# |
|
|
Go |
<TEMPLATE> es una plantilla opcional. Si la plantilla deseada es app, la predeterminada, puede omitirla. Estas son las plantillas disponibles:
| Plantilla | Description (Descripción) |
|---|---|
|
|
Crea un vacío AWS Aplicación CDK. |
|
|
Crea un AWS Aplicación CDK con una pila que contiene una cola de Amazon SQS y un tema de Amazon SNS. |
La plantilla utiliza el nombre de la carpeta del proyecto para generar nombres para los archivos y las clases en la aplicación nueva.
Listar pilas
Para ver una lista de los ID de las pilas de su AWS En la aplicación CDK, introduzca uno de los siguientes comandos equivalentes:
cdk list cdk ls
Si su aplicación contiene pilas de CDK Pipelines, la CLI de CDK muestra los nombres de las pilas como rutas según su ubicación en la jerarquía de canalizaciones. (Por ejemplo, PipelineStack, PipelineStack/Prod y PipelineStack/Prod/MyService).
Si su aplicación contiene muchas pilas, puede especificar los ID de pila totales o parciales de las pilas que se van a enumerar. Para obtener más información, consulte Especificar pilas.
Añada el --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).
Sintetice las pilas
El cdk synthesize comando (casi siempre abreviado synth) sintetiza una pila definida en tu aplicación en CloudFormation plantilla.
cdk synth # if app contains only one stack cdk synth MyStack cdk synth Stack1 Stack2 cdk synth "*" # all stacks in app
nota
De hecho, la CLI de CDK ejecuta la 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 directorio cdk.out. El comando cdk synth simplemente imprime las plantillas generadas para una o más pilas especificadas.
Consulte cdk synth --help para conocer todas las opciones disponibles. En la siguiente sección, se describen algunas de las opciones que se utilizan con más frecuencia.
Especifique valores de contexto
Use la opción --context o -c para pasar los valores de contexto de tiempo de ejecución a su aplicación de CDK.
# 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 pasan 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
De forma predeterminada, la plantilla sintetizada se muestra en formato YAML. En su lugar, agregue la bandera --json para mostrarla en formato JSON.
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 sea cdk.out.
cdk synth --output=~/templates
Implemente pilas
El cdk deploy el subcomando implementa una o más pilas especificadas en su AWS cuenta.
cdk deploy # if app contains only one stack cdk deploy MyStack cdk deploy Stack1 Stack2 cdk deploy "*" # all stacks in app
nota
La CLI del CDK ejecuta tu aplicación y sintetiza datos nuevos AWS CloudFormation plantillas antes de implementar cualquier cosa. Por lo tanto, la mayoría de las opciones de línea de comandos que puede utilizar con cdk synth (por ejemplo, --context) también se puede utilizar con cdk deploy.
Consulte cdk deploy --help para conocer todas las opciones disponibles. En la siguiente sección, se describen algunas de las opciones más útiles.
Omita la síntesis
El comando cdk deploy normalmente sintetiza las pilas de la aplicación antes de la implementación para asegurarse de que la implementación refleje la versión más reciente de la aplicación. Si sabe que no ha cambiado el código desde la última vez que ejecutó cdk synth, puede suprimir el paso de síntesis redundante durante la implementación. Para ello, especifique el directorio cdk.out de su proyecto en la opción --app.
cdk deploy --app cdk.out StackOne StackTwo
Desactive la restauración
AWS CloudFormation tiene la capacidad de deshacer los cambios para que las implementaciones sean atómicas. Esto implica que funcionan o no en su totalidad. El AWS El CDK hereda esta capacidad porque sintetiza y despliega AWS CloudFormation plantillas.
La restauración 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 se sigue desarrollando la infraestructura, es inevitable que se produzcan algunos errores y revertir las implementaciones fallidas puede ralentizar el proceso.
Por este motivo, la CLI del CDK le permite desactivar la restauración agregando --no-rollback a su comando cdk deploy. Con esta bandera, las implementaciones fallidas no se revierten. En su lugar, los recursos implementados antes que el recurso fallido se mantienen, y la siguiente implementación comienza con el recurso fallido. Pasará mucho menos tiempo esperando las implementaciones y dedicará más tiempo a desarrollar su infraestructura.
Cambio en caliente
Usa el --hotswap bandera con cdk deploy para intentar actualizar su AWS recursos directamente en lugar de generar un AWS CloudFormation conjunto de cambios e implementación. La implementación se reduce a AWS CloudFormation despliegue si el intercambio en caliente no es posible.
Actualmente, el cambio en caliente admite funciones de Lambda, máquinas de estado Step Functions e imágenes de contenedores de Amazon ECS. La bandera --hotswap también desactiva la restauración (es decir, implica --no-rollback).
importante
Hot-swapping no se recomienda para las implementaciones de producción.
Modo de vigilancia
El modo de vigilancia de la CLI de CDK (cdk deploy --watch, o cdk watch abreviado) monitorea continuamente los archivos y los activos de origen de la aplicación de CDK para detectar cambios. Implementa de inmediato las pilas especificadas cuando se detecta un cambio.
De forma predeterminada, estas implementaciones utilizan la bandera --hotswap, que acelera la implementación de los cambios en las funciones de Lambda. También se recurre a la implementación mediante AWS CloudFormation si ha cambiado la configuración de la infraestructura. Tener cdk watch siempre funcionan al máximo AWS CloudFormation despliegues, añada el --no-hotswap marcar para cdk watch.
Todos los cambios realizados mientras cdk watch realiza una implementación se combinan en una sola implementación, que comienza tan pronto como se complete la implementación en curso.
El modo de vigilancia utiliza la clave "watch" en cdk.json del proyecto para determinar qué archivos se van a supervisar. De forma predeterminada, estos archivos son los archivos y los activos de la aplicación, pero se pueden cambiar modificando las entradas "include" y "exclude" de la clave "watch". En el siguiente archivo cdk.json, se muestra un ejemplo de estas entradas.
{ "app": "mvn -e -q compile exec:java", "watch": { "include": "src/main/**", "exclude": "target/*" } }
cdk watch ejecuta el comando "build" 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 su código Lambda (o cualquier otra cosa que no esté en su aplicación de CDK), agréguelo aquí.
Git-style comodines, ambos * y **, se puede utilizar en "watch" y "build" llaves. Cada ruta se interpreta en relación con el directorio principal de cdk.json. El valor predeterminado de include es **/*, es decir, todos los archivos y los directorios del directorio raíz del proyecto. exclude es opcional.
importante
No se recomienda el modo de vigilancia para implementaciones de producción.
Especifique AWS CloudFormation parámetros
La CLI del CDK admite la especificación AWS CloudFormation parámetros en el momento de la implementación. Puede proporcionarlos en la línea de comandos, después de la bandera --parameters.
cdk deploy MyStack --parameters uploadBucketName=UploadBucket
Para definir varios parámetros, utilice varias banderas --parameters.
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, agregue antes del 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, el AWS El CDK conserva los valores de los parámetros de las implementaciones anteriores y los usa en implementaciones posteriores si no se especifican explícitamente. Utilice la bandera --no-previous-parameters para solicitar que se especifiquen todos los parámetros.
Especifique el archivo de salida
Si tu pila declara AWS CloudFormation salidas, normalmente se muestran en la pantalla al final de la implementación. Para escribirla en un archivo con formato JSON, usa la bandera --outputs-file.
cdk deploy --outputs-file outputs.json MyStack
Aprobar los cambios relacionados con la seguridad
Para protegerlo contra los cambios no deseados que puedan afectar a su postura de seguridad, la CLI del CDK le pide de forma predeterminada 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 obligatoria |
|
|
Cualquier cambio en la pila requiere la aprobación |
|
|
Requiere aprobación si los cambios implican una ampliación de los permisos o de las reglas del grupo de seguridad |
El ajuste también se puede configurar en el archivo cdk.json.
{ "app": "...", "requireApproval": "never" }
Compare pilas
El cdk diff El 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 guardada AWS CloudFormation plantilla 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 su aplicación con la implementación existente:
cdk diff MyStack
Para comparar las pilas de tu aplicación con las guardadas CloudFormation plantilla:
cdk diff --template ~/stacks/MyStack.old MyStack
Importe recursos existentes a una pila
Puede utilizar el cdk import comando para poner los recursos bajo la administración de CloudFormation para un particular AWS pila de CDK. Esto es útil si está migrando a AWS CDK, o estás moviendo recursos entre pilas o cambiando su identificador lógico. cdk import usos CloudFormation importaciones de recursos. Consulte la lista de recursos que se pueden importar aquí.
Para importar un recurso existente a un AWS Para la pila de CDK, siga los pasos siguientes:
-
Asegúrese de que el recurso no esté siendo administrado actualmente por ningún otro CloudFormation pila. Si es así, primero configure la política de eliminación como
RemovalPolicy.RETAINen la pila en la que se encuentre 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 ya no sea administrado por CloudFormation pero no lo elimina. -
Ejecuta un
cdk diffpara asegurarse de que no hay cambios pendientes en el AWS La pila de CDK a la que deseas importar los recursos. Los únicos cambios que se permiten en una operación de “importación” son la incorporación de los recursos nuevos que desee importar. -
Agregue constructos para los recursos que desee importar a la pila. Por ejemplo, si quieres importar un bucket de Amazon S3, agregue algo como
new s3.Bucket(this, 'ImportedS3Bucket', {});. No modifique ningún otro recurso.También debe asegurarse de modelar de manera exacta el estado actual del recurso en la definición. Para ver el ejemplo del depósito, asegúrese de incluir AWS Las claves de KMS, las políticas del ciclo de vida y cualquier otra información relevante sobre el bucket. 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 bucket físico. Por lo general, recomendamos no incluir los nombres de los recursos en su AWS Definiciones de recursos del CDK 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 su modelo, la CLI le pedirá que pase los nombres reales de los recursos que está importando. Después de esto, comienza la importación.
-
¿Cuándo
cdk importinforma que se ha realizado correctamente, el recurso ahora está gestionado por AWS CDK y CloudFormation. Cualquier cambio posterior que realice en las propiedades de los recursos de su AWS La configuración de construcción de la aplicación CDK se aplicará en la próxima implementación. -
Para confirmar que la definición del recurso en su AWS La aplicación CDK coincide con el estado actual del recurso, puedes iniciar una CloudFormation operación de detección de desviaciones.
Actualmente, esta característica no admite la importación de recursos a pilas anidadas.
Configuración (cdk.json)
Los valores predeterminados de muchas marcas de la línea de comandos de la CLI de CDK se pueden almacenar en el archivo cdk.json de un proyecto o en el archivo .cdk.json del directorio de usuarios. A continuación, se incluye una referencia alfabética a los ajustes de configuración admitidos.
| Key | Notas | Opción de la CLI de CDK |
|---|---|---|
|
|
El comando que ejecuta la aplicación de CDK. |
|
|
|
Si se configura como |
|
|
|
Anula el ID del AWS La clave de KMS utilizada para cifrar el bucket de implementación de Amazon S3. |
|
|
|
El comando que compila o crea la aplicación de CDK antes de la síntesis. No se permite en |
|
|
|
El comando para iniciar un navegador web para el subcomando |
|
|
|
Consulte Los valores de contexto y el AWS CDK. |
|
|
|
Si se configura como |
|
|
|
El lenguaje que se utilizará para iniciar proyectos nuevos. |
|
|
|
Si se configura como |
|
|
|
Si se configura como |
|
|
|
El nombre del directorio en el que se emitirá el conjunto de nubes sintetizado ( |
|
|
|
El archivo al que AWS CloudFormation las salidas de las pilas desplegadas se escribirán (en |
|
|
|
Si se configura como |
|
|
|
Matriz JSON que especifica los nombres de los paquetes o las rutas locales de los paquetes que amplían el CDK |
|
|
|
Nombre del valor predeterminado AWS perfil utilizado para especificar las credenciales de la región y la cuenta. |
|
|
|
Si se establece en |
|
|
|
Nivel de aprobación predeterminado para los cambios que requieren aprobación manual. Consulte Apruebe los cambios relacionados con la seguridad. |
|
|
|
Si se configura como |
|
|
|
Si |
|
|
|
Objeto |
|
|
|
El nombre del bucket de Amazon S3 utilizado para implementar activos como las funciones de Lambda y las imágenes de contenedores (consulte Arranca tu AWS entorno). |
|
|
|
El nombre de la pila de arranque (consulte Arranca tu AWS entorno). |
|
|
|
Si se configura como |
|
|
|
El objeto JSON contiene las claves |
|