Was ist der AWS CDK? - AWS Cloud Development Kit (AWS CDK) v2

Dies ist der AWS CDK v2-Entwicklerhandbuch. Das ältere CDK v1 wurde am 1. Juni 2022 gewartet und der Support wurde am 1. Juni 2023 eingestellt.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Was ist der AWS CDK?

Das AWS Cloud Development Kit (AWS CDK) ist ein Open-Source-Framework für die Softwareentwicklung, mit dem die Cloud-Infrastruktur im Code definiert und bereitgestellt werden kann. AWS CloudFormation

Das AWS CDK besteht aus zwei Hauptteilen:

  • AWS CDK Construct Library — Eine Sammlung von vorgefertigten modularen und wiederverwendbaren Codeteilen, sogenannten Konstrukten, die Sie verwenden, ändern und integrieren können, um Ihre Infrastruktur schnell zu entwickeln. Das Ziel der AWS CDK Construct Library besteht darin, die Komplexität zu reduzieren, die erforderlich ist, um AWS Dienste gemeinsam zu definieren und zu integrieren, wenn darauf Anwendungen erstellt werden. AWS

  • AWS CDK Toolkit — Ein Befehlszeilentool für die Interaktion mit CDK-Apps. Verwenden Sie das AWS CDK Toolkit, um Ihre Projekte zu erstellen, zu verwalten und bereitzustellen. AWS CDK

Die AWS CDK Stützen TypeScriptJavaScript,,Python, JavaC#/.Net, undGo. Sie können jede dieser unterstützten Programmiersprachen verwenden, um wiederverwendbare Cloud-Komponenten, sogenannte Konstrukte, zu definieren. Sie stellen diese zusammen zu Stacks und Apps zusammen. Anschließend stellen Sie Ihre CDK-Anwendungen bereit, AWS CloudFormation um Ihre Ressourcen bereitzustellen oder zu aktualisieren.

Vorteile des AWS CDK

Verwenden Sie die, AWS CDK um zuverlässige, skalierbare und kostengünstige Anwendungen in der Cloud mit der beachtlichen Ausdruckskraft einer Programmiersprache zu entwickeln. Dieser Ansatz bietet viele Vorteile, darunter:

Entwickeln und verwalten Sie Ihre Infrastruktur als Code (IaC)

Üben Sie Infrastruktur als Code, um Infrastruktur auf programmatische, beschreibende und deklarative Weise zu erstellen, bereitzustellen und zu verwalten. Mit IaC behandeln Sie Infrastruktur genauso wie Entwickler Code behandeln. Dies führt zu einem skalierbaren und strukturierten Ansatz für die Verwaltung der Infrastruktur. Weitere Informationen zu IaC finden Sie unter Infrastruktur als Code im AWS Whitepaper Einführung DevOps zu.

Mit dem können Sie Ihre Infrastruktur AWS CDK, Ihren Anwendungscode und Ihre Konfiguration an einem zentralen Ort speichern und so sicherstellen, dass Sie bei jedem Meilenstein über ein vollständiges, in der Cloud bereitstellbares System verfügen. Nutzen Sie bewährte Methoden der Softwareentwicklung wie Codeüberprüfungen, Komponententests und Quellcodeverwaltung, um Ihre Infrastruktur robuster zu machen.

Definieren Sie Ihre Cloud-Infrastruktur mithilfe von Allzweck-Programmiersprachen

Mit dem können Sie jede der folgenden Programmiersprachen verwenden AWS CDK, um Ihre Cloud-Infrastruktur zu definieren:TypeScript,,JavaScript, Python JavaC#/.Net, und. Go Wählen Sie Ihre bevorzugte Sprache und verwenden Sie Programmierelemente wie Parameter, Bedingungen, Schleifen, Zusammensetzung und Vererbung, um das gewünschte Ergebnis Ihrer Infrastruktur zu definieren.

Verwenden Sie dieselbe Programmiersprache, um Ihre Infrastruktur und Ihre Anwendungslogik zu definieren.

Nutzen Sie die Vorteile der Infrastrukturentwicklung in Ihrer bevorzugten IDE (Integrated Development Environment), z. B. Syntaxhervorhebung und intelligente Codevervollständigung.

Stellen Sie die Infrastruktur bereit durch AWS CloudFormation

AWS CDK integriert sich in AWS CloudFormation , um Ihre Infrastruktur bereitzustellen und bereitzustellen AWS. AWS CloudFormation ist ein verwaltetes System AWS-Service , das umfassende Unterstützung von Ressourcen- und Eigenschaftenkonfigurationen für die Bereitstellung von Diensten bietet. AWS Mit AWS CloudFormation können Sie Infrastrukturbereitstellungen vorhersehbar und wiederholt durchführen und bei einem Fehler einen Rollback durchführen. Wenn Sie bereits mit dem vertraut sind AWS CloudFormation, müssen Sie sich nicht mit einem neuen IaC-Verwaltungsservice vertraut machen, wenn Sie mit dem beginnen. AWS CDK

Beginnen Sie schnell mit der Entwicklung Ihrer Anwendung mithilfe von Konstrukten

Entwickeln Sie schneller, indem Sie wiederverwendbare Komponenten, sogenannte Konstrukte, verwenden und gemeinsam nutzen. Verwenden Sie Konstrukte auf niedriger Ebene, um einzelne AWS CloudFormation Ressourcen und ihre Eigenschaften zu definieren. Verwenden Sie Konstrukte auf hoher Ebene, um schnell größere Komponenten Ihrer Anwendung mit sinnvollen, sicheren Standardeinstellungen für Ihre AWS Ressourcen zu definieren und so mehr Infrastruktur mit weniger Code zu definieren.

Erstellen Sie Ihre eigenen Konstrukte, die auf Ihre individuellen Anwendungsfälle zugeschnitten sind, und teilen Sie sie in Ihrem Unternehmen oder sogar mit der Öffentlichkeit.

Beispiel für AWS CDK

Im Folgenden finden Sie ein Beispiel für die Verwendung der AWS CDK Constructs Library zur Erstellung eines Amazon Elastic Container Service (Amazon ECS) -Service mit AWS Fargate (Fargate) Starttyp. Weitere Informationen zu diesem Beispiel finden Sie unterErstellen eines AWS Fargate-Dienstes mit dem 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 }

Diese Klasse erzeugt eine AWS CloudFormation Vorlage mit mehr als 500 Zeilen. Durch die Bereitstellung der AWS CDK App werden mehr als 50 Ressourcen der folgenden Typen erzeugt.

AWS CDK features

Das AWS CDKGitHub Repository

Das offizielle AWS CDK GitHub Repository finden Sie unter aws-cdk. Hier können Sie Probleme einreichen, unsere Lizenz einsehen, Veröffentlichungen verfolgen und vieles mehr.

Da es sich um AWS CDK ein Open-Source-Tool handelt, ermutigt das Team Sie, dazu beizutragen, es zu einem noch besseren Tool zu machen. Einzelheiten finden Sie unter Beitrag zum AWS Cloud Development Kit (AWS CDK).

Die AWS CDK API-Referenz

Die AWS CDK Construct Library stellt APIs bereit, mit denen Sie Ihre CDK-Anwendung definieren und der Anwendung CDK-Konstrukte hinzufügen können. Weitere Informationen finden Sie in der AWS CDK -API-Referenz.

Das Construct-Programmiermodell

Das Construct Programming Model (CPM) erweitert die dahinter stehenden Konzepte auf weitere AWS CDK Bereiche. Zu den anderen Tools, die das CPM verwenden, gehören:

Der Construct Hub

Der Construct Hub ist eine Online-Registrierung, in der Sie AWS CDK Open-Source-Bibliotheken finden, veröffentlichen und teilen können.

Nächste Schritte

Erste Schritte mit der Verwendung von finden Sie AWS CDK unterErste Schritte mit der AWS CDK.

Weitere Informationen

Weitere Informationen zum AWS CDK finden Sie im Folgenden:

Weitere Informationen zu verwandten Themen zum AWS CDK finden Sie im Folgenden:

  • AWS CloudFormation Konzepte — Da der so konzipiert AWS CDK ist, dass Sie damit arbeiten können AWS CloudFormation, empfehlen wir Ihnen, sich mit den wichtigsten AWS CloudFormation Konzepten vertraut zu machen und sie zu verstehen.

  • AWS Glossar — Definitionen der wichtigsten Begriffe, die überall AWS verwendet werden.

Weitere Informationen zu Tools im Zusammenhang mit der AWS CDK , mit denen die Entwicklung und Bereitstellung serverloser Anwendungen vereinfacht werden kann, finden Sie im Folgenden:

  • AWS Serverless Application Model— Ein Open-Source-Entwicklertool, das das Erstellen und Ausführen von serverlosen Anwendungen vereinfacht und verbessert. AWS

  • AWSChalice— Ein Framework zum Schreiben serverloser Apps. Python