Koordinasikan ketergantungan sumber daya dan eksekusi tugas dengan menggunakan konstruksi AWS Fargate WaitCondition kait - AWS Prescriptive Guidance

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

Koordinasikan ketergantungan sumber daya dan eksekusi tugas dengan menggunakan konstruksi AWS Fargate WaitCondition kait

Penggemar Stan, Amazon Web Services

Ringkasan

Pola ini menjelaskan paket WaitCondition hook (waitcondition-hook-for-aws-fargate-task) npm, yang merupakan solusi cloud-native yang dirancang untuk mengatur AWS Fargatetugas di kluster Amazon Elastic Container Service (Amazon ECS).

WaitCondition Hook adalah AWS Cloud Development Kit (AWS CDK) konstruksi yang secara khusus dirancang untuk integrasi dengan. AWS CloudFormation WaitCondition Kait menyediakan kemampuan kunci berikut:

  • Bertindak sebagai mekanisme kondisi tunggu, menjeda eksekusi CloudFormation tumpukan hingga tugas Fargate tertentu selesai, yang membantu penerapan dan penyediaan sumber daya yang teratur.

  • Mendukung TypeScript dan Python, membuatnya ideal untuk AWS CDK proyek.

  • Memungkinkan pengembang dan arsitek untuk mengatur penerapan dengan mengoordinasikan penyelesaian tugas dan manajemen sumber daya untuk aplikasi kontainer. AWS

  • Memungkinkan menjalankan tugas Fargate dengan satu atau beberapa kontainer yang disematkan dalam CloudFormation siklus hidup. dan dapat menangani kegagalan tugas dan memutar kembali tumpukan setelah kegagalan tugas. CloudFormation

  • Memberikan fleksibilitas untuk menambahkan dependensi antara sumber daya dan hasil eksekusi tugas Fargate, memungkinkan tugas khusus atau memanggil titik akhir lainnya. Misalnya, Anda dapat menjeda CloudFormation tumpukan dan menunggu migrasi database (dilakukan oleh tugas Fargate) dan menyediakan sumber daya lain yang mungkin bergantung pada keberhasilan migrasi database.

Prasyarat dan batasan

Prasyarat

Batasan

  • Solusi ini diterapkan ke satu Akun AWS.

  • Kode pengembalian yang diharapkan dari wadah adalah 0 untuk sukses. Kode pengembalian lainnya menunjukkan kegagalan, dan CloudFormation tumpukan akan berputar kembali.

  • Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat Layanan AWS berdasarkan Wilayah. Untuk titik akhir tertentu, lihat Titik akhir dan kuota layanan, dan pilih tautan untuk layanan.

Arsitektur

Diagram berikut menunjukkan arsitektur konstruksi.

Alur kerja AWS Step Functions dari konstruksi waitcondition-hook-for-aws -fargate-task.

Diagram menunjukkan alur kerja: waitcondition-hook-for-aws-fargate-task

  1. WaitConditiondan WaitConditionHandler disediakan untuk mendengarkan respons dari fungsi. AWS Lambda

  2. Tergantung pada hasil tugas, baik CallbackFunction atau ErrorHandlerFunction dipicu oleh penyelesaian tugas Fargate.

  3. Fungsi Lambda mengirimkan sinyal SUKSES atau KEGAGALAN ke. WaitConditionHandler

  4. WaitConditionHandlerterus menyediakan sumber daya jika hasil eksekusi tugas Fargate berhasil, atau memutar kembali tumpukan jika tugas gagal.

Diagram berikut menunjukkan contoh alur kerja untuk melakukan migrasi database.

Alur kerja migrasi database Amazon RDS menggunakan konstruksi WaitCondition kait.

Contoh alur kerja menggunakan waitcondition-hook-for-aws-fargate-task konstruksi untuk melakukan migrasi database, sebagai berikut:

  1. Instans Amazon Relational Database Service (Amazon RDS) disediakan.

  2. waitcondition-hook-for-aws-fargate-taskKonstruksi menjalankan tugas migrasi database dan menjeda tumpukan sebagai instance Amazon Elastic Compute Cloud (Amazon). EC2

  3. Jika tugas migrasi selesai dengan sukses, ia akan mengirimkan sinyal Success ke CloudFormation. Jika tidak, ia mengirimkan sinyal Gagal ke CloudFormation dan memutar kembali tumpukan.

Alat

Layanan AWS

  • AWS Cloud Development Kit (AWS CDK)adalah kerangka pengembangan perangkat lunak yang membantu Anda mendefinisikan infrastruktur cloud dalam kode dan menyediakannya AWS CloudFormation.

  • AWS CloudFormationmembantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan. Wilayah AWS

  • Amazon CloudWatch membantu Anda memantau metrik sumber AWS daya Anda dan aplikasi yang Anda jalankan AWS secara real time.

  • Amazon Elastic Container Service (Amazon ECS) adalah layanan manajemen kontainer yang cepat dan dapat diskalakan yang membantu Anda menjalankan, menghentikan, dan mengelola kontainer di klaster.

  • AWS Fargatemembantu Anda menjalankan container tanpa perlu mengelola server atau EC2 instans Amazon. Ini digunakan bersama dengan Amazon ECS.

  • AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.

  • AWS Lambdaadalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.

  • AWS Step Functionsadalah layanan orkestrasi tanpa server yang membantu Anda menggabungkan AWS Lambda fungsi dan lainnya Layanan AWS untuk membangun aplikasi bisnis yang penting.

  • Amazon Virtual Private Cloud (Amazon VPC) membantu Anda meluncurkan AWS sumber daya ke jaringan virtual yang telah Anda tentukan. Jaringan virtual ini menyerupai jaringan tradisional yang akan Anda operasikan di pusat data Anda sendiri, dengan manfaat menggunakan infrastruktur yang dapat diskalakan. AWS

Alat lainnya

  • npm adalah registri perangkat lunak yang berjalan di lingkungan Node.js dan digunakan untuk berbagi atau meminjam paket dan mengelola penyebaran paket pribadi.

  • Yarn adalah manajer paket open source yang dapat Anda gunakan untuk mengelola dependensi dalam JavaScript proyek. Yarn dapat membantu Anda menginstal, memperbarui, mengonfigurasi, dan menghapus dependensi paket.

Repositori kode

Kode untuk pola ini tersedia di repositori GitHub waitcondition-hook-for-aws-fargate-task.

Praktik terbaik

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Instal AWS CDK.

Untuk menginstal AWS CDK pada mesin lokal Anda atau lingkungan lain, jalankan perintah berikut:

npm install -g aws-cdk@latest
Arsitek cloud, Pengembang aplikasi

Bootstrap AWS CDK.

Bootstrapping adalah proses mempersiapkan lingkungan untuk penyebaran. Untuk bootstrap AWS CDK toolkit Anda untuk target Akun AWS dan Wilayah AWS, jalankan perintah berikut:

cdk bootstrap aws://ACCOUNT-NUMBER-1/REGION-1

Perintah ini menciptakan CloudFormation tumpukan bernamaCDKToolkit.

Arsitek awan
TugasDeskripsiKeterampilan yang dibutuhkan

Buat proyek CDK.

Buat proyek CDK menggunakan bahasa yang Anda sukai. Pola ini menggunakan TypeScript. Untuk membuat proyek CDK menggunakan TypeScript, jalankan perintah berikut:

cdk init app —language typescript

Arsitek awan

Instal paket .

Jalankan npm install di jalur root proyek CDK Anda. Setelah perpustakaan CDK diinstal, jalankan perintah berikut untuk menginstalwaitcondition-hook-for-aws-fargate-task:

yarn add waitcondition-hook-for-aws-fargate-task

Arsitek awan

Bangun aplikasi CDK dan komponen Amazon ECS Anda.

Bangun proyek CDK Anda. Sumber daya definisi tugas Amazon ECS diperlukan. Untuk informasi tentang membuat definisi tugas, lihat definisi tugas Amazon ECS dalam dokumentasi Amazon ECS.

Contoh berikut menggunakan konstruksi ini:

import * as cdk from 'aws-cdk-lib'; import { Vpc } from 'aws-cdk-lib/aws-ec2'; import * as ecr from 'aws-cdk-lib/aws-ecr'; import * as ecs from 'aws-cdk-lib/aws-ecs'; import { Construct } from 'constructs'; import { FargateRunner } from 'waitcondition-hook-for-aws-fargate-task'; import { Queue } from 'aws-cdk-lib/aws-sqs'; export class FargateRunnerStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // Define the VPC const vpc = new Vpc(this, 'MyVpc') // Define the Fargate Task const taskDefinition = new ecs.FargateTaskDefinition(this, 'MyTask', {}); // Import exiting ecr repo const repo = ecr.Repository.fromRepositoryName(this, 'MyRepo', 'RepoName'); // Add a container to the task taskDefinition.addContainer('MyContainer', { image: ecs.ContainerImage.fromEcrRepository(repo), }); // Create the Fargate runner const myFargateRunner = new FargateRunner(this, 'MyRunner', { fargateTaskDef: taskDefinition, timeout: `${60 * 5}`, vpc: vpc, }); // Create the SQS queue const myQueue = new Queue(this, 'MyQueue', {}); // Add dependency myQueue.node.addDependency(myFargateRunner); } }
Arsitek awan

Synth dan luncurkan aplikasi CDK.

  1. Untuk menghasilkan aset dan CloudFormation template, jalankan perintah berikut di jalur root CDK Anda:

    cdk synth

  2. Setelah synth perintah berhasil, jalankan perintah berikut untuk menyebarkan sumber daya:

    cdk deploy

waitcondition-hook-for-aws-fargate-taskKonstruk menjalankan tugas Fargate.

Arsitek awan
TugasDeskripsiKeterampilan yang dibutuhkan

Pembersihan sumber daya

Untuk membersihkan sumber daya yang disediakan dari langkah sebelumnya, jalankan perintah berikut:

cdk destroy
Arsitek awan

Pemecahan Masalah

IsuSolusi

Kegagalan CloudFormation tumpukan umum

Untuk membantu memecahkan masalah kegagalan CloudFormation tumpukan umum, tambahkan --no-rollback tanda seperti yang ditunjukkan pada contoh berikut:

cdk deploy --no-rollback

Perintah ini akan menjeda CloudFormation tumpukan dari memutar kembali, yang memberi Anda sumber daya untuk memecahkan masalah. Untuk informasi selengkapnya, lihat Memilih cara menangani kegagalan saat menyediakan sumber daya dalam dokumentasi. AWS CloudFormation

AWS Step Functions kegagalan

Mesin AWS Step Functions negara mungkin gagal mengeksekusi karena alasan yang berbeda. Dengan —disable-rollback dikonfigurasi, gunakan langkah-langkah berikut untuk memecahkan masalah:

  1. Masuk ke AWS Management Console, masukkan Step Functions di kolom Pencarian, lalu pilih layanan Step Functions.

  2. Di panel navigasi kiri, pilih mesin State dan kemudian pilih mesin status yang disediakan oleh tumpukan. CloudFormation

  3. Dalam Eksekusi, pilih nama eksekusi yang gagal secara tak terduga.

  4. Dalam tampilan Acara, pilih langkah gagal.

Untuk informasi selengkapnya, lihat Memecahkan masalah di Step Functions dan Melihat detail eksekusi di konsol Step Functions dalam dokumentasi. AWS Step Functions

AWS Lambda kegagalan fungsi

Konstruksi ini menyediakan dua fungsi CallbackFunction Lambda: dan. ErrorhandlerFunction Mereka bisa gagal karena berbagai alasan seperti pengecualian yang tidak tertangani. Gunakan langkah-langkah berikut untuk memecahkan masalah:

  1. Masuk ke AWS Management Console, masukkan CloudWatchdi kolom Pencarian, lalu pilih CloudWatch layanan.

  2. Pada panel navigasi kiri, pilih Grup log.

  3. Di bidang Pencarian, masukkan nama fungsi Lambda.

  4. Pilih nama grup log yang terkait dengan fungsi Lambda.

  5. Untuk pergi ke hasil eksekusi fungsi Lambda, pilih aliran log terbaru.

Untuk informasi selengkapnya, lihat Memecahkan masalah di Lambda dalam dokumentasi. AWS Lambda

Sumber daya terkait

AWS dokumentasi

Sumber daya lainnya