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.
Dalam contoh ini, kami menunjukkan cara membuat layanan yang berjalan di kluster Amazon Elastic Container AWS Fargate Service (Amazon ECS) Container Service (Amazon ECS) yang diawali oleh Application Load Balancer yang menghadap ke internet dari gambar di Amazon ECR.
Amazon ECS adalah layanan manajemen kontainer yang sangat skalabel, cepat, yang membuatnya mudah dijalankan, dihentikan, dan dikelola Docker kontainer pada sebuah cluster. Anda dapat meng-host klaster Anda di infrastruktur tanpa server yang dikelola oleh Amazon ECS dengan meluncurkan layanan atau tugas Anda menggunakan jenis peluncuran Fargate. Untuk kontrol lebih lanjut, Anda dapat meng-host tugas Anda di klaster instans Amazon Elastic Compute Cloud (Amazon EC2) yang Anda kelola dengan menggunakan jenis EC2 peluncuran Amazon.
Dalam contoh ini, kami meluncurkan beberapa layanan menggunakan tipe peluncuran Fargate. Jika Anda telah menggunakan AWS Management Console untuk membuat layanan Fargate, Anda tahu bahwa ada banyak langkah yang harus diikuti untuk menyelesaikan tugas itu. AWS memiliki beberapa tutorial dan topik dokumentasi yang memandu Anda melalui pembuatan layanan Fargate, termasuk:
Contoh ini membuat layanan Fargate serupa menggunakan file. AWS CDK
Konstruksi Amazon ECS yang digunakan dalam contoh ini membantu Anda menggunakan AWS layanan dengan memberikan manfaat berikut:
-
Secara otomatis mengkonfigurasi penyeimbang beban.
-
Secara otomatis membuka grup keamanan untuk penyeimbang beban. Hal ini memungkinkan penyeimbang beban untuk berkomunikasi dengan instance tanpa harus secara eksplisit membuat grup keamanan.
-
Secara otomatis memesan ketergantungan antara layanan dan penyeimbang beban yang dilampirkan ke grup target, di mana AWS CDK memberlakukan urutan pembuatan listener yang benar sebelum instance dibuat.
-
Secara otomatis mengonfigurasi data pengguna pada grup penskalaan otomatis. Ini menciptakan konfigurasi yang benar untuk mengaitkan cluster ke AMIs.
-
Memvalidasi kombinasi parameter lebih awal. Ini memperlihatkan AWS CloudFormation masalah sebelumnya, sehingga menghemat waktu penerapan. Misalnya, tergantung pada tugasnya, mudah untuk mengkonfigurasi pengaturan memori secara tidak benar. Sebelumnya, kami tidak akan menemukan kesalahan sampai kami menerapkan aplikasi kami. Tetapi sekarang AWS CDK dapat mendeteksi kesalahan konfigurasi dan memancarkan kesalahan saat kami mensintesis aplikasi kami.
-
Secara otomatis menambahkan izin untuk Amazon Elastic Container Registry (Amazon ECR) Registry ECR) jika kami menggunakan gambar dari Amazon ECR.
-
Secara otomatis skala. Ini AWS CDK menyediakan metode sehingga kami dapat menskalakan instance secara otomatis saat kami menggunakan EC2 klaster Amazon. Ini terjadi secara otomatis ketika kita menggunakan instance di cluster Fargate.
Selain itu, AWS CDK mencegah instance dihapus saat penskalaan otomatis mencoba menghentikan instance, tetapi tugas sedang berjalan atau dijadwalkan pada instance itu.
Sebelumnya, kami harus membuat fungsi Lambda untuk memiliki fungsi ini.
-
Menyediakan dukungan aset, sehingga kami dapat menyebarkan sumber dari mesin kami ke Amazon ECS dalam satu langkah. Sebelumnya, untuk menggunakan sumber aplikasi, kami harus melakukan beberapa langkah manual, seperti mengunggah ke Amazon ECR dan membuat Docker gambar.
penting
ApplicationLoadBalancedFargateService
Konstruksi yang akan kita gunakan mencakup banyak AWS
komponen, beberapa di antaranya memiliki biaya non-sepele jika dibiarkan disediakan di AWS akun kita, bahkan jika kita tidak menggunakannya. Pastikan untuk membersihkan (cdk destroy) jika Anda mengikuti contoh ini.
Buat proyek CDK
Kami mulai dengan membuat proyek CDK. Ini adalah direktori yang menyimpan AWS CDK kode kami, termasuk aplikasi CDK kami.
mkdir MyEcsConstruct cd MyEcsConstruct cdk init --language typescript
Selanjutnya, kami menjalankan aplikasi dan mengonfirmasi bahwa itu membuat tumpukan kosong.
cdk synth
Buat layanan Fargate
Ada dua cara berbeda untuk menjalankan tugas penampung kami dengan Amazon ECS:
-
Gunakan jenis
Fargate
peluncuran, di mana Amazon ECS mengelola mesin fisik tempat kontainer berjalan untuk kami. -
Gunakan tipe
EC2
peluncuran, tempat kami melakukan pengelolaan, seperti menentukan penskalaan otomatis.
Untuk contoh ini, kita akan membuat layanan Fargate yang berjalan di kluster Amazon ECS, di depan oleh Application Load Balancer yang menghadap ke internet.
Kami menambahkan impor modul AWS Construct Library berikut ke file stack kami:
Berkas: lib/my_ecs_construct-stack.ts
import * as ec2 from "aws-cdk-lib/aws-ec2";
import * as ecs from "aws-cdk-lib/aws-ecs";
import * as ecs_patterns from "aws-cdk-lib/aws-ecs-patterns";
Dalam tumpukan kami, kami menambahkan kode berikut:
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 true
});
Selanjutnya, kami memvalidasi kode kami dengan menjalankan yang berikut ini untuk mensintesis tumpukan kami:
cdk synth
Tumpukan ratusan baris, jadi kami tidak akan menunjukkannya di sini. Tumpukan harus berisi satu instance default, subnet pribadi dan subnet publik untuk tiga Availability Zones, dan grup keamanan.
Untuk menyebarkan tumpukan, kami menjalankan yang berikut:
cdk deploy
AWS CloudFormation menampilkan informasi tentang lusinan langkah yang diperlukan saat menyebarkan aplikasi kami.
Setelah penerapan selesai, kami telah berhasil membuat layanan Amazon ECS yang didukung Fargate untuk menjalankan Docker gambar.
Bersihkan
Sebagai praktik terbaik pemeliharaan umum, dan untuk meminimalkan biaya yang tidak perlu, kami menghapus tumpukan kami saat selesai:
cdk destroy