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.
Aplicaciones de AWS CDK
La aplicación o app de AWS Cloud Development Kit (AWS CDK) es una colección de una o más pilas de CDK. Las pilas son colecciones de uno o más constructos que definen los recursos y las propiedades de AWS. Por lo tanto, la agrupación general de sus pilas y constructos se conoce como una aplicación de CDK.
Cómo crear una aplicación de CDK
Para crear una aplicación, define una instancia de aplicación en el archivo de aplicación de su proyecto. Para ello, importe y utilice el constructo App
de la Biblioteca de constructos de AWS. El constructo App
no requiere ningún argumento para la inicialización. Es el único constructo que se puede utilizar como raíz.
Las clases App
y Stack
de la Biblioteca de constructos de AWS son constructos únicos. En comparación con otros constructos, no configuran los recursos de AWS por sí mismas. En cambio, se utilizan para proporcionar contexto para los otros constructos. Todos los constructos que representan recursos de AWS deben definirse directa o indirectamente en el ámbito de un constructo Stack
. Los constructos Stack
se definen en el ámbito de un constructo App
.
Luego, las aplicaciones se sintetizan para crear plantillas de AWS CloudFormation para sus pilas. A continuación, se muestra un ejemplo:
Las pilas de una sola aplicación pueden hacer referencia a los recursos y las propiedades de las demás con facilidad. AWS CDK deduce las dependencias entre las pilas para poder implementarlas en el orden correcto. Puede implementar cualquiera de las pilas de una aplicación o todas ellas con un solo comando cdk deploy
.
El árbol de constructos
Los constructos se definen dentro de otros constructos mediante el argumento scope
que se pasa a cada constructo, con la clase App
como raíz. De esta forma, una aplicación de AWS CDK define una jerarquía de constructos conocida como árbol de constructos.
La raíz de este árbol es su aplicación, que es una instancia de la clase App
. Dentro de la aplicación, se crean instancias de una o más pilas. Dentro de las pilas, se crean instancias de los constructos, que, a su vez, pueden crear instancias de recursos u otros constructos, y así sucesivamente en el resto del árbol.
Los constructos siempre se definen de forma explícita en el ámbito de otro constructo, lo cual crea relaciones entre los constructos. Casi siempre, debe pasar this
(en Python, self
) como el ámbito, lo que indica que el nuevo constructo es un elemento secundario del constructo actual. El patrón previsto consiste en derivar su constructo a partir de Construct
y, luego, crear una instancia de los constructos que utiliza en su constructor.
Pasar el ámbito de forma explícita permite que cada constructo se agregue a sí mismo al árbol. Este comportamiento se limita exclusivamente a la clase base Construct
. Funciona de la misma manera en todos los lenguajes que admite el AWS CDK y no requiere más personalización.
importante
Técnicamente, es posible pasar un ámbito distinto a this
cuando se genere un constructo. Puede agregar constructos en cualquier parte del árbol, incluso en otra pila de la misma aplicación. Por ejemplo, puede escribir una función de estilo mixto que agregue constructos a un ámbito que se pasó como argumento. La dificultad práctica en este caso es que no es fácil garantizar que los ID que elija para sus constructos sean únicos en el ámbito de otra persona. Esta práctica también hace que sea más difícil entender, mantener y reutilizar el código. Por lo tanto, se recomienda utilizar la estructura general del árbol de constructos.
AWS CDK utiliza los ID de todos los constructos en la ruta desde la raíz del árbol hasta cada constructo secundario para generar los ID únicos que necesita AWS CloudFormation. Este enfoque significa que los ID de los constructos solo deben ser únicos en su ámbito, y no dentro de toda la pila, como en el caso de AWS CloudFormation original. Sin embargo, si mueve un constructo a un ámbito diferente, se cambia el ID exclusivo de la pila que se generó, y AWS CloudFormation no lo considerará el mismo recurso.
El árbol de constructos es independiente de los constructos que defina en el código de AWS CDK. Sin embargo, se puede acceder a él con el atributo node
de cualquier constructo, que es una referencia al nodo que representa ese constructo en el árbol. Cada nodo es una instancia Node
, cuyos atributos proporcionan acceso a la raíz del árbol y a los ámbitos principales y secundarios del nodo.
-
node.children
: los elementos secundarios del constructo. -
node.id
: el identificador del constructo dentro de su ámbito. -
node.path
: la ruta completa del constructo, incluidos los ID de todos los elementos principales. -
node.root
: la raíz del árbol de constructos (la aplicación). -
node.scope
: el ámbito (principal) del constructo o indefinido si el nodo es la raíz. -
node.scopes
: todos los elementos principales del constructo, hasta la raíz. -
node.uniqueId
: el identificador alfanumérico único de este constructo dentro del árbol (se genera de forma predeterminada a partir denode.path
y un hash).
El árbol de constructos establece un orden implícito en el que los constructos se sintetizan en recursos de la plantilla final de AWS CloudFormation. Cuando se debe crear un recurso antes que otro, AWS CloudFormation o la Biblioteca de constructos de AWS generalmente deducen la dependencia. Luego, se aseguran de que los recursos se creen en el orden correcto.
También puede agregar una dependencia explícita entre dos nodos mediante node.addDependency()
. Para obtener más información, consulte Dependencies en la Referencia de la API de AWS CDK.
El AWS CDK proporciona una forma sencilla de visitar todos los nodos del árbol de constructos y realizar una operación en cada uno de ellos. Para obtener más información, consulte Aspectos y el AWS CDK.