AWS Fargate を使用してメッセージ駆動型ワークロードを大規模に実行する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Fargate を使用してメッセージ駆動型ワークロードを大規模に実行する

作成者: Stan Zubarev (AWS)

環境:PoC またはパイロット

テクノロジー: コンテナとマイクロサービス、メッセージと通信、データベース

AWS サービス: AWS Fargate、AmazonSQS、Amazon DynamoDB

[概要]

このパターンは、コンテナと AWS Fargate を使用して、AWSクラウドでメッセージ駆動型ワークロードを大規模に実行する方法を示しています。

コンテナを使用してプロセスデータを処理した場合、アプリケーションが処理するデータ量が関数ベースのサーバーレスコンピューティングサービスの制限を超える場合に役立ちます。例えば、アプリケーションが AWS Lambda が提供するものよりも多くのコンピューティング容量や処理時間を必要とする場合、Fargate を使用するとパフォーマンスを向上させることができます。

次のセットアップ例では、 AWSの Cloud Development Kit (AWS CDK) TypeScript を使用して、以下のリソースを AWS クラウドに設定してデプロイします。

  • Fargate サービス

  • Amazon Simple Queue Service (Amazon SQS) キュー

  • Amazon DynamoDB テーブル

  • Amazon CloudWatch ダッシュボード

Fargate サービスは、Amazon SQSキューからメッセージを受信して処理し、Amazon DynamoDB テーブルに保存します。 CloudWatch ダッシュボードを使用して、処理される Amazon SQS メッセージの数と Fargate によって作成される DynamoDB アイテムの数をモニタリングできます。

注: このパターンのサンプルコードを使用して、イベント駆動型のサーバーレスアーキテクチャでより複雑なデータ処理ワークロードを構築することもできます。詳細については、「AWSFargate を使用してイベント駆動型およびスケジュールされたワークロードを大規模に実行する」を参照してください。

前提条件と制限

前提条件

  • アクティブなAWSアカウント

  • ローカルマシンにインストールおよび設定されたAWSコマンドラインインターフェイス (AWS CLI) の最新バージョン

  • Gitをローカルマシンにインストールおよび設定済み

  • ローカルマシンにインストールおよび設定された AWS CDK

  • Goをローカルマシンにインストールおよび設定済み

  • Dockerをローカルマシンにインストールおよび設定済み

アーキテクチャ

ターゲットテクノロジースタック

  • Amazon SQS

  • AWS Fargate

  • Amazon DynamoDB

ターゲット アーキテクチャ

次の図は、Fargate を使用してメッセージ駆動型ワークロードをAWSクラウドで大規模に実行するためのワークフローの例を示しています。

メッセージ駆動型ワークロードのワークフロー例

この図表は、次のワークフローを示しています:

  1. Fargate サービスは、Amazon SQSロングポーリングを使用して Amazon SQSキューからメッセージを受信します。

  2. その後、Fargate サービスは Amazon SQS メッセージを処理し、DynamoDB テーブルに保存します。

自動化とスケール

Fargate タスク数のスケーリングを自動化するには、Amazon Elastic Container Service (Amazon ECS) Service Auto Scaling を設定できます。アプリケーションの Amazon SQSキューに表示されるメッセージの数に基づいてスケーリングポリシーを設定するのがベストプラクティスです。

詳細については、「Amazon Auto Scaling ユーザーガイド」の「Amazon に基づくSQSAuto ScalingEC2」を参照してください。

ツール

AWS サービス

  • AWS Fargate は、サーバーや Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを管理することなくコンテナを実行するのに役立ちます。Amazon Elastic Container Service (Amazon ) と組み合わせて使用されますECS。

  • Amazon Simple Queue Service (Amazon SQS) は、安全で耐久性があり、利用可能なホストキューを提供し、分散ソフトウェアシステムとコンポーネントの統合と分離に役立ちます。

  • Amazon DynamoDB は、高速で予測可能でスケーラブルなパフォーマンスを提供するフルマネージドの NoSQL データベースサービスです。

  • Amazon CloudWatch は、AWSリソースと実行するアプリケーションのメトリクスをAWSリアルタイムでモニタリングするのに役立ちます。

コード

このパターンのコードは GitHub sqs-fargate-ddb-cdk-go リポジトリで使用できます。

エピック

タスク説明必要なスキル

GitHub リポジトリをクローンします。

次のコマンドを実行して、ローカルマシンに GitHub sqs-fargate-ddb-cdk-go リポジトリをクローンします。

git clone https://github.com/aws-samples/sqs-fargate-ddb-cdk-go.git

アプリ開発者

AWS CLI が正しいAWSアカウントに設定されていること、および に必要なアクセス許可AWSCDKがあることを確認します。

AWS CLI 設定が正しいかどうかを確認するには、次の Amazon Simple Storage Service (Amazon S3) ls コマンドを実行します。

aws s3 ls

この手順ではAWSCDK、 AWSにアカウント内のインフラストラクチャをプロビジョニングするアクセス許可も必要です。必要なアクセス許可を付与するには、 に名前付きAWSプロファイルを作成しAWSCLI、AWS_PROFILE環境変数としてエクスポートする必要があります。

注: AWSアカウントAWSCDKで を使用したことがない場合は、まず必要なAWSCDKリソースをプロビジョニングする必要があります。詳細については、「 AWSv2 デベロッパーガイドCDK」の「ブートストラップ」を参照してください。

アプリ開発者

AWS CDK スタックをAWSアカウントにデプロイします。

  1. 次のAWSCLIコマンドを実行して、コンテナイメージを構築します。

    docker build -t go-fargate .

  2. 次のコマンドを実行してAWSCDKディレクトリを開きます。

    cd cdk

  3. 必要な npm モジュールをインストールするには、次のコマンドを実行します。

    npm i

  4. 次のコマンドを実行して、AWSCDKパターンをAWSアカウントにデプロイします。

    cdk deploy --profile ${AWS_PROFILE}

アプリ開発者
タスク説明必要なスキル

Amazon SQSキューにテストメッセージを送信します。

手順については、「Amazon SQSデベロッパーガイド」の「キューへのメッセージの送信 (コンソール)」を参照してください。

Amazon SQSメッセージのテスト例

{ "message": "hello, Fargate" }
アプリ開発者

Fargate サービスの CloudWatch ログにテストメッセージが表示されることを確認します。

Amazon ECSデベロッパーガイド CloudWatch 「ログの表示」の手順に従います。go-service-cluster ECS クラスター内のロググループのgo-fargate-serviceログを確認してください。

アプリ開発者

テストメッセージが DynamoDB テーブルに表示されていることを検証します。

  1. DynamoDB コンソールを開きます。

  2. 左のナビゲーションペインで、[テーブル] を選択します。次に、リストから次のテーブルを選択します。 sqs-fargate-ddb-table

  3. [テーブルアイテムの探索] を選択します。

  4. テストメッセージが [返された項目] リストに表示されていることを確認します。

アプリ開発者

Fargate サービスが CloudWatch ログにメッセージを送信していることを確認します。

  1. CloudWatch コンソール を開きます。

  2. 左のナビゲーションペインの [ダッシュボード] を選択します。

  3. カスタムダッシュボードリストで、 という名前のダッシュボードを選択しますgo-service-dashboard

  4. テストメッセージがログに表示されることを確認します。

注: は、 AWSアカウントに CloudWatch ダッシュボードを自動的にAWSCDK作成します。

アプリ開発者
タスク説明必要なスキル

AWS CDK スタックを削除します。

  1. 次のコマンドを実行してAWSCLI、 でAWSCDKディレクトリを開きます。

    cd cdk

  2. 次のコマンドを実行して、AWSCDKスタックを削除します。

    cdk destroy --profile ${AWS_PROFILE}

アプリ開発者

AWS CDK スタックが削除されていることを確認します。

次のコマンドを実行して、スタックが削除されたことを確認します。 

aws cloudformation list-stacks --query \ "StackSummaries[?contains(StackName,'SqsFargate')].StackStatus" \ --profile ${AWS_PROFILE}

スタックが削除された場合、コマンド出力で返される StackStatus の値は DELETE_COMPLETE です。

詳細については、AWS CloudFormation 「 ユーザーガイド」の「スタックの説明と一覧表示」を参照してください。

アプリ開発者

関連リソース