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