チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出す
このチュートリアルでは、Lambda コンソールを使用して関数を作成し、Amazon Simple Storage Service (Amazon S3) のトリガーを設定します。トリガーは、Amazon S3 バケットにオブジェクトを追加するたびに、関数を呼び出します。
サムネイルイメージを作成するチュートリアルを試す前に、このコンソールベースのチュートリアルを完了することをお勧めします。
前提条件
このチュートリアルでは、基本的な Lambda オペレーションと Lambda コンソールについてある程度の知識があることを前提としています。まだ作成していない場合は、「Lambda の使用を開始する」の指示に従って、最初の Lambda 関数を作成します。
バケットを作成し、サンプルオブジェクトをアップロードする
Amazon S3 バケットを作成し、新しいバケットにテストファイルをアップロードします。コンソールから関数をテストするときに、Lambda 関数はこのファイルに関する情報を取得します。
コンソールを使用して Amazon S3 バケットを作成するには
-
Amazon S3 コンソール
を開きます。 -
[バケットを作成する] を選択します。
-
[全般設定] で、次の操作を行います。
-
[バケット名] に、一意の名前を入力します。
-
[AWS リージョン] で、リージョンを選択します。同じリージョンで Lambda 関数を作成する必要があることにご注意ください。
-
-
[バケットを作成する] を選択します。
バケットを作成すると、Amazon S3 は [バケット] ページを開き、現在のリージョンのアカウント内のすべてのバケットの一覧が表示されます。
Amazon S3 コンソールを使用してテストオブジェクトをアップロードするには
-
Amazon S3 コンソールの [バケット
] ページで、作成したバケットの名前を選択します。 -
[オブジェクト] タブで、[アップロード] を選択します。
-
テストファイルをローカルマシンから [アップロード] ページにドラッグします。
-
[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 が関数を呼び出せるように、コンソールは関数のリソースベースのポリシーを変更します。
-
[関数の作成] を選択します。
関数コードを確認する
Lambda 関数は、受信したイベントパラメータから、ソース S3 バケット名とアップロードされたオブジェクトのキー名を取得します。この関数は Amazon S3
getObject
API を使用して、オブジェクトのコンテンツタイプを取得します。
Lambda コンソール
コンソールでテストする
サンプルの Amazon S3 イベントデータを使用して手動で Lambda 関数を呼び出します。
コンソールを使用して Lambda 関数をテストします。
-
[コード] タブの [コードソース] で、[テスト] の横にある矢印を選択し、ドロップダウンリストから [テストイベントの設定] を選択します。
-
[テストイベントの設定] ページで、以下の操作を行います。
-
[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 コンソールの [バケット
] ページで、前に作成したソースバケットの名前を選択します。 -
[アップロード] ページで、いくつかの .jpg または .png イメージファイルをバケットにアップロードします。
-
Lambda コンソールの [Functions (関数)
] ページを開きます。 -
関数の名前 (my-s3-function) を選択します。
-
[モニタリング] タブを選択し、アップロードしたファイルごとに関数が 1 回実行されたことを確認します。
-
(オプション) CloudWatch コンソールでログを表示するには、[CloudWatch でログを表示] を選択します。ログストリームを選択して、関数呼び出しの 1 つのログ出力を表示します。
リソースのクリーンアップ
このチュートリアル用に作成したリソースは、保持する必要がなければ、削除できます。使用しなくなった AWS リソースを削除することで、AWS アカウントに請求される料金が発生しないようにできます。
Lambda 関数を削除するには
-
Lambda コンソールの [Functions (関数)
] ページを開きます。 -
作成した関数を選択します。
-
[ Actions] で、[Delete ] を選択します。
-
[削除] を選択します。
IAM ポリシーを削除するには
-
AWS Identity and Access Management (IAM) コンソールの [ポリシーページ
] を開きます。 -
Lambda が作成したポリシーを選択します。ポリシー名は、AWSLambdaS3ExecutionRole- で始まります。
-
[ポリシーアクション]、[削除] の順に選択します。
-
[削除] を選択します。
実行ロールを削除するには
-
IAM コンソールのロールページ
を開きます。 -
作成した実行ロールを選択します。
-
[ロールの削除] を選択します。
-
[はい、削除します] を選択します。
次のステップ
詳細なチュートリアルをお試しください。このチュートリアルでは、S3 トリガーは関数を呼び出して、S3 バケットにアップロードされる各イメージファイルのサムネイルイメージを作成します。このチュートリアルでは、AWS と Lambda の中程度のレベルのドメイン知識が必要です。AWS Command Line Interface( AWS CLI) を使用してリソースを作成し、関数とその依存関係の .zip ファイルアーカイブデプロイパッケージを作成します。