メニュー
AWS Lambda
開発者ガイド

AWS Lambda を Amazon S3 に使用する

Amazon S3 は AWS Lambda にイベントを発行し (オブジェクトがバケット内に作成されたときなど)、パラメータとしてイベントデータを渡すことで Lambda 関数を呼び出すことができます。この統合により、Amazon S3 イベントを処理する Lambda 関数を記述できます。Amazon S3 で、Amazon S3 によって発行されるイベントのタイプと、呼び出す Lambda 関数を識別するバケット通知設定を追加します。

Amazon S3 と AWS Lambda 統合のしくみについては、以下の点に注意してください。

  • ストリームベースではない (非同期の) モデル - これは、Amazon S3 がバケットをモニタリングし、パラメーターとしてイベントデータを渡すことで Lambda 関数を呼び出すモデルです (「イベントソースマッピング」を参照)。プッシュモデルでは、バケットの通知設定を使用して Amazon S3 内にイベントソースマッピングを保持します。設定で、Amazon S3 がモニタリングするイベントのタイプと、Amazon S3 が呼び出す AWS Lambda 関数を指定します。詳細については、Amazon Simple Storage Service 開発者ガイドAmazon S3 イベント通知の設定を参照してください。

  • 非同期呼び出し – AWS Lambda は、Event 呼び出しタイプ (非同期呼び出し) を使用して Lambda 関数を呼び出します。呼び出しタイプの詳細については、「呼び出しタイプ」を参照してください。

  • イベント構造 - Lambda 関数が受け取るイベントは、単一のオブジェクトのものであり、バケット名、オブジェクトキー名などの情報を渡します。

エンドツーエンドのエクスペリエンスを設定するときは、以下の 2 タイプのアクセス権限ポリシーを使用します。

  • Lambda 関数のアクセス権限 - Lambda 関数の呼び出し元にかかわらず、AWS Lambda は、Lambda 関数の作成時に指定された IAM ロール (実行ロール) を引き受けることで、その関数を実行します。このロールに関連付けられたアクセス権限ポリシーを使用して、Lambda 関数に必要なアクセス権限を付与します。たとえば、Lambda 関数にオブジェクトの読み取りが必要である場合は、アクセス権限ポリシーで、関連する Amazon S3 アクションのためのアクセス権限を付与します。詳細については、「アクセス権限の管理: IAM ロール (実行ロール) を使用する」を参照してください。

  • Amazon S3 が Lambda 関数を呼び出すためのアクセス権限 - アクセス権限が付与されていない場合、Amazon S3 は Lambda 関数を呼び出すことはできません。Lambda 関数に関連付けられるアクセス権限ポリシーを使用して、このアクセス権限を付与します。

以下の図はフローをまとめたものです。

  1. ユーザーが S3 バケットにオブジェクトをアップロードします (オブジェクト作成イベント)。

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

  3. Amazon S3 は、バケットの通知設定で指定されている Lambda 関数を呼び出します。

  4. AWS Lambda は、Lambda 関数の作成時に指定された実行ロールを引き受けることで、Lambda 関数を実行します。

  5. Lambda 関数が実行されます。

セットアップの例を説明しているチュートリアルについては、「チュートリアル: Amazon S3 での AWS Lambda の使用」を参照してください。