AWS CDK proyectos - AWS Cloud Development Kit (AWS CDK) v2

Esta es la guía para AWS CDK desarrolladores de la versión 2. La CDK versión anterior entró en mantenimiento el 1 de junio de 2022 y finalizó el soporte el 1 de junio de 2023.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

AWS CDK 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 el cdk 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 el cdk 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 el cdk 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 arequirements.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 el cdk 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 el cdk 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 el cdk 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, }) }