

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
<a name="use-the-aws-fargate-waitcondition-hook-construct"></a>

*Penggemar Stan, Amazon Web Services*

## Ringkasan
<a name="use-the-aws-fargate-waitcondition-hook-construct-summary"></a>

Pola ini menjelaskan paket WaitCondition hook (`waitcondition-hook-for-aws-fargate-task`) npm, yang merupakan solusi cloud-native yang dirancang untuk mengatur [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html)tugas 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 Hook 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 di. 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
<a name="use-the-aws-fargate-waitcondition-hook-construct-prereqs"></a>

**Prasyarat**
+ Aktif Akun AWS.
+ AWS Cloud Development Kit (AWS CDK) Command Line Interface (CLI) diinstal pada workstation lokal. Untuk informasi lebih lanjut, lihat [referensi AWS CDK CLI](https://docs.aws.amazon.com/cdk/v2/guide/cli.html) dalam dokumentasi. AWS CDK 
+ [Node package manager (npm), diinstal pada workstation lokal dan dikonfigurasi untuk in.AWS CDK TypeScript](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-typescript.html) Untuk informasi selengkapnya, lihat [Downloading and installing Node.js and npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) dalam dokumentasi npm.
+ Benang dipasang di workstation lokal. Untuk informasi selengkapnya, lihat [Instalasi](https://yarnpkg.com/getting-started/install) di dokumentasi Yarn.

**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](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Untuk titik akhir tertentu, lihat [Titik akhir dan kuota layanan](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), dan pilih tautan untuk layanan.

## Arsitektur
<a name="use-the-aws-fargate-waitcondition-hook-construct-architecture"></a>

Diagram berikut menunjukkan arsitektur konstruksi.

![\[Alur kerja AWS Step Functions dari konstruksi waitcondition-hook-for-aws -fargate-task.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/e58680e3-f89f-422f-b0e1-e85605ae8bf9/images/598020df-908c-4486-9844-c05af759c18a.png)


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

1. `WaitCondition`dan `WaitConditionHandler` disediakan untuk mendengarkan respons dari fungsi. AWS Lambda 

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

1. Fungsi Lambda mengirimkan sinyal SUCCED atau FAILURE ke. `WaitConditionHandler`

1. `WaitConditionHandler`terus 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.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/e58680e3-f89f-422f-b0e1-e85605ae8bf9/images/3b83fc2a-80bb-4ba9-9637-782060493cf0.png)


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.

1. `waitcondition-hook-for-aws-fargate-task`Konstruksi menjalankan tugas migrasi database dan menjeda tumpukan sebagai instance Amazon Elastic Compute Cloud (Amazon EC2).

1. 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
<a name="use-the-aws-fargate-waitcondition-hook-construct-tools"></a>

**Layanan AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)adalah kerangka kerja pengembangan perangkat lunak yang membantu Anda mendefinisikan infrastruktur cloud dalam kode dan menyediakannya CloudFormation.
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)membantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan. Wilayah AWS
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) membantu Anda memantau metrik sumber AWS daya Anda dan aplikasi yang Anda jalankan AWS secara real time.
+ [Amazon Elastic Container Service (Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)) adalah layanan manajemen kontainer yang cepat dan dapat diskalakan yang membantu Anda menjalankan, menghentikan, dan mengelola kontainer di klaster.
+ [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html)membantu Anda menjalankan container tanpa perlu mengelola server atau instans Amazon EC2. Ini digunakan bersama dengan Amazon ECS.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)adalah 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 Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)adalah 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)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) 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-alat lainnya**
+ [npm](https://docs.npmjs.com/about-npm) adalah registri perangkat lunak yang berjalan di lingkungan Node.js dan digunakan untuk berbagi atau meminjam paket dan mengelola penyebaran paket pribadi.
+ [Yarn](https://yarnpkg.com/) 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](https://github.com/aws-samples/waitcondition-hook-for-aws-fargate-task).

## Praktik terbaik
<a name="use-the-aws-fargate-waitcondition-hook-construct-best-practices"></a>
+ Saat membuat AWS CDK aplikasi, ikuti [Praktik terbaik untuk mengembangkan dan menerapkan infrastruktur cloud dengan dokumentasi AWS CDK di](https://docs.aws.amazon.com/cdk/v2/guide/best-practices.html) AWS CDK v2.
+ Untuk AWS Fargate tugas tersebut, ikuti [Praktik terbaik untuk gambar kontainer Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/bestpracticesguide/application.html) di dokumentasi Amazon ECS.

## Epik
<a name="use-the-aws-fargate-waitcondition-hook-construct-epics"></a>

### Mengatur AWS CDK
<a name="set-up-the-cdk"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Instal AWS CDK. | Untuk menginstal AWS CDK pada mesin lokal Anda atau lingkungan lain, jalankan perintah berikut: <pre>npm install -g aws-cdk@latest</pre> | Arsitek cloud, Pengembang aplikasi | 
| Bootstrap AWS CDK. | [Bootstrapping](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) adalah proses mempersiapkan [lingkungan](https://docs.aws.amazon.com/cdk/v2/guide/environments.html) untuk penyebaran. Untuk bootstrap AWS CDK toolkit Anda untuk target Akun AWS dan Wilayah AWS, jalankan perintah berikut:<pre>cdk bootstrap aws://ACCOUNT-NUMBER-1/REGION-1 </pre>Perintah ini menciptakan CloudFormation tumpukan bernama`CDKToolkit`.  | Arsitek awan | 

### Jalankan WaitCondition hook untuk konstruksi AWS Fargate tugas
<a name="run-the-waitcondition-hook-for-fargatelong-tasks-construct"></a>


| Tugas | Deskripsi | Keterampilan 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 menginstal`waitcondition-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. Diperlukan sumber daya definisi tugas Amazon ECS. Untuk informasi tentang membuat definisi tugas, lihat [definisi tugas Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html) dalam dokumentasi Amazon ECS.Contoh berikut menggunakan konstruksi ini:<pre>import * as cdk from 'aws-cdk-lib';<br />import { Vpc } from 'aws-cdk-lib/aws-ec2';<br />import * as ecr from 'aws-cdk-lib/aws-ecr';<br />import * as ecs from 'aws-cdk-lib/aws-ecs';<br />import { Construct } from 'constructs';<br />import { FargateRunner } from 'waitcondition-hook-for-aws-fargate-task';<br />import { Queue } from 'aws-cdk-lib/aws-sqs';<br /><br />export class FargateRunnerStack extends cdk.Stack {<br />    constructor(scope: Construct, id: string, props?: cdk.StackProps) {<br />        super(scope, id, props);<br />        // Define the VPC<br />        const vpc = new Vpc(this, 'MyVpc')<br />        // Define the Fargate Task<br />        const taskDefinition = new ecs.FargateTaskDefinition(this, 'MyTask', {});<br />        // Import exiting ecr repo<br />        const repo = ecr.Repository.fromRepositoryName(this, 'MyRepo', 'RepoName');<br />        // Add a container to the task<br />        taskDefinition.addContainer('MyContainer', {<br />            image: ecs.ContainerImage.fromEcrRepository(repo),<br />        });<br />        // Create the Fargate runner<br />        const myFargateRunner = new FargateRunner(this, 'MyRunner', {<br />            fargateTaskDef: taskDefinition,<br />            timeout: `${60 * 5}`,<br />            vpc: vpc,<br />        });<br />        // Create the SQS queue<br />        const myQueue = new Queue(this, 'MyQueue', {});<br />        // Add dependency<br />        myQueue.node.addDependency(myFargateRunner);<br />    }<br />}</pre> | Arsitek awan | 
| Synth dan luncurkan aplikasi CDK. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/use-the-aws-fargate-waitcondition-hook-construct.html)`waitcondition-hook-for-aws-fargate-task`Konstruk menjalankan tugas Fargate.  | Arsitek awan | 

### Bersihkan
<a name="clean-up"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Pembersihan sumber daya  | Untuk membersihkan sumber daya yang disediakan dari langkah sebelumnya, jalankan perintah berikut:<pre>cdk destroy </pre> | Arsitek awan | 

## Pemecahan masalah
<a name="use-the-aws-fargate-waitcondition-hook-construct-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| Kegagalan CloudFormation tumpukan umum | Untuk membantu memecahkan masalah kegagalan CloudFormation tumpukan umum, tambahkan `--no-rollback` tanda seperti yang ditunjukkan pada contoh berikut: <pre>cdk deploy --no-rollback</pre>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](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stack-failure-options.html) dalam dokumentasi. 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/use-the-aws-fargate-waitcondition-hook-construct.html)Untuk informasi selengkapnya, lihat [Memecahkan masalah di Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/troubleshooting.html) dan [Melihat detail eksekusi di konsol Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-view-execution-details.html#exec-details-intf-step-details) 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: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/use-the-aws-fargate-waitcondition-hook-construct.html)Untuk informasi selengkapnya, lihat [Memecahkan masalah di Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-troubleshooting.html) dalam dokumentasi. AWS Lambda  | 

## Sumber daya terkait
<a name="use-the-aws-fargate-waitcondition-hook-construct-resources"></a>

**AWS dokumentasi**
+ [AWS CDK Membangun Referensi API](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html)
+ [Memulai dengan AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
+ [Pelajari cara membuat dan menggunakan sumber daya Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/getting-started.html)
+ [Pelajari cara memulai dengan Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/getting-started-with-sfn.html)
+ [Apa itu AWS CDK?](https://docs.aws.amazon.com/cdk/v2/guide/home.html)

**Sumber daya lainnya**
+ [Waitcondition Hook untuk AWS Fargate tugas](https://pypi.org/project/waitcondition-hook-for-aws-fargate-task/) (npm)
+ [waitcondition-hook-for-aws-fargate-task](https://pypi.org/project/waitcondition-hook-for-aws-fargate-task/) 1.0.6 (pypi.org)