Qual è il AWS CDK? - 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à.

Qual è il AWS CDK?

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

AWS CDK Si compone di due parti principali:

  • AWS CDK Construct Library: una raccolta di parti di codice modulari e riutilizzabili prescritte, chiamate costrutti, che è possibile utilizzare, modificare e integrare per sviluppare rapidamente l'infrastruttura. L'obiettivo di AWS CDK Construct Library è ridurre la complessità richiesta per definire e integrare i AWS servizi durante la creazione di applicazioni. AWS

  • AWS CDK Command Line Interface (AWS CDKCLI): uno strumento a riga di comando per interagire con CDK le app. Utilizzalo CDK CLI per creare, gestire e distribuire i tuoi AWS CDK progetti. CDKCLIViene anche chiamato CDK Toolkit.

I AWS CDK supportiTypeScript,JavaScript,Python, JavaC#/.Net, eGo. Puoi utilizzare uno qualsiasi di questi linguaggi di programmazione supportati per definire componenti cloud riutilizzabili noti come costrutti. Li componi insieme in pile e app. Quindi, distribuisci CDK le tue applicazioni per AWS CloudFormation fornire o aggiornare le tue risorse.

AWS CDK app structure with stacks, constructs, and deployment to CloudFormation.

Vantaggi della AWS CDK

Utilizzalo 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:

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 nell'Introduzione a DevOps on AWS Whitepaper.

Con 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ù robusta.

Definisci la tua infrastruttura cloud utilizzando linguaggi di programmazione generici

Con AWS CDK, puoi utilizzare uno dei seguenti linguaggi di programmazione per definire la tua infrastruttura cloud:TypeScript,,JavaScript, Python JavaC#/.Net, e. Go Scegli il tuo linguaggio preferito e usa elementi di programmazione come parametri, condizionali, loop, 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 ambiente preferito IDE (Integrated Development Environment), come l'evidenziazione della sintassi e il completamento intelligente del codice.

Code snippet showing AWS CDK setup for ECS cluster with VPC and Fargate service configuration.
Implementa l'infrastruttura tramite AWS CloudFormation

AWS CDK si integra con AWS CloudFormation per implementare e fornire l'infrastruttura su. AWS AWS CloudFormation è un servizio gestito Servizio AWS che offre un supporto completo per le configurazioni di risorse e proprietà per i servizi di provisioning su. AWS Con AWS CloudFormation, è possibile eseguire le 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. AWS CDK

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 AWS CDK

Di seguito è riportato un esempio di utilizzo della libreria AWS CDK Constructs per creare un servizio Amazon Elastic Container Service (AmazonECS) con tipo di AWS Fargate (Fargate) avvio. Per maggiori dettagli su questo esempio, consultaEsempio: creare un AWS Fargate servizio utilizzando AWS CDK.

TypeScript
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 }); } }
JavaScript
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 }
Python
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
Java
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(); } }
C#
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, }); } }
Go
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' AWS CDK app produce più di 50 risorse dei seguenti tipi.

AWS CDK features

Il repository AWS CDKGitHub

Per il AWS CDKGitHub repository ufficiale, vedi aws-cdk. Qui puoi segnalare problemi, visualizzare la nostra licenza, tenere traccia dei rilasci e altro ancora.

Poiché AWS CDK è open source, il team ti incoraggia a contribuire per renderlo uno strumento ancora migliore. Per i dettagli, consulta Contributing to. AWS Cloud Development Kit (AWS CDK)

Il AWS CDK API riferimento

La AWS CDK Construct Library consente APIs di definire l'CDKapplicazione e aggiungere CDK costrutti all'applicazione. Per ulteriori informazioni, consultate il Reference.AWS CDK API

Il modello di programmazione Construct

Il Construct Programming Model (CPM) estende i concetti alla base di Construct Programming Model () AWS CDK in altri domini. Altri strumenti che utilizzano il CPM includono:

Il Construct Hub

Construct Hub è un registro online in cui è possibile trovare, pubblicare e condividere librerie open source AWS CDK .

Passaggi successivi

Per iniziare a usare il AWS CDK, consulta. Iniziare con AWS CDK

Ulteriori informazioni

Per continuare a conoscere il AWS CDK, consulta quanto segue:

Per ulteriori informazioni sugli argomenti correlati a AWS CDK, consulta quanto segue:

  • AWS CloudFormation concetti: poiché AWS CDK è progettato per funzionare AWS CloudFormation, ti consigliamo di apprendere e comprendere AWS CloudFormation i concetti chiave.

  • AWS Glossario: definizioni dei termini chiave utilizzati in tutto AWS.

Per ulteriori informazioni sugli strumenti correlati AWS CDK che possono essere utilizzati per semplificare lo sviluppo e la distribuzione di applicazioni serverless, consulta quanto segue:

  • AWS Serverless Application Model— Uno strumento di sviluppo open source che semplifica e migliora l'esperienza di creazione ed esecuzione di applicazioni serverless su. AWS

  • AWSChalice— Un framework per la scrittura di app serverless. Python