Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Jalankan beban kerja berbasis peristiwa dan terjadwal dalam skala besar dengan AWS Fargate
HARI OHM PRASATH RAJAGOPAL, Amazon Web Services
Ringkasan
Pemberitahuan: AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan AWS yang sudah ada CodeCommit dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya
Pola ini menjelaskan cara menjalankan beban kerja terjadwal dan berbasis peristiwa pada skala besar di Amazon Web Services (AWS) Cloud dengan menggunakan AWS Fargate.
Dalam kasus penggunaan pola ini diatur, kode dipindai untuk informasi sensitif AWS, seperti nomor akun AWS dan kredensil, setiap kali permintaan tarik dikirimkan. Permintaan tarik memulai fungsi Lambda. Fungsi Lambda memanggil tugas Fargate yang menangani pemindaian kode. Lambda dimulai setiap kali permintaan tarik baru diajukan. Jika pemindaian menemukan informasi sensitif, Amazon Simple Notification Service (Amazon SNS) mengirimkan hasil pemindaian dalam pesan email.
Pola ini sangat membantu dalam kasus penggunaan bisnis berikut:
Jika bisnis Anda harus menjalankan banyak beban kerja terjadwal dan berbasis peristiwa yang tidak dapat dijalankan oleh AWS Lambda karena keterbatasan sekitar runtime (batas 15 menit) atau memori
Jika Anda ingin AWS mengelola instans yang disediakan untuk beban kerja ini
Saat Anda menggunakan pola ini, Anda memiliki opsi untuk membuat virtual private cloud (VPC) baru. Pola ini juga menggunakan AWS CodeCommit.
Prasyarat dan batasan
Prasyarat
Akun AWS yang aktif
AWS CodeCommit untuk menghosting basis kode dan membuat permintaan tarik
AWS Command Line Interface (AWS CLI) versi 1.7 atau yang lebih baru, diinstal dan dikonfigurasi di macOS, Linux, atau Windows
Beban kerja berjalan dalam wadah
Apache Maven yang dapat dieksekusi diatur di classpath
Arsitektur

Aliran keseluruhan mencakup langkah-langkah berikut.
Setiap kali permintaan tarik baru dikirimkan CodeCommit, fungsi Lambda dimulai. Fungsi Lambda mendengarkan melalui acara
CodeCommit Pull Request State Changemelalui Amazon. EventBridgeFungsi Lambda mengirimkan tugas Fargate baru dengan parameter lingkungan berikut untuk memeriksa kode dan memindainya.
RUNNER → <<TaskARN>> SNS_TOPIC → <<SNSTopicARN>> SUBNET → <<Subnet in which Fargate task gets launched>>Jika pemindaian menemukan informasi sensitif dalam kode, Fargate mendorong pesan baru ke topik Amazon SNS.
Pelanggan SNS membaca pesan dari topik dan mengirim pesan email.
Teknologi
AWS CodeCommit
Amazon Elastic Container Registry (Amazon ECR)
Amazon Elastic Container Service (Amazon ECS)
Amazon EventBridge
AWS Fargate
AWS Lambda
Amazon SNS
Docker
Alat
Alat
AWS CLI — AWS Command Line Interface (CLI) adalah alat terpadu untuk mengelola layanan AWS Anda.
AWS CodeCommit
— AWS CodeCommit adalah layanan kontrol sumber terkelola penuh yang menampung repositori berbasis Git yang aman. Dengan menggunakan CodeCommit, tim dapat berkolaborasi dalam kode dalam lingkungan yang aman dan sangat skalabel. Amazon ECR - Amazon Elastic Container Registry (Amazon ECR) adalah registri terkelola penuh yang dapat digunakan pengembang untuk menyimpan, mengelola, dan menyebarkan gambar kontainer Docker.
Amazon ECS - Amazon Elastic Container Service (Amazon ECS) adalah layanan manajemen kontainer yang sangat skalabel dan cepat. Anda dapat menggunakan Amazon ECS untuk menjalankan, menghentikan, dan mengelola kontainer di klaster.
AWS Fargate — AWS Fargate adalah teknologi yang dapat Anda gunakan dengan Amazon ECS untuk menjalankan container tanpa harus mengelola server atau cluster instans Amazon. EC2
AWS Lambda — AWS Lambda adalah layanan komputasi yang mendukung menjalankan kode tanpa menyediakan atau mengelola server. Lambda menjalankan kode Anda hanya saat diperlukan dan menskalakan secara otomatis, dari beberapa permintaan per hari hingga ribuan per detik.
Amazon SNS — Amazon Simple Notification Service (Amazon SNS) adalah layanan terkelola yang menyediakan pengiriman pesan dari penerbit ke pelanggan (juga dikenal sebagai produsen dan konsumen). Penerbit berkomunikasi secara asinkron dengan pelanggan dengan mengirim pesan ke topik, yang merupakan titik akses logis dan saluran komunikasi. Klien yang berlangganan topik SNS menerima pesan yang dipublikasikan menggunakan protokol yang didukung, seperti Lambda, email, pemberitahuan push seluler, dan pesan teks seluler (SMS).
Docker
— Docker membantu Anda membangun, menguji, dan mengirimkan aplikasi dalam paket yang disebut kontainer. Klien Git
— Baris perintah atau alat desktop untuk memeriksa artefak yang diperlukan Maven
- Apache Maven adalah alat manajemen proyek untuk mengelola pembangunan, pelaporan, dan dokumentasi proyek secara terpusat.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Unduh kodenya. | Di bagian Lampiran, unduh file.zip dan ekstrak file. | Pengembang, administrator sistem AWS |
Siapkan repo. | Jalankan | Pengembang, administrator sistem AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat repositori Amazon ECR dan masuk. | Buka konsol Amazon ECR. Di panel navigasi, pilih Repositori, lalu pilih Buat repositori. Untuk bantuan tentang ini dan cerita lainnya, lihat bagian Sumber daya terkait. | Pengembang, administrator sistem AWS |
Dorong gambar kontainer Anda. | Buka repositori, pilih Lihat perintah push, dan masuk ke Docker. Setelah Anda masuk, jalankan perintah, dengan substitusi yang diperlukan, yang ada di bawah Dorong gambar kontainer di bagian Informasi tambahan. Ini mengunggah gambar kontainer Docker yang digunakan untuk melakukan pemindaian kode. Setelah unggahan selesai, salin URL build terbaru di repositori Amazon ECR. | Pengembang, administrator sistem AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat CodeCommit repositori. | Untuk membuat CodeCommit repositori AWS baru, jalankan perintah di bawah Buat CodeCommit repositori di bagian Informasi tambahan. | Pengembang, administrator sistem AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat sebuah VPC. | Jika Anda ingin menggunakan VPC baru daripada yang sudah ada, jalankan perintah di bawah Buat VPC di bagian Informasi tambahan. Skrip AWS Cloud Development Kit (AWS CDK) akan menampilkan VPC dan subnet yang dibuat. IDs | Pengembang, administrator sistem AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat cluster dan tugas. | Untuk membuat klaster Amazon ECS dan definisi tugas Fargate, jalankan perintah di bawah Buat klaster dan tugas di bagian Informasi tambahan. Pastikan ID VPC yang benar dan URI repo Amazon ECR diteruskan sebagai parameter saat menjalankan skrip shell. Skrip membuat definisi tugas Fargate yang menunjuk ke gambar Docker (bertanggung jawab untuk pemindaian). Script kemudian membuat pekerjaan dan peran eksekusi terkait. | Pengembang, administrator sistem AWS |
Verifikasi cluster Amazon ECS. | Buka konsol Amazon ECS. Di panel navigasi, pilih Clusters, dan pilih cluster Amazon ECS yang baru dibuat bernama Fargate-Job-Cluster. Setelah ini, pilih Definisi tugas di panel navigasi, dan konfirmasikan bahwa ada definisi tugas baru dengan awalan | Pengembang, administrator sistem AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Membuat sebuah topik SNS. | Untuk membuat topik SNS, jalankan perintah di bawah Buat topik SNS di bagian Informasi tambahan. Setelah pembuatan berhasil, perhatikan | Pengembang, administrator sistem AWS |
Buat pelanggan SNS. | Untuk membuat pelanggan email untuk topik SNS, jalankan perintah di bawah Buat pelanggan SNS di bagian Informasi tambahan. Pastikan untuk mengganti | Pengembang, administrator sistem AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat fungsi dan pemicunya. | Untuk membuat fungsi Lambda dengan CodeCommit pemicu, jalankan perintah di bawah fungsi Lambda dan CodeCommit picu di bagian Informasi tambahan. Pastikan untuk mengganti parameter dengan nilai yang sesuai sebelum menjalankan perintah. Skrip membuat fungsi Lambda dan mengonfigurasinya untuk dipanggil saat permintaan tarik baru dibuat. | Pengembang, administrator sistem AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Uji aplikasi. | Jika Anda memeriksa informasi sensitif AWS apa pun ke CodeCommit repo, fungsi Lambda harus dimulai. Fungsi Lambda memulai tugas Fargate, yang memindai kode dan mengirimkan hasil pemindaian dalam pemberitahuan email. | Pengembang, administrator sistem AWS |
Sumber daya terkait
Informasi tambahan
Dorong gambar wadah
> cd 1-ecr-image-push > ./run.sh <<ecr-repository>>
Buat CodeCommit repositori
aws codecommit create-repository --repository-name test-repo --repository-description "My Test repository"
Buat VPC
> cd 2-create-vpc > ./run.sh
Keluaran
aws-batch-cdk-vpc-efs-launch-template.privatesubnet = subnet-<<id>> aws-batch-cdk-vpc-efs-launch-template.publicsubnet = subnet-<<id>> aws-batch-cdk-vpc-efs-launch-template.vpcid = vpc-<<id>>
Buat cluster dan tugas
> export CDK_DEFAULT_ACCOUNT = <<aws_account_id>> > export CDK_DEFAULT_REGION = <<aws_region>> > cd 3-create-ecs-task > ./run.sh <<vpc-id>> <<ecr-repo-uri>>
Keluaran
aws-cdk-fargate-ecs.CLUSTERNAME = Fargate-Job-Cluster aws-cdk-fargate-ecs.ClusterARN = <<cluster_arn>> aws-cdk-fargate-ecs.ContainerARN = Fargate-Container aws-cdk-fargate-ecs.TaskARN = <<task_arn>> aws-cdk-fargate-ecs.TaskExecutionRole = <<execution_role_arn>> aws-cdk-fargate-ecs.TaskRole = <<task_role_arn>>
Buat topik SNS
aws sns create-topic --name code-commit-topic
Buat pelanggan SNS
aws sns subscribe \ --topic-arn <<topic_arn>> \ --protocol email \ --notification-endpoint <<email_address>>
Fungsi dan pemicu Lambda CodeCommit
> export CDK_DEFAULT_ACCOUNT = <<aws_account_id>> > export CDK_DEFAULT_REGION = <<aws_region>> > cd 5-Lambda-CodeCommit-Trigger > ./run.sh <<taskarn>> <<snstopicarn>> subnet-<<id>> <<codecommitarn>>
Keluaran
aws-cdk-fargate-lambda-event.Cloudwatchrule = <<cloudwatchrule>> aws-cdk-fargate-lambda-event.CodeCommitLambda = AWS-Code-Scanner-Function aws-cdk-fargate-lambda-event.LambdaRole = <<lambdaiamrole>>
Lampiran
Untuk mengakses konten tambahan yang terkait dengan dokumen ini, unzip file berikut: attachment.zip