

Questa è la AWS CDK v2 Developer Guide. Il vecchio CDK v1 è entrato 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à.

# Cos'è il AWS CDK?
<a name="home"></a>

Il AWS Cloud Development Kit (AWS CDK) è un framework di sviluppo software open source per definire l'infrastruttura cloud in codice e fornirla tramite. AWS CloudFormation

Il AWS CDK è composto da due parti principali:
+  **[AWS CDK Construct Library](constructs.md)**: una raccolta di parti di codice modulari e riutilizzabili già scritte, chiamate costrutti, che è possibile utilizzare, modificare e integrare per sviluppare rapidamente l'infrastruttura. L'obiettivo della AWS CDK Construct Library è ridurre la complessità richiesta per definire e integrare AWS i servizi durante la creazione di applicazioni. AWS
+  AWS CDK Toolkit: strumenti che è possibile utilizzare per gestire e interagire con le app CDK, ad esempio per eseguire la sintesi o la distribuzione. [Il CDK Toolkit è costituito da uno strumento a riga di comando ([CDK CLI](ref-cli-cmd.md)) e da una libreria programmatica (CDK Toolkit Library).](toolkit-library.md)

Il AWS CDK supporta Python TypeScript JavaScript, Java, C\$1/.Net e. Go [Puoi utilizzare uno qualsiasi di questi linguaggi di programmazione supportati per definire componenti cloud riutilizzabili noti come costrutti.](constructs.md) [Li componi insieme in [pile](stacks.md) e app.](apps.md) Quindi, distribuisci le tue applicazioni CDK AWS CloudFormation per fornire o aggiornare le tue risorse.

![\[Panoramica dell'app e dei processi CDK\]](http://docs.aws.amazon.com/it_it/cdk/v2/guide/images/AppStacks.png)


## Vantaggi del CDK AWS
<a name="home-benefits"></a>

Usa il AWS CDK per sviluppare applicazioni affidabili, scalabili ed economiche nel cloud con la notevole potenza espressiva di un linguaggio di programmazione. Questo approccio offre molti vantaggi, tra cui:<a name="home-benefits-iac"></a>

 **Sviluppa e gestisci la tua infrastruttura come codice (IaC)**   
Pratica *l'infrastruttura come codice* per creare, implementare e gestire l'infrastruttura in modo programmatico, descrittivo e dichiarativo. Con IaC, trattate l'infrastruttura nello stesso modo in cui gli sviluppatori trattano il codice. Ciò si traduce in un approccio scalabile e strutturato alla gestione dell'infrastruttura. Per ulteriori informazioni su IaC, consulta [Infrastructure as code](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html) nell'*Introduzione a DevOps on AWS * Whitepaper.  
Con il AWS CDK, puoi mettere l'infrastruttura, il codice dell'applicazione e la configurazione in un unico posto, assicurandoti di avere un sistema completo e implementabile sul cloud in ogni fase fondamentale. Utilizza le migliori pratiche di ingegneria del software come revisioni del codice, test unitari e controllo del codice sorgente per rendere la tua infrastruttura più solida.<a name="home-benefits-languages"></a>

 **Definisci la tua infrastruttura cloud utilizzando linguaggi di programmazione generici**   
Con AWS CDK, puoi utilizzare uno qualsiasi dei seguenti linguaggi di programmazione per definire la tua infrastruttura cloud: TypeScript, Python, Java JavaScript, C\$1/.Net e. Go Scegli il tuo linguaggio preferito e utilizza elementi di programmazione come parametri, condizionali, cicli, composizione ed ereditarietà per definire il risultato desiderato della tua infrastruttura.  
Utilizza lo stesso linguaggio di programmazione per definire l'infrastruttura e la logica dell'applicazione.  
Sfrutta i vantaggi dello sviluppo dell'infrastruttura nel tuo IDE (Integrated Development Environment) preferito, come l'evidenziazione della sintassi e il completamento intelligente del codice.  

![\[Frammento di codice che mostra la configurazione CDK per il cluster ECS con VPC e la configurazione del servizio Fargate.\]](http://docs.aws.amazon.com/it_it/cdk/v2/guide/images/CodeCompletion.png)
<a name="home-benefits-cfn"></a>

 **Implementa l'infrastruttura tramite AWS CloudFormation**   
 AWS CDK si integra con l'implementazione e AWS CloudFormation il provisioning dell'infrastruttura. AWS AWS CloudFormation è un AWS servizio gestito che offre un supporto completo per le configurazioni di risorse e proprietà per i servizi di fornitura su. AWS Con AWS CloudFormation, è possibile eseguire implementazioni dell'infrastruttura in modo prevedibile e ripetuto, con ripristino in caso di errore. Se lo conosci già AWS CloudFormation, non devi imparare a usare un nuovo servizio di gestione IaC quando inizi a usare il CDK. AWS <a name="home-benefits-constructs"></a>

 **Inizia a sviluppare rapidamente la tua applicazione con i costrutti**   
Sviluppa più velocemente utilizzando e condividendo componenti riutilizzabili chiamati costrutti. Usa costrutti di basso livello per definire le singole AWS CloudFormation risorse e le relative proprietà. Utilizza costrutti di alto livello per definire rapidamente componenti più grandi della tua applicazione, con impostazioni predefinite ragionevoli e sicure per AWS le tue risorse, definendo una maggiore infrastruttura con meno codice.  
Crea i tuoi costrutti personalizzati per i tuoi casi d'uso unici e condividili all'interno dell'organizzazione o anche con il pubblico.

## Esempio di CDK AWS
<a name="home-example"></a>

Di seguito è riportato un esempio di utilizzo della libreria AWS CDK Constructs per creare un servizio Amazon Elastic Container Service (Amazon ECS) con tipo di avvio Fargate. AWS Per maggiori dettagli su questo esempio, vedete [Esempio: creazione di un servizio AWS Fargate utilizzando il AWS](ecs-example.md) CDK.

**Example**  

```
export class MyEcsConstructStack extends Stack {
  constructor(scope: App, id: string, props?: StackProps) {
    super(scope, id, props);

    const vpc = new ec2.Vpc(this, "MyVpc", {
      maxAzs: 3 // Default is all AZs in region
    });

    const cluster = new ecs.Cluster(this, "MyCluster", {
      vpc: vpc
    });

    // Create a load-balanced Fargate service and make it public
    new ecs_patterns.ApplicationLoadBalancedFargateService(this, "MyFargateService", {
      cluster: cluster, // Required
      cpu: 512, // Default is 256
      desiredCount: 6, // Default is 1
      taskImageOptions: { image: ecs.ContainerImage.fromRegistry("amazon/amazon-ecs-sample") },
      memoryLimitMiB: 2048, // Default is 512
      publicLoadBalancer: true // Default is false
    });
  }
}
```

```
class MyEcsConstructStack extends Stack {
  constructor(scope, id, props) {
    super(scope, id, props);

    const vpc = new ec2.Vpc(this, "MyVpc", {
      maxAzs: 3 // Default is all AZs in region
    });

    const cluster = new ecs.Cluster(this, "MyCluster", {
      vpc: vpc
    });

    // Create a load-balanced Fargate service and make it public
    new ecs_patterns.ApplicationLoadBalancedFargateService(this, "MyFargateService", {
      cluster: cluster, // Required
      cpu: 512, // Default is 256
      desiredCount: 6, // Default is 1
      taskImageOptions: { image: ecs.ContainerImage.fromRegistry("amazon/amazon-ecs-sample") },
      memoryLimitMiB: 2048, // Default is 512
      publicLoadBalancer: true // Default is false
    });
  }
}

module.exports = { MyEcsConstructStack }
```

```
class MyEcsConstructStack(Stack):

  def __init__(self, scope: Construct, id: str, **kwargs) -> None:
    super().__init__(scope, id, **kwargs)

    vpc = ec2.Vpc(self, "MyVpc", max_azs=3)     # default is all AZs in region

    cluster = ecs.Cluster(self, "MyCluster", vpc=vpc)

    ecs_patterns.ApplicationLoadBalancedFargateService(self, "MyFargateService",
      cluster=cluster,            # Required
      cpu=512,                    # Default is 256
      desired_count=6,            # Default is 1
      task_image_options=ecs_patterns.ApplicationLoadBalancedTaskImageOptions(
          image=ecs.ContainerImage.from_registry("amazon/amazon-ecs-sample")),
      memory_limit_mib=2048,      # Default is 512
      public_load_balancer=True)  # Default is False
```

```
public class MyEcsConstructStack extends Stack {

  public MyEcsConstructStack(final Construct scope, final String id) {
    this(scope, id, null);
  }

  public MyEcsConstructStack(final Construct scope, final String id,
      StackProps props) {
    super(scope, id, props);

    Vpc vpc = Vpc.Builder.create(this, "MyVpc").maxAzs(3).build();

    Cluster cluster = Cluster.Builder.create(this, "MyCluster")
            .vpc(vpc).build();

    ApplicationLoadBalancedFargateService.Builder.create(this, "MyFargateService")
            .cluster(cluster)
            .cpu(512)
            .desiredCount(6)
            .taskImageOptions(
                    ApplicationLoadBalancedTaskImageOptions.builder()
                            .image(ContainerImage
                                    .fromRegistry("amazon/amazon-ecs-sample"))
                            .build()).memoryLimitMiB(2048)
            .publicLoadBalancer(true).build();
  }
}
```

```
public class MyEcsConstructStack : Stack
{
    public MyEcsConstructStack(Construct scope, string id, IStackProps props=null) : base(scope, id, props)
    {
        var vpc = new Vpc(this, "MyVpc", new VpcProps
        {
            MaxAzs = 3
        });

        var cluster = new Cluster(this, "MyCluster", new ClusterProps
        {
            Vpc = vpc
        });

        new ApplicationLoadBalancedFargateService(this, "MyFargateService",
            new ApplicationLoadBalancedFargateServiceProps
        {
            Cluster = cluster,
            Cpu = 512,
            DesiredCount = 6,
            TaskImageOptions = new ApplicationLoadBalancedTaskImageOptions
            {
                Image = ContainerImage.FromRegistry("amazon/amazon-ecs-sample")
            },
            MemoryLimitMiB = 2048,
            PublicLoadBalancer = true,
        });
    }
}
```

```
func NewMyEcsConstructStack(scope constructs.Construct, id string, props *MyEcsConstructStackProps) awscdk.Stack {

	var sprops awscdk.StackProps

	if props != nil {
		sprops = props.StackProps
	}

	stack := awscdk.NewStack(scope, &id, &sprops)

	vpc := awsec2.NewVpc(stack, jsii.String("MyVpc"), &awsec2.VpcProps{
		MaxAzs: jsii.Number(3), // Default is all AZs in region
	})

	cluster := awsecs.NewCluster(stack, jsii.String("MyCluster"), &awsecs.ClusterProps{
		Vpc: vpc,
	})

	awsecspatterns.NewApplicationLoadBalancedFargateService(stack, jsii.String("MyFargateService"),
		&awsecspatterns.ApplicationLoadBalancedFargateServiceProps{
			Cluster:        cluster,           // required
			Cpu:            jsii.Number(512),  // default is 256
			DesiredCount:   jsii.Number(5),    // default is 1
			MemoryLimitMiB: jsii.Number(2048), // Default is 512
			TaskImageOptions: &awsecspatterns.ApplicationLoadBalancedTaskImageOptions{
				Image: awsecs.ContainerImage_FromRegistry(jsii.String("amazon/amazon-ecs-sample"), nil),
			},
			PublicLoadBalancer: jsii.Bool(true), // Default is false
		})

	return stack

}
```

Questa classe produce un AWS CloudFormation modello di oltre 500 righe. La distribuzione dell'app AWS CDK produce più di 50 risorse dei seguenti tipi:
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-internetgateway.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-internetgateway.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-routetable.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-routetable.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet-route-table-assoc.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet-route-table-assoc.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html) 

## AWS Funzionalità CDK
<a name="home-features"></a>

### Il repository AWS CDK GitHub
<a name="home-features-repo"></a>

[Per il GitHub repository AWS CDK ufficiale, vedi aws-cdk.](https://github.com/aws/aws-cdk) [Qui puoi segnalare [problemi](https://github.com/aws/aws-cdk/issues), visualizzare la nostra [licenza](https://github.com/aws/aws-cdk/blob/main/LICENSE), tenere traccia delle release e altro ancora.](https://github.com/aws/aws-cdk/releases)

Poiché il AWS CDK è open source, il team ti incoraggia a contribuire per renderlo uno strumento ancora migliore. Per i dettagli, consulta [Contributing to the AWS Cloud Development Kit (AWS CDK).](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md)

### Il riferimento all' AWS API CDK
<a name="home-features-api"></a>

La AWS CDK Construct Library consente di APIs definire l'applicazione CDK e aggiungere costrutti CDK all'applicazione. [Per ulteriori informazioni, consultate il CDK API Reference.AWS](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html)

### Il modello di programmazione Construct
<a name="home-features-cpm"></a>

Il Construct Programming Model (CPM) estende i concetti alla base del AWS CDK a domini aggiuntivi. Altri strumenti che utilizzano il CPM includono:
+  [CDK per Terraform](https://www.terraform.io/docs/cdktf/index.html) () CDKtf
+  [CDK per](https://cdk8s.io/) Kubernetes () CDK8s
+  [Projen](https://github.com/projen/projen), per creare configurazioni di progetto

### Il Construct Hub
<a name="home-features-hub"></a>

[Construct Hub](https://constructs.dev/) è un registro online in cui è possibile trovare, pubblicare e condividere librerie CDK open source AWS .

## Passaggi successivi
<a name="home-next"></a>

Per iniziare a usare il AWS CDK, consulta [Guida introduttiva](getting-started.md) al CDK. AWS 

## Ulteriori informazioni
<a name="home-learn"></a>

Per continuare a conoscere il AWS CDK, consulta quanto segue:
+  **[Scopri i concetti fondamentali del AWS CDK: concetti](core-concepts.md)** e termini importanti per il AWS CDK.
+  **[AWS Workshop CDK — Workshop](https://cdkworkshop.com/)** pratico per imparare e utilizzare il CDK. AWS 
+  **[AWS CDK Patterns: raccolta open source di modelli](https://cdkpatterns.com/)** di architettura AWS serverless, creata per CDK da esperti. AWS AWS 
+  **[AWS Esempi di codice CDK:](https://github.com/aws-samples/aws-cdk-examples)** GitHub archivio di progetti CDK di esempio. AWS 
+  **[cdk.dev](https://cdk.dev/)** — Hub gestito dalla community per il CDK, che include uno spazio di lavoro comunitario. AWS Slack
+  **[Awesome CDK](https://github.com/kalaiser/awesome-cdk)**: GitHub repository contenente un elenco curato di progetti, guide, blog e altre risorse open source di AWS CDK.
+  **[AWS Solutions Constructs](https://aws.amazon.com/solutions/constructs/)**: modelli di configurazione IaC (Infrastructure as Code) verificati che possono essere facilmente assemblati in applicazioni pronte per la produzione.
+  **[AWS Developer Tools Blog: post di blog](https://aws.amazon.com/blogs/developer/category/developer-tools/aws-cloud-development-kit/)** filtrati per il CDK. AWS 
+  **[AWS CDK su Stack Overflow](https://stackoverflow.com/questions/tagged/aws-cdk)****: domande contrassegnate con aws-cdk attivo.** Stack Overflow
+  **[AWS Tutorial CDK per AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/sample-cdk.html)** — Tutorial sull'utilizzo del AWS CDK con l'ambiente di sviluppo Cloud9. AWS 

Per ulteriori informazioni sugli argomenti correlati al CDK, consulta quanto segue: AWS 
+  **[AWS CloudFormation concetti](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-whatis-concepts.html)**: poiché il AWS CDK è progettato per funzionare AWS CloudFormation, ti consigliamo di apprendere e comprendere i concetti chiave AWS CloudFormation .
+  **[AWS Glossario](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html)**: definizioni dei termini chiave utilizzati in tutto. AWS

Per ulteriori informazioni sugli strumenti relativi al AWS CDK che possono essere utilizzati per semplificare lo sviluppo e la distribuzione di applicazioni serverless, consulta quanto segue:
+  **[AWS Modello applicativo serverless](https://aws.amazon.com/serverless/sam/)**: uno strumento di sviluppo open source che semplifica e migliora l'esperienza di creazione ed esecuzione di applicazioni serverless su. AWS
+  **[AWS Chalice](https://github.com/aws/chalice)** — Un framework per scrivere app serverless in Python.