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

Questa è la guida per sviluppatori AWS CDK v2. La versione precedente della CDK versione 1 è entrata in manutenzione il 1° giugno 2022 e ha terminato il supporto il 1° giugno 2023.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

AWS CDK progetti

Un AWS Cloud Development Kit (AWS CDK) progetto rappresenta i file e le cartelle che contengono il CDK codice. I contenuti varieranno in base al linguaggio di programmazione.

È possibile creare il AWS CDK progetto manualmente o con il AWS CDK comando Command Line Interface (AWS CDK CLI)cdk init. In questo argomento, faremo riferimento alla struttura del progetto e alle convenzioni di denominazione di file e cartelle create da. AWS CDK CLI Puoi personalizzare e organizzare i tuoi CDK progetti in base alle tue esigenze.

Nota

La struttura del progetto creata da AWS CDK CLI può variare tra le versioni nel tempo.

File e cartelle universali

.git

Se l'hai git installato, inizializza AWS CDK CLI automaticamente un Git repository per il tuo progetto. La .git directory contiene informazioni sul repository.

.gitignore

File di testo utilizzato da Git per specificare file e cartelle da ignorare.

README.md

File di testo che fornisce indicazioni di base e informazioni importanti per la gestione AWS CDK del progetto. Se necessario, modificate questo file per documentare informazioni importanti relative al CDK progetto.

cdk.json

File di configurazione per AWS CDK. Questo file fornisce istruzioni AWS CDK CLI su come eseguire l'app.

File e cartelle specifici della lingua

I file e le cartelle seguenti sono unici per ogni linguaggio di programmazione supportato.

TypeScript

Di seguito è riportato un esempio di progetto creato nella my-cdk-ts-project directory utilizzando il 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

File che specifica quali file e cartelle ignorare quando si pubblica un pacchetto nel registro. npm Questo file è simile a.gitignore, ma è specifico per npm i pacchetti.

bin/.ts my-cdk-ts-project

Il file dell'applicazione definisce l'appCDK. CDKi progetti possono contenere uno o più file dell'applicazione. I file dell'applicazione vengono memorizzati nella bin cartella.

Di seguito è riportato un esempio di file di applicazione di base che definisce un'CDKapp:

#!/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

File di configurazione per. Jest Jestè un framework JavaScript di test popolare.

lib/ my-cdk-ts-project -stack.ts

Il file stack definisce lo stack. CDK All'interno dello stack, definisci AWS risorse e proprietà utilizzando costrutti.

Di seguito è riportato un esempio di un file stack di base che definisce uno stack: CDK

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

Cartella comune nei Node.js progetti che contengono dipendenze per il progetto.

package-lock.json

File di metadati che funziona con il file per gestire le versioni delle dipendenzepackage.json.

pacchetto.json

File di metadati comunemente usato nei progetti. Node.js Questo file contiene informazioni sul progetto, come il nome del CDK progetto, le definizioni degli script, le dipendenze e altre informazioni di importazione a livello di progetto.

test/ .test.ts my-cdk-ts-project

Viene creata una cartella di test per organizzare i test del progetto. CDK Viene inoltre creato un file di test di esempio.

È possibile scrivere test TypeScript e utilizzarli Jest per compilare il TypeScript codice prima di eseguire i test.

tsconfig.json

File di configurazione utilizzato nei TypeScript progetti che specifica le opzioni del compilatore e le impostazioni del progetto.

JavaScript

Di seguito è riportato un esempio di progetto creato nella my-cdk-js-project directory utilizzando il 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

File che specifica quali file e cartelle ignorare quando si pubblica un pacchetto nel registro. npm Questo file è simile a.gitignore, ma è specifico per npm i pacchetti.

bin/.js my-cdk-js-project

Il file dell'applicazione definisce la tua CDK app. CDKi progetti possono contenere uno o più file dell'applicazione. I file dell'applicazione vengono memorizzati nella bin cartella.

Di seguito è riportato un esempio di file di applicazione di base che definisce un'CDKapp:

#!/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

File di configurazione per. Jest Jestè un framework JavaScript di test popolare.

lib/ -stack.js my-cdk-js-project

Il file stack definisce lo stack. CDK All'interno dello stack, definisci AWS risorse e proprietà utilizzando costrutti.

Di seguito è riportato un esempio di un file stack di base che definisce uno stack: CDK

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

Cartella comune nei Node.js progetti che contengono dipendenze per il progetto.

package-lock.json

File di metadati che funziona con il file per gestire le versioni delle dipendenzepackage.json.

pacchetto.json

File di metadati comunemente usato nei progetti. Node.js Questo file contiene informazioni sul progetto, come il nome del CDK progetto, le definizioni degli script, le dipendenze e altre informazioni di importazione a livello di progetto.

test/ .test.js my-cdk-js-project

Viene creata una cartella di test per organizzare i test del progetto. CDK Viene inoltre creato un file di test di esempio.

È possibile scrivere test JavaScript e utilizzarli Jest per compilare il JavaScript codice prima di eseguire i test.

Python

Di seguito è riportato un esempio di progetto creato nella my-cdk-py-project directory utilizzando il 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 automaticamente un ambiente virtuale per il tuo progetto. La .venv directory si riferisce a questo ambiente virtuale.

app.py

Il file dell'applicazione definisce l'CDKapp. CDKi progetti possono contenere uno o più file dell'applicazione.

Di seguito è riportato un esempio di file di applicazione di base che definisce un'CDKapp:

#!/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

Directory che contiene i file dello stack. Qui CDK CLI crea quanto segue:

  • __init__.py — Un file di definizione Python del pacchetto vuoto.

  • my_cdk_py_project— File che definisce lo CDK stack. Quindi definisci AWS risorse e proprietà all'interno dello stack utilizzando i costrutti.

Di seguito è riportato un esempio di file stack:

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

File simile arequirements.txt, ma utilizzato per gestire le dipendenze specificamente per scopi di sviluppo piuttosto che di produzione.

requirements.txt

File comune utilizzato nei Python progetti per specificare e gestire le dipendenze dei progetti.

source.bat

Il file Batch viene utilizzato per configurare l'ambiente Python virtuale. Windows

test

Directory che contiene i test per il tuo CDK progetto.

Di seguito è riportato un esempio di test unitario:

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

Di seguito è riportato un esempio di progetto creato nella my-cdk-java-project directory utilizzando il cdk init --language java comando:

my-cdk-java-project ├── .git ├── .gitignore ├── README.md ├── cdk.json ├── pom.xml └── src ├── main └── test
pom.xml

File che contiene informazioni di configurazione e metadati relativi al CDK progetto. Questo file fa parte di. Maven

src/main

Directory contenente i file dell'applicazione e dello stack.

Di seguito è riportato un esempio di file di applicazione:

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(); } }

Di seguito è riportato un esempio di file stack:

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

Directory contenente i file di test. Di seguito è riportato un esempio:

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#

Di seguito è riportato un esempio di progetto creato nella my-cdk-csharp-project directory utilizzando il cdk init --language csharp comando:

my-cdk-csharp-project ├── .git ├── .gitignore ├── README.md ├── cdk.json └── src ├── MyCdkCsharpProject └── MyCdkCsharpProject.sln
src/ MyCdkCsharpProject

Directory contenente i file dell'applicazione e dello stack.

Di seguito è riportato un esempio di file di applicazione:

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(); } } }

Di seguito è riportato un esempio di file stack:

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 } } }

Questa directory contiene anche quanto segue:

  • GlobalSuppressions.cs— File utilizzato per sopprimere avvisi o errori specifici del compilatore in tutto il progetto.

  • .csproj— file XML basato utilizzato per definire le impostazioni del progetto, le dipendenze e creare configurazioni.

src/ .sln MyCdkCsharpProject

Microsoft Visual Studio Solution Fileutilizzato per organizzare e gestire progetti correlati.

Go

Di seguito è riportato un esempio di progetto creato nella my-cdk-go-project directory utilizzando il 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

File che contiene informazioni sul modulo e viene utilizzato per gestire le dipendenze e il controllo delle versioni del progetto. Go

my-cdk-go-project.vai

File che definisce l'CDKapplicazione e gli stack.

Di seguito è riportato un esempio:

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

File che definisce un test di esempio.

Di seguito è riportato un esempio:

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, }) }