AWS Lambda
開発者ガイド

一般的な Lambda アプリケーションの種類とユースケース

AWS Lambda でアプリケーションを構築する場合のコアコンポーネントは、Lambda 関数とイベントソースです。トリガーとは、AWSのサービスまたはアプリケーションに、関数を呼び出し、 Lambda 関数がイベントを処理するランタイムコードを作成します。説明のため、以下のシナリオを想定してください。

  • ファイル処理 – 写真共有アプリケーションがあるとします。ユーザーはこのアプリケーションを使用して写真をアップロードし、アプリケーションはユーザーの写真を Amazon S3 バケットに保存します。そこで、アプリケーションは各ユーザーの写真のサムネイルバージョンを作成し、ユーザーのプロフィールページに表示します。このシナリオでは、自動的にサムネイルを作成する Lambda 関数の作成を選択できます。Amazon S3 は AWS イベントでサポートされるソースであり、オブジェクト作成イベントを発行して Lambda 関数を呼び出すことができます。Lambda 関数コードは S3 バケットから写真オブジェクトを読み込み、サムネイルバージョンを作成して、それを別の S3 バケットに保存できます。

  • データと分析 – 分析アプリケーションを構築して、raw データを DynamoDB テーブルに保存するとします。テーブル内の項目を書き込み、更新、または削除した場合、DynamoDB ストリームは項目の更新イベントをテーブルに関連付けられたストリームに発行できます。この場合、イベントデータは、項目キー、イベント名 (挿入、更新、削除など)、その他関連する詳細情報を提供します。raw データを集約することでカスタムメトリクスを生成する Lambda 関数を記述できます。

  • ウェブサイト – ウェブサイトを作成して Lambda でバックエンドロジックをホストするとします。Amazon API Gateway を HTTP エンドポイントとして使用して、HTTP 経由で Lambda 関数を呼び出します。これで、ウェブクライアントが API を呼び出し、API Gateway がリクエストを Lambda にルーティングできるようになります。

  • モバイルアプリケーション – イベントを処理するカスタムモバイルアプリケーションがあるとします。カスタムアプリケーションによって発行されるイベントを処理するための Lambda 関数を作成できます。たとえば、このシナリオの場合、カスタムモバイルアプリケーション内のクリックを処理する Lambda 関数を設定できます。

AWS Lambda では、イベントソースとして、多くの AWS サービスをサポートしています。詳細については、「他のサービスで AWS Lambda を使用する」を参照してください。これらのイベントソースを Lambda 関数をトリガーするように設定する場合、Lambda 関数はイベントが発生すると自動的に呼び出されます。イベントソースマッピングを定義して、追跡して Lambda 関数を呼び出すイベントを識別できます。

以下に、イベントソースの入門例およびエンドツーエンドエクスペリエンスの動作を説明します。

例 1: Amazon S3 プッシュイベントと Lambda 関数の呼び出し

Amazon S3 は、PUT、POST、COPY、および DELETE オブジェクトイベントなど異なる種類のイベントをバケットに発行できます。バケットの通知機能を使用して、特定のタイプのイベントが発生した場合に Lambda 関数を呼び出すように Amazon S3 に指示するイベントソースマッピングを設定できます。

図は、以下のシーケンスを示します。

  1. ユーザーはバケット内にオブジェクトを作成します。

  2. Amazon S3 がオブジェクト作成イベントを検出します。

  3. Amazon S3 は、実行ロールによって付与されたアクセス許可を使用して Lambda 関数を呼び出します。

  4. AWS Lambda はイベントをパラメーターとして指定して、Lambda 関数を実行します。

関数をバケット通知アクションとして呼び出すように Amazon S3 を設定します。関数を呼び出すアクセス許可を Amazon S3 に付与するには、関数のリソースベースのポリシーを更新します。

例 2: AWS Lambda での Kinesis ストリームからのイベント取り出しと Lambda 関数呼び出し

ポーリングベースのイベントソースの場合、AWS Lambda がソースをポーリングし、ソースでレコードが検出されると、Lambda 関数が呼び出されます。

次の図は、カスタムアプリケーションが Kinesis ストリームにどのようにレコードを書き込むか示しています。

図は、以下のシーケンスを示します。

  1. カスタムアプリケーションは Kinesis ストリームにレコードを書き込みます。

  2. AWS Lambda はストリームのポーリングを継続し、サービスによってストリームに新しいレコードが検出されると Lambda 関数を呼び出します。AWS Lambda は、どのストリームをポーリングし、どの Lambda 関数を呼び出すかを、Lambda でユーザーが作成したイベントソースマッピングに基づいて判断します。

  3. Lambda 関数は、受信イベントに伴って呼び出されます。

ストリームベースのイベントソースを使用する場合は、AWS Lambda でイベントソースマッピングを作成します。Lambda は、ストリームからアイテムを読み取り、関数を非同期的に呼び出します。この関数を呼び出すためのアクセス許可を Lambda に付与する必要はありませんが、ストリームから読み出すためのアクセス許可は必要です。