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

ステップ 3: イベントソースを追加する (イベントを発行するように Amazon S3 を設定する)

このステップでは、残りの設定を追加し、Amazon S3 がオブジェクト作成イベントを AWS Lambda に発行し、Lambda 関数を呼び出せるようにします。このステップでは、以下の作業を行います。

  • Lambda 関数のアクセスポリシーに、この関数の呼び出しを Amazon S3 に許可するアクセス権限を追加します。

  • 通知設定をソースバケットに追加します。通知設定で、以下の項目を指定します。

    • Amazon S3 がイベントを発行するイベントタイプ。このチュートリアルでは、s3:ObjectCreated:* イベントタイプを指定し、オブジェクトが作成されたときに Amazon S3 がイベントを発行するようにします。

    • 呼び出す Lambda 関数。

ステップ 3.1: Lambda 関数のアクセス権限ポリシーにアクセス権限を追加する

  1. 以下の Lambda CLI add-permission コマンドを実行して、Amazon S3 サービスプリンシパル (s3.amazonaws.com) に lambda:InvokeFunction アクションを実行するためのアクセス権限を付与します。次の条件を満たす場合にのみ関数を呼び出すアクセス権限が Amazon S3 に付与されることに注意してください。

    • オブジェクト作成イベントが、特定のバケットで検出されます。

    • バケットは、特定の AWS アカウントによって所有されます。バケット所有者がバケットを削除した場合、他の一部の AWS アカウントは同じ名前でバケットを作成できます。この状態により、特定の AWS アカウントのみが Lambda 関数を実行できるようになります。

    Copy
    $ aws lambda add-permission \ --function-name CreateThumbnail \ --region us-west-2 \ --statement-id some-unique-id \ --action "lambda:InvokeFunction" \ --principal s3.amazonaws.com \ --source-arn arn:aws:s3:::sourcebucket \ --source-account bucket-owner-account-id \ --profile adminuser
  2. AWS CLI get-policy コマンドを呼び出すことで、関数のアクセスポリシーを確認します。

    Copy
    $ aws lambda get-policy \ --function-name function-name \ --profile adminuser

ステップ 3.2: バケットの通知を設定する

オブジェクト作成イベントを Lambda に発行するよう Amazon S3 にリクエストするため、ソースバケットで通知設定を追加します。設定で、次のように指定します。

  • イベントタイプ - このチュートリアルでは、ObjectCreated (All) Amazon S3 イベントタイプを選択します。

  • Lambda 関数 - これは Amazon S3 が呼び出す Lambda 関数です。

バケットに通知設定を追加する方法については、Amazon Simple Storage Service コンソールユーザーガイドイベント通知の有効化を参照してください。

ステップ 3.3: セットアップのテスト

すべて完了しました。これで adminuser は次のように設定をテストできます。

  1. Amazon S3 コンソールを使って、.jpg または .png オブジェクトをソースバケットにアップロードします。

  2. CreateThumbnail 関数を使用してサムネイルがターゲットバケットに作成されたことを確認します。

  3. adminuser は CloudWatch Logs を確認することもできます。Lambda 関数のアクティビティは、AWS Lambda コンソールでモニタリングできます。たとえば、関数が CloudWatch Logs に書き込んだログを含めて、ログを表示するには、コンソールで [logs] リンクを選択します。