翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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クラウドで大規模に実行するためのワークフローの例を示しています。
この図表は、次のワークフローを示しています:
Fargate サービスは、Amazon SQSロングポーリングを使用して Amazon SQSキューからメッセージを受信します。
その後、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
| アプリ開発者 |
AWS CLI が正しいAWSアカウントに設定されていること、および に必要なアクセス許可AWSCDKがあることを確認します。 | AWS CLI 設定が正しいかどうかを確認するには、次の Amazon Simple Storage Service (Amazon S3) ls コマンドを実行します。
この手順ではAWSCDK、 AWSにアカウント内のインフラストラクチャをプロビジョニングするアクセス許可も必要です。必要なアクセス許可を付与するには、 に名前付きAWSプロファイルを作成しAWSCLI、AWS_PROFILE環境変数としてエクスポートする必要があります。 注: AWSアカウントAWSCDKで を使用したことがない場合は、まず必要なAWSCDKリソースをプロビジョニングする必要があります。詳細については、「 AWSv2 デベロッパーガイドCDK」の「ブートストラップ」を参照してください。 | アプリ開発者 |
AWS CDK スタックをAWSアカウントにデプロイします。 |
| アプリ開発者 |
タスク | 説明 | 必要なスキル |
---|---|---|
Amazon SQSキューにテストメッセージを送信します。 | 手順については、「Amazon SQSデベロッパーガイド」の「キューへのメッセージの送信 (コンソール)」を参照してください。 Amazon SQSメッセージのテスト例
| アプリ開発者 |
Fargate サービスの CloudWatch ログにテストメッセージが表示されることを確認します。 | Amazon ECSデベロッパーガイドの CloudWatch 「ログの表示」の手順に従います。go-service-cluster ECS クラスター内のロググループのgo-fargate-serviceログを確認してください。 | アプリ開発者 |
テストメッセージが DynamoDB テーブルに表示されていることを検証します。 |
| アプリ開発者 |
Fargate サービスが CloudWatch ログにメッセージを送信していることを確認します。 |
注: は、 AWSアカウントに CloudWatch ダッシュボードを自動的にAWSCDK作成します。 | アプリ開発者 |
タスク | 説明 | 必要なスキル |
---|---|---|
AWS CDK スタックを削除します。 |
| アプリ開発者 |
AWS CDK スタックが削除されていることを確認します。 | 次のコマンドを実行して、スタックが削除されたことを確認します。
スタックが削除された場合、コマンド出力で返される 詳細については、AWS CloudFormation 「 ユーザーガイド」の「スタックの説明と一覧表示」を参照してください。 | アプリ開発者 |
関連リソース
( バージョン 2 用AWSユーザーガイド) の設定 CLI AWS CLI
API リファレンス (AWS CDKAPIリファレンス)
AWS SDK Go v2 用
(Go ドキュメント)