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

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

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

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

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

    • Amazon S3 がイベントを発行するイベントタイプ。このチュートリアルでは、s3:ObjectCreated:* イベントタイプを指定します。

    • 呼び出す 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 CloudTrailEventProcessing \ --region us-west-2 \ --statement-id Id-1 \ --action "lambda:InvokeFunction" \ --principal s3.amazonaws.com \ --source-arn arn:aws:s3:::examplebucket \ --source-account examplebucket-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 にリクエストするため、examplebucket で通知設定を追加します。設定で、次のように指定します。

  • [Event type] — このチュートリアルでは、オブジェクトを作成する任意のイベントタイプを指定できます。

  • [Lambda function ARN] – これは Amazon S3 が呼び出す Lambda 関数です。ARN は次の形式です。

    Copy
    arn:aws:lambda:aws-region:account-id:function:function-name

    たとえば、us-west-2 リージョンで作成された CloudTrailEventProcessing 関数の ARN は次のようになります。

    Copy
    arn:aws:lambda:us-west-2:account-id:function:CloudTrailEventProcessing

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

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

すべて完了しました。これで、次のようにセットアップをテストできます。

  1. AWS アカウントで何らかのアクションを実行します。たとえば、Amazon SNS コンソールで別のトピックを追加します。

  2. このイベントに関する E メール通知を受信していることを確認します。

  3. AWS CloudTrail によってバケットにログオブジェクトが作成されます。

  4. ログオブジェクト (.gz ファイル) を開くと、ログには CreateTopic SNS イベントが表示されます。

  5. AWS CloudTrail で作成される各オブジェクトに対して、Amazon S3 はイベントデータとしてログオブジェクトを渡して Lambda 関数を呼び出します。

  6. Lambda は関数を実行します。この関数はログを解析し、CreateTopic SNS イベントを見つけると、ユーザーに E メール通知を送信します。

    Lambda 関数のアクティビティは、CloudWatch のメトリクスとログを使用してモニタリングできます。CloudWatch のモニタリングの詳細については、「Amazon CloudWatch を使用した AWS Lambda 関数のトラブルシューティングとモニタリング」を参照してください。