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 proyectos
Un AWS Cloud Development Kit (AWS CDK) proyecto representa los archivos y carpetas que contienen el CDK código. El contenido variará en función del lenguaje de programación.
Puede crear su AWS CDK proyecto manualmente o con el AWS CDK comando Command Line Interface (AWS CDK CLI)cdk init
. En este tema, nos referiremos a la estructura del proyecto y a las convenciones de nomenclatura de los archivos y carpetas creados por el AWS CDKCLI. Puede personalizar y organizar sus CDK proyectos para que se adapten a sus necesidades.
nota
La estructura del proyecto creada por el AWS CDK CLI puede variar de una versión a otra a lo largo del tiempo.
Archivos y carpetas universales
- .git
-
Si lo ha
git
instalado, inicializa AWS CDK CLI automáticamente un Git repositorio para su proyecto. El.git
directorio contiene información sobre el repositorio. - .gitignore
-
Archivo de texto utilizado por Git para especificar los archivos y carpetas que se deben ignorar.
- README.md
-
Archivo de texto que proporciona orientación básica e información importante para gestionar el AWS CDK proyecto. Modifique este archivo según sea necesario para documentar la información importante relacionada con su CDK proyecto.
- cdk.json
-
Archivo de configuración para AWS CDK. Este archivo proporciona instrucciones AWS CDK CLI sobre cómo ejecutar su aplicación.
Archivos y carpetas para idiomas específicos
Los siguientes archivos y carpetas son exclusivos de cada lenguaje de programación compatible.
- TypeScript
-
El siguiente es un ejemplo de proyecto creado en el
my-cdk-ts-project
directorio mediante elcdk init --language typescript
comando:my-cdk-ts-project ├── .git ├── .gitignore ├── .npmignore ├── README.md ├── bin │ └── my-cdk-ts-project.ts ├── cdk.json ├── jest.config.js ├── lib │ └── my-cdk-ts-project-stack.ts ├── node_modules ├── package-lock.json ├── package.json ├── test │ └── my-cdk-ts-project.test.ts └── tsconfig.json
- .npmignore
-
Archivo que especifica qué archivos y carpetas se deben ignorar al publicar un paquete en el registro. npm Este archivo es similar a los npm paquetes
.gitignore
, pero es específico de ellos. - bin/ .ts my-cdk-ts-project
-
El archivo de la aplicación define tu CDK aplicación. CDKlos proyectos pueden contener uno o más archivos de aplicación. Los archivos de la aplicación se almacenan en la
bin
carpeta.El siguiente es un ejemplo de un archivo de aplicación básico que define una CDK aplicación:
#!/usr/bin/env node import 'source-map-support/register'; import * as cdk from 'aws-cdk-lib'; import { MyCdkTsProjectStack } from '../lib/my-cdk-ts-project-stack'; const app = new cdk.App(); new MyCdkTsProjectStack(app, 'MyCdkTsProjectStack');
- jest.config.js
-
Archivo de configuración para. Jest Jestes un marco JavaScript de pruebas popular.
- lib/ -stack.ts my-cdk-ts-project
-
El archivo de pila define tu pila. CDK Dentro de la pila, se definen AWS los recursos y las propiedades mediante construcciones.
El siguiente es un ejemplo de un archivo de pila básico que define una CDK pila:
import * as cdk from 'aws-cdk-lib'; import { Construct } from 'constructs'; export class MyCdkTsProjectStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // code that defines your resources and properties go here } }
- node_modules
-
Carpeta común en Node.js los proyectos que contiene dependencias para su proyecto.
- package-lock.json
-
Archivo de metadatos que funciona con el
package.json
archivo para administrar las versiones de las dependencias. - paquete.json
-
Archivo de metadatos que se utiliza habitualmente en Node.js los proyectos. Este archivo contiene información sobre el CDK proyecto, como el nombre del proyecto, las definiciones de los scripts, las dependencias y otra información de importación a nivel del proyecto.
- my-cdk-ts-projecttest/ .test.ts
-
Se crea una carpeta de pruebas para organizar las pruebas del proyecto. CDK También se crea un archivo de prueba de muestra.
Puede escribir pruebas TypeScript y utilizarlas Jest para compilar el TypeScript código antes de ejecutarlas.
- tsconfig.json
-
Archivo de configuración utilizado en TypeScript proyectos que especifica las opciones del compilador y la configuración del proyecto.
- JavaScript
-
A continuación se muestra un ejemplo de proyecto creado en el
my-cdk-js-project
directorio mediante elcdk init --language javascript
comando:my-cdk-js-project ├── .git ├── .gitignore ├── .npmignore ├── README.md ├── bin │ └── my-cdk-js-project.js ├── cdk.json ├── jest.config.js ├── lib │ └── my-cdk-js-project-stack.js ├── node_modules ├── package-lock.json ├── package.json └── test └── my-cdk-js-project.test.js
- .npmignore
-
Archivo que especifica qué archivos y carpetas se deben ignorar al publicar un paquete en el registro. npm Este archivo es similar a los npm paquetes
.gitignore
, pero es específico de ellos. - bin/ .js my-cdk-js-project
-
El archivo de la aplicación define tu CDK aplicación. CDKlos proyectos pueden contener uno o más archivos de aplicación. Los archivos de la aplicación se almacenan en la
bin
carpeta.El siguiente es un ejemplo de un archivo de aplicación básico que define una CDK aplicación:
#!/usr/bin/env node const cdk = require('aws-cdk-lib'); const { MyCdkJsProjectStack } = require('../lib/my-cdk-js-project-stack'); const app = new cdk.App(); new MyCdkJsProjectStack(app, 'MyCdkJsProjectStack');
- jest.config.js
-
Archivo de configuración para. Jest Jestes un marco JavaScript de pruebas popular.
- lib/ -stack.js my-cdk-js-project
-
El archivo de pila define tu CDK pila. Dentro de la pila, se definen AWS los recursos y las propiedades mediante construcciones.
El siguiente es un ejemplo de un archivo de pila básico que define una CDK pila:
const { Stack, Duration } = require('aws-cdk-lib'); class MyCdkJsProjectStack extends Stack { constructor(scope, id, props) { super(scope, id, props); // code that defines your resources and properties go here } } module.exports = { MyCdkJsProjectStack }
- node_modules
-
Carpeta común en Node.js los proyectos que contiene dependencias para su proyecto.
- package-lock.json
-
Archivo de metadatos que funciona con el
package.json
archivo para administrar las versiones de las dependencias. - paquete.json
-
Archivo de metadatos que se utiliza habitualmente en Node.js los proyectos. Este archivo contiene información sobre el CDK proyecto, como el nombre del proyecto, las definiciones de los scripts, las dependencias y otra información de importación a nivel del proyecto.
- my-cdk-js-projecttest/ .test.js
-
Se crea una carpeta de pruebas para organizar las pruebas de su proyecto. CDK También se crea un archivo de prueba de muestra.
Puede escribir pruebas JavaScript y utilizarlas Jest para compilar el JavaScript código antes de ejecutarlas.
- Python
-
El siguiente es un ejemplo de proyecto creado en el
my-cdk-py-project
directorio mediante elcdk init --language python
comando:my-cdk-py-project ├── .git ├── .gitignore ├── .venv ├── README.md ├── app.py ├── cdk.json ├── my_cdk_py_project │ ├── __init__.py │ └── my_cdk_py_project_stack.py ├── requirements-dev.txt ├── requirements.txt ├── source.bat └── tests ├── __init__.py └── unit
- .venv
-
Crea CDK CLI automáticamente un entorno virtual para su proyecto. El
.venv
directorio hace referencia a este entorno virtual. - app.py
-
El archivo de la aplicación define CDK la aplicación. CDKlos proyectos pueden contener uno o más archivos de aplicación.
El siguiente es un ejemplo de un archivo de aplicación básico que define una CDK aplicación:
#!/usr/bin/env python3 import os import aws_cdk as cdk from my_cdk_py_project.my_cdk_py_project_stack import MyCdkPyProjectStack app = cdk.App() MyCdkPyProjectStack(app, "MyCdkPyProjectStack") app.synth()
- my_cdk_py_project
-
Directorio que contiene tus archivos de pila. Aquí CDK CLI crea lo siguiente:
-
__init__.py
— Un fichero de definición de Python paquete vacío. -
my_cdk_py_project
— Archivo que define tu CDK pila. A continuación, defina AWS los recursos y las propiedades dentro de la pila mediante construcciones.
El siguiente es un ejemplo de un archivo apilado:
from aws_cdk import Stack from constructs import Construct class MyCdkPyProjectStack(Stack): def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: super().__init__(scope, construct_id, **kwargs) # code that defines your resources and properties go here
-
- requirements-dev.txt
-
Archivo similar a
requirements.txt
, pero utilizado para gestionar las dependencias específicamente con fines de desarrollo y no de producción. - requirements.txt
-
Archivo común utilizado en Python los proyectos para especificar y gestionar las dependencias del proyecto.
- source.bat
-
El archivo Batch para Windows eso se usa para configurar el entorno Python virtual.
- exámenes
-
Directorio que contiene las pruebas de su CDK proyecto.
El siguiente es un ejemplo de una prueba unitaria:
import aws_cdk as core import aws_cdk.assertions as assertions from my_cdk_py_project.my_cdk_py_project_stack import MyCdkPyProjectStack def test_sqs_queue_created(): app = core.App() stack = MyCdkPyProjectStack(app, "my-cdk-py-project") template = assertions.Template.from_stack(stack) template.has_resource_properties("AWS::SQS::Queue", { "VisibilityTimeout": 300 })
- Java
-
El siguiente es un ejemplo de proyecto creado en el
my-cdk-java-project
directorio mediante elcdk init --language java
comando:my-cdk-java-project ├── .git ├── .gitignore ├── README.md ├── cdk.json ├── pom.xml └── src ├── main └── test
- pom.xml
-
Archivo que contiene información de configuración y metadatos sobre el CDK proyecto. Este archivo forma parte deMaven.
- src/main
-
Directorio que contiene los archivos de la aplicación y de la pila.
El siguiente es un ejemplo de archivo de aplicación:
package com.myorg; import software.amazon.awscdk.App; import software.amazon.awscdk.Environment; import software.amazon.awscdk.StackProps; import java.util.Arrays; public class MyCdkJavaProjectApp { public static void main(final String[] args) { App app = new App(); new MyCdkJavaProjectStack(app, "MyCdkJavaProjectStack", StackProps.builder() .build()); app.synth(); } }
El siguiente es un ejemplo de archivo de pila:
package com.myorg; import software.constructs.Construct; import software.amazon.awscdk.Stack; import software.amazon.awscdk.StackProps; public class MyCdkJavaProjectStack extends Stack { public MyCdkJavaProjectStack(final Construct scope, final String id) { this(scope, id, null); } public MyCdkJavaProjectStack(final Construct scope, final String id, final StackProps props) { super(scope, id, props); // code that defines your resources and properties go here } }
- src/test
-
Directorio que contiene sus archivos de prueba. A continuación, se muestra un ejemplo:
package com.myorg; import software.amazon.awscdk.App; import software.amazon.awscdk.assertions.Template; import java.io.IOException; import java.util.HashMap; import org.junit.jupiter.api.Test; public class MyCdkJavaProjectTest { @Test public void testStack() throws IOException { App app = new App(); MyCdkJavaProjectStack stack = new MyCdkJavaProjectStack(app, "test"); Template template = Template.fromStack(stack); template.hasResourceProperties("AWS::SQS::Queue", new HashMap<String, Number>() {{ put("VisibilityTimeout", 300); }}); } }
- C#
-
El siguiente es un ejemplo de proyecto creado en el
my-cdk-csharp-project
directorio mediante elcdk init --language csharp
comando:my-cdk-csharp-project ├── .git ├── .gitignore ├── README.md ├── cdk.json └── src ├── MyCdkCsharpProject └── MyCdkCsharpProject.sln
- src/ MyCdkCsharpProject
-
Directorio que contiene los archivos de la aplicación y de la pila.
El siguiente es un ejemplo de archivo de aplicación:
using Amazon.CDK; using System; using System.Collections.Generic; using System.Linq; namespace MyCdkCsharpProject { sealed class Program { public static void Main(string[] args) { var app = new App(); new MyCdkCsharpProjectStack(app, "MyCdkCsharpProjectStack", new StackProps{}); app.Synth(); } } }
El siguiente es un ejemplo de archivo de pila:
using Amazon.CDK; using Constructs; namespace MyCdkCsharpProject { public class MyCdkCsharpProjectStack : Stack { internal MyCdkCsharpProjectStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props) { // code that defines your resources and properties go here } } }
Este directorio también contiene lo siguiente:
-
GlobalSuppressions.cs
— Archivo utilizado para suprimir advertencias o errores específicos del compilador en todo el proyecto. -
.csproj
— archivo XML basado en — que se utiliza para definir los ajustes del proyecto, las dependencias y las configuraciones de compilación.
-
- src/ .sln MyCdkCsharpProject
-
Microsoft Visual Studio Solution Filese utiliza para organizar y gestionar proyectos relacionados.
- Go
-
El siguiente es un ejemplo de proyecto creado en el
my-cdk-go-project
directorio mediante elcdk init --language go
comando:my-cdk-go-project ├── .git ├── .gitignore ├── README.md ├── cdk.json ├── go.mod ├── my-cdk-go-project.go └── my-cdk-go-project_test.go
- go.mod
-
Archivo que contiene información del módulo y que se utiliza para gestionar las dependencias y el control de versiones del proyecto. Go
- my-cdk-go-project.go
-
Archivo que define tu CDK aplicación y tus pilas.
A continuación, se muestra un ejemplo:
package main import ( "github.com/aws/aws-cdk-go/awscdk/v2" "github.com/aws/constructs-go/constructs/v10" "github.com/aws/jsii-runtime-go" ) type MyCdkGoProjectStackProps struct { awscdk.StackProps } func NewMyCdkGoProjectStack(scope constructs.Construct, id string, props *MyCdkGoProjectStackProps) awscdk.Stack { var sprops awscdk.StackProps if props != nil { sprops = props.StackProps } stack := awscdk.NewStack(scope, &id, &sprops) // The code that defines your resources and properties go here return stack } func main() { defer jsii.Close() app := awscdk.NewApp(nil) NewMyCdkGoProjectStack(app, "MyCdkGoProjectStack", &MyCdkGoProjectStackProps{ awscdk.StackProps{ Env: env(), }, }) app.Synth(nil) } func env() *awscdk.Environment { return nil }
- my-cdk-go-project_test.go
-
Archivo que define un ejemplo de prueba.
A continuación, se muestra un ejemplo:
package main import ( "testing" "github.com/aws/aws-cdk-go/awscdk/v2" "github.com/aws/aws-cdk-go/awscdk/v2/assertions" "github.com/aws/jsii-runtime-go" ) func TestMyCdkGoProjectStack(t *testing.T) { // GIVEN app := awscdk.NewApp(nil) // WHEN stack := NewMyCdkGoProjectStack(app, "MyStack", nil) // THEN template := assertions.Template_FromStack(stack, nil) template.HasResourceProperties(jsii.String("AWS::SQS::Queue"), map[string]interface{}{ "VisibilityTimeout": 300, }) }