翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Fargate WaitCondition フック構造を使用してリソースの依存関係とタスク実行を調整する
Amazon Web Services、Stan Fan
概要
このパターンでは、Amazon Elastic Container Service (Amazon ECS) クラスターの AWS Fargate タスクをオーケストレーションするために設計されたクラウドネイティブソリューションである WaitCondition フック (waitcondition-hook-for-aws-fargate-task) npm パッケージを説明します。
WaitCondition フックは、 との統合用に特別にカスタマイズされた AWS Cloud Development Kit (AWS CDK) コンストラクトです AWS CloudFormation。WaitCondition フックの主な機能は、次のとおりです。
待機条件メカニズムとして機能し、指定された Fargate タスクが完了するまで CloudFormation スタックの実行を一時停止します。これにより、正しい順序でのデプロイとリソースプロビジョニングがしやすくなります。
TypeScript と Python をサポートしているため、 AWS CDK プロジェクトに最適です。
AWSでコンテナ化されたアプリケーションのタスク完了とリソース管理を調整することで、開発者やアーキテクトがデプロイをオーケストレーションできるようにします。
CloudFormation ライフサイクルに埋め込まれた 1 つ以上のコンテナを使用する Fargate タスクの実行を可能にします。また、タスクの失敗を処理し、タスクの失敗後に CloudFormation スタックをロールバックできます。
カスタムタスクを有効にしたり、他のエンドポイントを呼び出したりして、リソースと Fargate タスク実行結果の間の依存関係を柔軟に追加できるようにします。例えば、CloudFormation スタックを一時停止し、データベース移行 (Fargate タスクによって実行) の完了を待ち、データベース移行の成功に依存する可能性のある他のリソースをプロビジョニングできます。
前提条件と制限
前提条件
アクティブ AWS アカウント。
AWS Cloud Development Kit (AWS CDK) ローカルワークステーションにインストールされたコマンドラインインターフェイス (CLI)。詳細については、 AWS CDK ドキュメントの AWS CDK CLI リファレンスを参照してください。
ローカルワークステーションにインストールされ、TypeScript のAWS CDK 用に設定されたノードパッケージマネージャー (npm)。詳細については、npm ドキュメントの [Node.js と npm のダウンロードとインストール]
を参照してください。 ローカルワークステーションにインストールされた Yarn。詳細については、Yarn ドキュメントの「インストール
」を参照してください。
制限事項
このソリューションは 1 つの にデプロイされます AWS アカウント。
成功の場合、コンテナの期待されるリターンコードは
0です。その他のリターンコードは失敗を示し、CloudFormation スタックはロールバックされます。一部の AWS のサービス は、すべてで利用できるわけではありません AWS リージョン。利用可能なリージョンについては、「AWS のサービス (リージョン別)
」を参照してください。特定のエンドポイントについては、「サービスエンドポイントとクォータ」を参照して、サービスのリンクを選択してください。
アーキテクチャ
コンストラクトアーキテクチャを次の図に示します。

この図表は、waitcondition-hook-for-aws-fargate-task のワークフローを示しています。
WaitConditionおよびWaitConditionHandlerは、 AWS Lambda 関数からのレスポンスをリッスンするようにプロビジョニングされます。タスクの結果に応じて、Fargate タスクの終了によって
CallbackFunctionまたはErrorHandlerFunctionがトリガーされます。Lambda 関数は、SUCCEED シグナルか FAILURE シグナルを
WaitConditionHandlerに送信します。Fargate タスクの実行結果が成功だった場合、
WaitConditionHandlerはリソースのプロビジョニングを継続します。タスクが失敗した場合はスタックをロールバックします。
次の図は、データベース移行を実行するためのワークフローの例を示しています。

このワークフロー例では、waitcondition-hook-for-aws-fargate-task コンストラクトを使用して、次のようにデータベース移行を実行します。
Amazon Relational Database Service (Amazon RDS) インスタンスがプロビジョニングされます。
waitcondition-hook-for-aws-fargate-taskコンストラクトは、データベース移行タスクを実行し、スタックを Amazon Elastic Compute Cloud (Amazon EC2) インスタンスとして一時停止します。移行タスクが正常に終了すると、Succeed シグナルを CloudFormation に送信します。正常に終了しなかった場合は、Fail シグナルを CloudFormation に送信し、スタックをロールバックします。
ツール
AWS サービス
AWS Cloud Development Kit (AWS CDK) は、コードでクラウドインフラストラクチャを定義し、それをプロビジョニングするのに役立つソフトウェア開発フレームワークです CloudFormation。
CloudFormation は、 AWS リソースをセットアップし、迅速かつ一貫してプロビジョニングし、 AWS アカウント および 全体のライフサイクルを通じてリソースを管理するのに役立ちます AWS リージョン。
Amazon CloudWatch は、 AWS リソースと で実行するアプリケーションのメトリクスを AWS リアルタイムでモニタリングするのに役立ちます。
「Amazon Elastic Container Service (Amazon ECS)」 は、クラスターでのコンテナの実行、停止、管理を支援する、高速でスケーラブルなコンテナ管理サービスです。
AWS Fargate を使用すると、サーバーや Amazon EC2 インスタンスを管理する必要なくコンテナを実行できます。これは Amazon ECS と組み合わせて使用されます。
AWS Identity and Access Management (IAM) は、誰を認証し、誰に使用する権限を付与するかを制御することで、 AWS リソースへのアクセスを安全に管理するのに役立ちます。
AWS Lambda は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。
AWS Step Functions は、 AWS Lambda 関数やその他の を組み合わせてビジネスクリティカルなアプリケーション AWS のサービス を構築するのに役立つサーバーレスオーケストレーションサービスです。
Amazon Virtual Private Cloud (Amazon VPC) は、定義した仮想ネットワークに AWS リソースを起動するのに役立ちます。この仮想ネットワークは、お客様自身のデータセンターで運用されていた従来のネットワークに似ていますが、 AWSのスケーラブルなインフラストラクチャを使用できるというメリットがあります。
その他のツール
コードリポジトリ
このパターンのコードは、GitHub の waitcondition-hook-for-aws-fargate-task
ベストプラクティス
AWS CDK アプリを構築するときは、v2 AWS CDK ドキュメントの「 を使用したクラウドインフラストラクチャの開発とデプロイのベストプラクティス AWS CDK」に従ってください。
AWS Fargate タスクについては、Amazon ECS ドキュメントの「Amazon ECS コンテナイメージのベストプラクティス」に従ってください。
エピック
| タスク | 説明 | 必要なスキル |
|---|---|---|
をインストールします AWS CDK。 | AWS CDK ローカルマシンまたは他の環境に をインストールするには、次のコマンドを実行します。
| クラウドアーキテクト、アプリ開発者 |
をブートストラップします AWS CDK。 | ブートストラップは、デプロイ用の環境を準備するプロセスです。ターゲットと の AWS CDK ツールキットをブートストラップするには AWS アカウント AWS リージョン、次のコマンドを実行します。
このコマンドは、 | クラウドアーキテクト |
| タスク | 説明 | 必要なスキル |
|---|---|---|
CDK プロジェクトを作成します。 | 任意の言語を使用して、CDK プロジェクトを作成します。このパターンでは、TypeScript を使用します。TypeScript を使用して CDK プロジェクトを作成するには、次のコマンドを実行します。
| クラウドアーキテクト |
パッケージをインストールします。 | CDK プロジェクトのルートパスで
| クラウドアーキテクト |
CDK アプリケーションと Amazon ECS コンポーネントをビルドします。 | CDK プロジェクトをビルドします。Amazon ECS タスク定義リソースが必要です。タスク定義の作成に関する詳細については、Amazon ECS ドキュメントの「Amazon ECS タスク定義」を参照してください。 次の例ではこのコンストラクトを使用します。
| クラウドアーキテクト |
CDK アプリケーションを合成し、起動します。 |
| クラウドアーキテクト |
| タスク | 説明 | 必要なスキル |
|---|---|---|
リソースをクリーンアップします。 | 前のステップでプロビジョニングされたリソースをクリーンアップするには、次のコマンドを実行します。
| クラウドアーキテクト |
トラブルシューティング
| 問題 | ソリューション |
|---|---|
一般的な CloudFormation スタックの障害 | 一般的な CloudFormation スタックの障害のトラブルシューティングに役立つように、次の例に示すように
このコマンドは CloudFormation スタックのロールバックを一時停止し、トラブルシューティングのためのリソースを提供します。詳細については、 CloudFormation ドキュメントの「リソースをプロビジョニングするときに障害を処理する方法を選択する」を参照してください。 |
AWS Step Functions 失敗 | AWS Step Functions ステートマシンは、さまざまな理由で実行に失敗することがあります。
詳細については、 AWS Step Functions ドキュメントの「Step Functions の問題のトラブルシューティング」および「Step Functions コンソールの実行の詳細の表示」を参照してください。 |
AWS Lambda 関数の失敗 | このコンストラクトは、
詳細については、 AWS Lambda ドキュメントの「Lambda の問題のトラブルシューティング」を参照してください。 |
関連リソース
AWS ドキュメント
その他のリソース
AWS Fargate タスクの待機条件フック
(npm)