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

チュートリアル: Amazon S3 での AWS Lambda の使用

バケットにアップロードされる各画像 (.jpg および .png オブジェクト) のサムネイルを作成するとします。オブジェクトの作成時に Amazon S3 が呼び出すことができる Lambda 関数 (CreateThumbnail) を作成できます。その後、Lambda 関数は source バケットから画像オブジェクトを読み取り、ターゲットバケット (このチュートリアルでは sourceresized バケット) にサムネイル画像を作成できます。

重要

バケットは 2 つ使用する必要があります。ソースとターゲットに同じバケットを使用する場合、ソースバケットにアップロードされた各サムネイルは、別のオブジェクト作成イベントをトリガーし、これにより Lambda 関数が再び呼び出されて不要な再帰が行われます。

実装の要約

次の図はアプリケーションフローを示しています。

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

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

  3. Amazon S3 は、Lambda 関数を呼び出してそのパラメータとしてイベントデータを渡すことで、s3:ObjectCreated:* イベントを AWS Lambda に発行します。

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

  5. 受け取ったイベントデータから、Lambda 関数はソースバケット名とオブジェクトキー名を知ることができます。Lambda 関数がオブジェクトを読み取り、グラフィックスライブラリを使用してサムネイルを作成し、それをターゲットバケットに保存します。

このチュートリアルを完了すると、アカウントで以下の Amazon S3、Lambda、および IAM リソースが作成されます。

Lambda の場合

  • Lambda 関数。

  • Lambda 関数に関連付けられたアクセス権限ポリシー - このアクセス権限ポリシーを使用して、Lambda 関数を呼び出すためのアクセス権限を Amazon S3 に付与します。また、特定の AWS アカウントによって所有される特定のバケットからオブジェクト作成イベントに対してのみ、Amazon S3 が Lambda 関数を呼び出せるように、アクセス権限を制限します。

    注記

    AWS アカウントでバケットと他のいくつかの AWS アカウントを削除し、後に同じ名前のバケットを作成することが可能です。他の条件により、Amazon S3 が特定の AWS アカウントによって所有される特定のバケットからオブジェクト作成イベントを検出した場合のみ、Amazon S3 が Lambda 関数を呼び出すようにできます。

    詳細については、「仕組み」を参照してください。

IAM の場合

  • 管理者ユーザー - adminuser と呼ばれます。AWS アカウントのルート認証情報の使用はお勧めできません。このチュートリアルでは、代わりに adminuser の認証情報を使用してステップを実行します。

  • IAM ロール (実行ロール) - このロールに関連付けられたアクセス権限ポリシーを使用して、Lambda 関数に必要なアクセス権限を付与します。

Amazon S3 の場合

  • sourcesourceresized という名前の 2 つのバケット。source はプレースホルダー名であり、実際のバケット名に置き換える必要があります。たとえば、ソースとして example という名前のバケットがある場合、ターゲットバケットとして exampleresized を作成します。

  • ソースバケットの通知設定 - Amazon S3 が AWS Lambda に発行し、Lambda 関数が呼び出すイベントのタイプ (オブジェクト作成イベント) を識別する通知設定を、ソースバケットに追加します。Amazon S3 通知機能の詳細については、『Amazon Simple Storage Service 開発者ガイド』の「バケットイベントの通知の設定」を参照してください。

これで、チュートリアルを開始する準備ができました。最初の準備の後、チュートリアルは 2 つのメインセクションに分割される点に注意してください。

  • 最初に、必要なセットアップ手順を完了して Lambda 関数を作成し、Amazon S3 サンプルイベントデータを使用してその関数を手動で呼び出します。この中間テストにより、関数が機能することが確認されます。

  • 次に、オブジェクト作成イベントを検出したときに、Amazon S3 が Lambda 関数を呼び出すことができるように、ソースバケットに通知設定を追加します。

次のステップ

ステップ 1: 準備

このページの内容: