S3 をトリガーにして Lambda を起動

Lambda 関数のトリガーを設定

  • Lambda のコンソールを開き、先ほど作成した関数 yyyymmdd-yourname-handson-function を開く
    • これ以降、S3 と Lambda の画面を行き来するので、別のタブで Lambda のコンソールを開いておくと作業が楽になります。
  • デザイナー の左側、トリガーを追加 を選択 トリガーを追加
  • トリガーとして S3 を選び、バケットに yyyymmdd-yourname-handson-bucket を選択 トリガーの設定
  • 残りの設定はデフォルトのまま、画面を下までスクロールし、再帰呼び出し の注意書きのチェックボックスにチェックを入れてから、追加 を選択

S3 バケットから再度画像をアップロードし、動作をテストする

S3 バケットに、画像 awslogo.png などを再度アップロードしてみましょう。ファイルのアップロードをトリガーとして Lambda 関数が動作する様子を、CloudWatch Logs から確認してみましょう。

ログの確認

また、S3 から発行されるイベント通知は JSON 形式になっており、以下のような形となっています。この例はドキュメントから抜粋したものです。

{  
   "Records":[  
      {  
         "eventVersion":"2.1",
         "eventSource":"aws:s3",
         "awsRegion":"us-west-2",
         "eventTime":"1970-01-01T00:00:00.000Z",
         "eventName":"ObjectCreated:Put",
         "userIdentity":{  
            "principalId":"AIDAJDPLRKLG7UEXAMPLE"
         },
         "requestParameters":{  
            "sourceIPAddress":"127.0.0.1"
         },
         "responseElements":{  
            "x-amz-request-id":"C3D13FE58DE4C810",
            "x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD"
         },
         "s3":{  
            "s3SchemaVersion":"1.0",
            "configurationId":"testConfigRule",
            "bucket":{  
               "name":"mybucket",
               "ownerIdentity":{  
                  "principalId":"A3NL1KOZZKExample"
               },
               "arn":"arn:aws:s3:::mybucket"
            },
            "object":{  
               "key":"HappyFace.jpg",
               "size":1024,
               "eTag":"d41d8cd98f00b204e9800998ecf8427e",
               "versionId":"096fKKXTRTtl3on89fVO.nfljtsv6qko",
               "sequencer":"0055AED6DCD90281E5"
            }
         }
      }
   ]
}