翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
サーバーレスアプローチを使用してAWSサービスを連鎖させる
作成者: Aniket Braganza (AWS)
環境:本稼働 | テクノロジー: サーバーレス、 CloudNative DevelopmentAndTesting、 DevOps、モダナイゼーション、インフラストラクチャ | AWS サービス: Amazon S3、Amazon SNS、Amazon SQS、AWSLambda |
[概要]
このパターンは、Amazon Simple Storage Service (Amazon S3)、Amazon Simple Notification Service (Amazon )、SNSAmazon Simple Queue Service (Amazon SQS)、および AWS Lambda を連鎖させることで、アップロードされたファイルを処理するためのスケーラブルでサーバーレスなアプローチを示しています。アップロードされたサンプルファイルはデモ用です。ビジネス目標を達成するために必要なAWSサービスの組み合わせを連鎖させることで、サーバーレスアプローチを使用して他のタスクを完了できます。サーバーレスアプローチでは、イベント駆動型の通知、耐障害性のあるストレージ、Function as a Service (FaaS) コンピューティングを利用してのリクエスト処理する非同期ワークフローを採用しています。サーバーレス方式を使用すると、コストを最小限に抑えながら、ニーズに合わせてスケールできます。
注: サーバーレスアプローチを使用してAWSサービスを連鎖させるには、いくつかのオプションがあります。例えば、Amazon SNSや Amazon の代わりに Lambda と Amazon S3 を組み合わせたアプローチを使用できますSQS。ただし、この方法では、イベント通知中に Lambda 呼び出しプロセスに複数の統合ポイントを追加し、処理オーバーヘッドを最小限に抑えながらサーバーレスオーケストレーションに複数のリスナーを含めるように実装を拡張できるため、SQSこのパターンは Amazon SNSと Amazon を使用します。
前提条件と制限
前提条件
アクティブなAWSアカウント
AWS アカウントへのプログラムによるアクセス。詳細については、以下を参照してください。
AWS CDK、インストール済み
製品バージョン
AWS CDK 2.x
Python 3.9
アーキテクチャ
次の図は、連鎖AWSサービスによってユーザーが S3 バケットにファイルをアップロードして処理できるようにする方法を示しています。
この図表は、次のワークフローを示しています:
ユーザーが S3 バケットにファイルをアップロードします。
アップロードは、SNSトピックにメッセージを公開する S3 イベントを開始します。メッセージには、S3 イベントの詳細が含まれます。
SNS トピックに発行されるメッセージはキューに挿入され、SQSキューはそのトピックをサブスクライブして通知を受け取ります。
Lambda 関数はSQSキューをポーリングし (イベントソースとして)、メッセージが処理されるのを待ちます。
Lambda 関数は、SQSキューからメッセージを受信すると、それらを処理し、それらのメッセージの受信を確認します。
Lambda によってメッセージが処理されない場合、そのメッセージはSQSキューに返され、最終的にSQSデッドレターキュー に転送されます。
テクノロジースタック
Amazon S3
Amazon SNS
Amazon SQS
AWS Lambda
ツール
AWS サービス
Amazon Simple Storage Service (Amazon S3) は、どのようなデータ量であっても、データを保存、保護、取得することを支援するクラウドベースのオブジェクトストレージサービスです。
Amazon Simple Notification Service (Amazon SNS) は、ウェブサーバーや E メールアドレスなど、パブリッシャーとクライアント間のメッセージ交換の調整と管理に役立ちます。
Amazon Simple Queue Service (Amazon SQS) は、安全で耐久性があり、利用可能なホストキューを提供し、分散ソフトウェアシステムとコンポーネントの統合と分離に役立ちます。
AWS Lambda は、サーバーのプロビジョニングや管理を必要とせずにコードを実行するのに役立つコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。
その他のツール
AWS Cloud Development Kit (AWS CDK) は、AWSCDKアプリケーションを操作するための主要なツールです。アプリケーションを実行し、定義したアプリケーションモデルを調査し、 AWS によって生成されたAWS CloudFormation テンプレートを生成してデプロイしますCDK。
AWS コマンドラインインターフェイス (AWS CLI) は、コマンドラインシェル内のコマンドを使用してAWSサービスとやり取りするのに役立つオープンソースツールです。
Python
は、高水準のインタープリター型汎用プログラミング言語です。
コード
このパターンのコードは、 GitHub Chaining S3 to SNS to SQS to Lambda
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
リポジトリをクローン作成します。 | リポジトリ | アプリ開発者 |
仮想環境をセットアップします。 |
| アプリ開発者 |
依存関係をインストールします。 |
| アプリ開発者 |
タスク | 説明 | 必要なスキル |
---|---|---|
ユニットテストを実行します。 |
| アプリ開発者、テストエンジニア |
タスク | 説明 | 必要なスキル |
---|---|---|
ブートストラップ環境をセットアップします。 | AWS ドキュメントのブートストラップの指示に従って、 CloudFormation スタックがAWSCDKデプロイされる各AWSリージョンでデプロイする環境をブートストラップします。 注: このステップには、プログラムでのアクセス可能な認証情報が必要です。 | アプリケーション開発者、 DevOps エンジニア、データエンジニア |
CloudFormation スタックをデプロイします。 |
| アプリ開発者、 DevOps エンジニア、 AWS DevOps |
タスク | 説明 | 必要なスキル |
---|---|---|
CloudFormation スタックを削除し、関連するリソースを削除します。 | 作成された CloudFormation スタックを削除し、関連するすべてのリソースを削除するには、 | アプリ開発者 |