Apa itu AWS CDK? - AWS Cloud Development Kit (AWS CDK) v2

Ini adalah Panduan Pengembang AWS CDK v2. CDK v1 yang lebih lama memasuki pemeliharaan pada 1 Juni 2022 dan mengakhiri dukungan pada 1 Juni 2023.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Apa itu AWS CDK?

AWS Cloud Development Kit (AWS CDK) Ini adalah kerangka pengembangan perangkat lunak open-source untuk mendefinisikan infrastruktur cloud dalam kode dan menyediakannya. AWS CloudFormation

AWS CDK Terdiri dari dua bagian utama:

  • AWS CDK Construct Library - Kumpulan kode modular dan dapat digunakan kembali yang telah ditulis sebelumnya, yang disebut konstruksi, yang dapat Anda gunakan, modifikasi, dan integrasikan untuk mengembangkan infrastruktur Anda dengan cepat. Tujuan dari AWS CDK Construct Library adalah untuk mengurangi kompleksitas yang diperlukan untuk mendefinisikan dan mengintegrasikan AWS layanan bersama-sama saat membangun aplikasi. AWS

  • AWS CDK Toolkit — Alat baris perintah untuk berinteraksi dengan aplikasi CDK. Gunakan AWS CDK Toolkit untuk membuat, mengelola, dan menyebarkan proyek Anda AWS CDK .

AWS CDK DukunganTypeScript,, JavaScriptPython,Java,C#/.Net, danGo. Anda dapat menggunakan salah satu bahasa pemrograman yang didukung ini untuk menentukan komponen cloud yang dapat digunakan kembali yang dikenal sebagai konstruksi. Anda menyusun ini bersama-sama ke tumpukan dan aplikasi. Kemudian, Anda menyebarkan aplikasi CDK Anda AWS CloudFormation untuk menyediakan atau memperbarui sumber daya Anda.

Manfaat dari AWS CDK

Gunakan AWS CDK untuk mengembangkan aplikasi yang andal, terukur, dan hemat biaya di cloud dengan kekuatan ekspresif yang cukup besar dari bahasa pemrograman. Pendekatan ini menghasilkan banyak manfaat, termasuk:

Kembangkan dan kelola infrastruktur Anda sebagai kode (IAc)

Praktikkan infrastruktur sebagai kode untuk membuat, menyebarkan, dan memelihara infrastruktur dengan cara yang terprogram, deskriptif, dan deklaratif. Dengan IAc, Anda memperlakukan infrastruktur dengan cara yang sama seperti pengembang memperlakukan kode. Ini menghasilkan pendekatan yang terukur dan terstruktur untuk mengelola infrastruktur. Untuk mempelajari lebih lanjut tentang IAc, lihat Infrastruktur sebagai kode di Pengantar DevOps pada AWS Whitepaper.

Dengan ini AWS CDK, Anda dapat menempatkan infrastruktur, kode aplikasi, dan konfigurasi Anda di satu tempat, memastikan bahwa Anda memiliki sistem yang lengkap dan dapat diterapkan di cloud di setiap tonggak sejarah. Gunakan praktik terbaik rekayasa perangkat lunak seperti tinjauan kode, pengujian unit, dan kontrol sumber untuk membuat infrastruktur Anda lebih kuat.

Tentukan infrastruktur cloud Anda menggunakan bahasa pemrograman tujuan umum

Dengan itu AWS CDK, Anda dapat menggunakan salah satu bahasa pemrograman berikut untuk menentukan infrastruktur cloud Anda:TypeScript,JavaScript,Python,Java,C#/.Net, danGo. Pilih bahasa pilihan Anda dan gunakan elemen pemrograman seperti parameter, kondisional, loop, komposisi, dan pewarisan untuk menentukan hasil yang diinginkan dari infrastruktur Anda.

Gunakan bahasa pemrograman yang sama untuk menentukan infrastruktur dan logika aplikasi Anda.

Dapatkan manfaat dari pengembangan infrastruktur di IDE pilihan Anda (Integrated Development Environment), seperti penyorotan sintaks dan penyelesaian kode cerdas.

Menyebarkan infrastruktur melalui AWS CloudFormation

AWS CDK terintegrasi dengan AWS CloudFormation untuk menyebarkan dan menyediakan infrastruktur Anda. AWS AWS CloudFormation adalah dikelola Layanan AWS yang menawarkan dukungan ekstensif konfigurasi sumber daya dan properti untuk penyediaan layanan di. AWS Dengan AWS CloudFormation, Anda dapat melakukan penerapan infrastruktur secara dapat diprediksi dan berulang kali, dengan kesalahan rollback. Jika Anda sudah terbiasa dengan AWS CloudFormation, Anda tidak perlu mempelajari layanan manajemen IAC baru ketika memulai dengan. AWS CDK

Mulai mengembangkan aplikasi Anda dengan cepat dengan konstruksi

Kembangkan lebih cepat dengan menggunakan dan berbagi komponen yang dapat digunakan kembali yang disebut konstruksi. Gunakan konstruksi tingkat rendah untuk menentukan AWS CloudFormation sumber daya individu dan propertinya. Gunakan konstruksi tingkat tinggi untuk mendefinisikan komponen aplikasi yang lebih besar dengan cepat, dengan default yang masuk akal dan aman untuk AWS sumber daya Anda, mendefinisikan lebih banyak infrastruktur dengan kode yang lebih sedikit.

Buat konstruksi Anda sendiri yang disesuaikan untuk kasus penggunaan unik Anda dan bagikan di seluruh organisasi Anda atau bahkan dengan publik.

Contoh dari AWS CDK

Berikut ini adalah contoh menggunakan AWS CDK Constructs Library untuk membuat layanan Amazon Elastic Container Service (Amazon ECS) Container Service dengan tipe peluncuran. AWS Fargate (Fargate) Untuk detail lebih lanjut tentang contoh ini, lihatMembuat layanan AWS Fargate menggunakan 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 }

Kelas ini menghasilkan AWS CloudFormation template lebih dari 500 baris. Menerapkan AWS CDK aplikasi menghasilkan lebih dari 50 sumber daya dari jenis berikut.

AWS CDK fitur

AWS CDKGitHubRepositori

Untuk AWS CDKGitHub repositori resmi, lihat aws-cdk. Di sini, Anda dapat mengirimkan masalah, melihat lisensi kami, melacak rilis, dan banyak lagi.

Karena open-source, tim mendorong Anda untuk berkontribusi menjadikannya alat yang lebih baik. AWS CDK Untuk detailnya, lihat Berkontribusi pada AWS Cloud Development Kit (AWS CDK).

Referensi AWS CDK API

AWS CDK Construct Library menyediakan API untuk menentukan aplikasi CDK Anda dan menambahkan konstruksi CDK ke aplikasi. Untuk informasi lebih lanjut, lihat Referensi API AWS CDK.

Model Pemrograman Konstruksi

Construct Programming Model (CPM) memperluas konsep di balik domain tambahan AWS CDK . Alat lain yang menggunakan CPM meliputi:

Hub Konstruksi

Construct Hub adalah registri online tempat Anda dapat menemukan, menerbitkan, dan berbagi pustaka sumber terbuka AWS CDK .

Langkah selanjutnya

Untuk memulai dengan menggunakan AWS CDK, lihatMemulai dengan AWS CDK.

Pelajari selengkapnya

Untuk terus belajar tentang hal ini AWS CDK, lihat yang berikut ini:

Untuk mempelajari lebih lanjut tentang topik terkait dengan AWS CDK, lihat berikut ini:

  • AWS CloudFormation Konsep — Karena AWS CDK dibangun untuk bekerja dengan AWS CloudFormation, kami sarankan Anda belajar dan memahami AWS CloudFormation konsep-konsep kunci.

  • AWS Glosarium — Definisi istilah kunci yang digunakan di seluruh. AWS

Untuk mempelajari lebih lanjut tentang alat yang terkait dengan AWS CDK yang dapat digunakan untuk menyederhanakan pengembangan dan penyebaran aplikasi tanpa server, lihat berikut ini:

  • AWS Serverless Application Model— Alat pengembang open-source yang menyederhanakan dan meningkatkan pengalaman membangun dan menjalankan aplikasi tanpa server. AWS

  • AWSChalice— Kerangka kerja untuk menulis aplikasi tanpa server di. Python