チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出す
このチュートリアルでは、コンソールを使用して Lambda 関数を作成し、Amazon Simple Storage Service (Amazon S3) のトリガーを設定します。トリガーは、Amazon S3 バケットにオブジェクトを追加するたびに関数を呼び出します。
サムネイルイメージ作成のするチュートリアルを試す前に、このコンソールベースのチュートリアルを完了することをお勧めします。
前提条件
Lambda および他の AWS のサービスを使用するには、AWS アカウントが必要です。アカウントをお持ちでない場合は、aws.amazon.com
このチュートリアルでは、基本的な Lambda オペレーションと Lambda コンソールについてある程度の知識があることを前提としています。初めての方は、コンソールで Lambda の関数の作成 の手順に従って最初の Lambda 関数を作成してください。
バケットを作成し、サンプルオブジェクトをアップロードする
Amazon S3 バケットを作成し、新しいバケットにテストファイルをアップロードします。コンソールから関数をテストするときに、Lambda 関数はこのファイルに関する情報を取得します。
コンソールを使用して Amazon S3 バケットを作成するには
-
Amazon S3 コンソール
を開きます。 -
[バケットを作成する] を選択します。
-
[全般設定] で、次の操作を行います。
-
[バケット名] に、一意の名前を入力します。
-
[AWS リージョン] で、リージョンを選択します。Lambda 関数をは同じリージョンで作成する必要があることにご注意ください。
-
-
[バケットを作成する] を選択します。
バケットを作成すると Amazon S3 で [Buckets] (バケット) ページが開き、現在のリージョンのアカウントにあるすべてのバケットが一覧表示されます。
Amazon S3 コンソールを使用してテストオブジェクトをアップロードするには
-
Amazon S3 コンソールの [Buckets
] (バケット) ページで、作成したバケットの名前を選択します。 -
[オブジェクト] タブで、[アップロード] を選択します。
-
テストファイルをローカルマシンから [アップロード] ページにドラッグします。
-
[Upload (アップロード)] を選択します。
Lambda 関数を作成する
関数の設計図を使用して Lambda 関数を作成します。設計図には、Lambda を 他の AWS サービスで使用する方法を示す、サンプルの関数が用意されています。また、設計図には、特定のランタイム用のサンプルコードと関数設定プリセットが含まれています。このチュートリアルでは、Node.js または Python ランタイムの設計図を選択できます。
コンソールで設計図から Lambda 関数を作成するには
Lambda コンソールの [Functions
] (関数) ページを開きます。 -
[Create function] を選択します。
-
[Create function (関数の作成)] ページで、[Blueprints (設計図)] を選択します。
-
[設計図] で、検索ボックスに「
s3
」と入力します。 -
検索結果で、次のいずれかの操作を行います。
-
Node.js 関数の場合は、[s3-get-object] を選択します。
-
Python 関数の場合は、[s3-get-object-python] を選択します。
-
-
[Configure] を選択します。
-
[基本的な情報] で、以下の作業を行います。
-
[関数名] に「
my-s3-function
」と入力します。 -
[実行ロール] ドロップダウンリストで、[AWS ポリシーテンプレートから新しいロールを作成] を選択します。
-
[ロール名] に「
my-s3-function-role
」と入力します。
-
-
[S3 トリガー] で、以前に作成した S3 バケットを選択します。
Lambda コンソールを使用して S3 トリガーを設定すると、コンソールは、関数のリソースベースのポリシーを、Amazon S3 が関数を呼び出せるように変更します。
-
[Create function] を選択します。
関数コードを確認する
Lambda 関数は、受信したイベントパラメータから、ソース S3 バケット名とアップロードされたオブジェクトのキー名を取得します。この関数は Amazon S3 getObject
API を使用して、オブジェクトのコンテンツタイプを取得します。
Lambda コンソール
コンソールでテストする
サンプルの Amazon S3 イベントデータを使用して手動で Lambda 関数を呼び出します。
コンソールを使用して Lambda 関数をテストします。
-
[Code source] (コードソース) の下の [Code] (コード) タブで、[Test] (テスト) の横にある矢印を選択し、ドロップダウンリストから [Configure test events] (テストイベントの設定) を選択します。
-
[テストイベントの設定] ページで、以下の操作を行います。
-
[Create new test event] を選択します。
-
[イベントテンプレート] で、[Amazon S3 Put (s3-put)] を選択します。
-
[イベント名] には、テストイベントの名前を入力します。例えば、
mys3testevent
です。 -
テストイベント JSON で、S3 バケット名 (
example-bucket
) とオブジェクトキー (test/key
) をバケット名とテストファイル名に置き換えます。テストイベントは、次のようになります。{ "Records": [ { "eventVersion": "2.0", "eventSource": "aws:s3", "awsRegion": "us-west-2", "eventTime": "1970-01-01T00:00:00.000Z", "eventName": "ObjectCreated:Put", "userIdentity": { "principalId": "EXAMPLE" }, "requestParameters": { "sourceIPAddress": "127.0.0.1" }, "responseElements": { "x-amz-request-id": "EXAMPLE123456789", "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH" }, "s3": { "s3SchemaVersion": "1.0", "configurationId": "testConfigRule", "bucket": { "name": "
my-s3-bucket
", "ownerIdentity": { "principalId": "EXAMPLE" }, "arn": "arn:aws:s3:::example-bucket" }, "object": { "key": "HappyFace.jpg
", "size": 1024, "eTag": "0123456789abcdef0123456789abcdef", "sequencer": "0A1B2C3D4E5F678901" } } } ] } -
[Create] を選択します。
-
-
テストイベントで関数を呼び出すには、[コードソース] で [テスト] を選択します。
[実行結果] タブには、次のような応答、関数ログ、リクエスト ID が表示されます。
Response "image/jpeg" Function Logs START RequestId: 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 Version: $LATEST 2021-02-18T21:40:59.280Z 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 INFO INPUT BUCKET AND KEY: { Bucket: 'my-s3-bucket', Key: 'HappyFace.jpg' } 2021-02-18T21:41:00.215Z 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 INFO CONTENT TYPE: image/jpeg END RequestId: 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 REPORT RequestId: 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 Duration: 976.25 ms Billed Duration: 977 ms Memory Size: 128 MB Max Memory Used: 90 MB Init Duration: 430.47 ms Request ID 12b3cae7-5f4e-415e-93e6-416b8f8b66e6
S3 トリガーでテストする
Amazon S3 ソースバケットにファイルをアップロードするときに、関数を呼び出します。
S3 トリガーを使用して Lambda 関数をテストするには
-
Amazon S3 コンソールの [Buckets] (バケット) ページ
で、前に作成したソースバケットの名前を選択します。 -
[Upload] (アップロード) ページで、いくつかの .jpg または .png イメージファイルをバケットにアップロードします。
Lambda コンソールの [Functions
] (関数) ページを開きます。 -
関数の名前 (my-s3-function) を選択します。
-
[Monitor] (モニタリング) タブを選択し、アップロードしたファイルごとに関数が 1 回実行されたことを確認します。このページでは、Lambda から CloudWatch に送信されるメトリクスのグラフが表示されます。[Invocations] (呼び出し) グラフ内のカウント数は、Amazon S3 バケットにアップロードしたファイルの数と一致している必要があります。
これらのグラフの詳細Lambda コンソールでの関数のモニタリングを参照してください。
-
(オプション) CloudWatch コンソールでログを表示するには、[View logs in CloudWatch] (CloudWatch でログを表示) を選択します。ログストリームを選択して、関数呼び出しの 1 つのログ出力を表示します。
リソースのクリーンアップ
このチュートリアル用に作成したリソースは、保持を希望しない場合、すぐに削除できます。使用しなくなった AWS リソースを削除することで、AWS アカウントに請求される料金が発生しないようにできます。
Lambda 関数を削除するには
-
Lambda コンソールの [Functions
] (関数) ページを開きます。 -
作成した関数を選択します。
-
[アクション] を選択してから、[削除] をクリックします。
-
[削除] を選択します。
IAM ポリシーを削除するには
-
AWS Identity and Access Management (IAM) コンソールの [Policies (ポリシー)] ページ
を開きます。 -
Lambda が作成したポリシーを選択します。ポリシー名は、AWSLambdaS3ExecutionRole- で始まります。
-
[ポリシーアクション]、[削除] の順に選択します。
-
[削除] を選択します。
実行ロールを削除するには
-
IAM コンソールの [Roles (ロール)] ページ
を開きます。 -
作成した実行ロールを選択します。
-
[ロールの削除] を選択します。
-
[はい、削除します] を選択します。
S3 バケットを削除するには
-
Amazon S3 コンソール
を開きます。 -
作成したバケットを選択します。
-
[削除] を選択します。
-
テキストボックスにバケットの名前を入力します。
-
[Confirm] を選択します。
次のステップ
詳細なチュートリアルをお試しください。このチュートリアルでは、S3 トリガーは関数を呼び出して、S3 バケットにアップロードされる各イメージファイルのサムネイルイメージを作成します。このチュートリアルでは、AWS と Lambda ドメインに関する中級レベルの知識が必要です。AWS Command Line Interface( AWS CLI) を使用してリソースを作成し、関数とその依存関係の .zip ファイルアーカイブデプロイパッケージを作成します。