せっかくなので、東京リージョンでLambdaを設定していきたいと思います。
「Get Started Now」をクリックします。
Lambdaでは「Function(機能)」という入れ物を使ってコードの管理を行います。
Functionを作成するにあたって、テンプレート替わりになる「blueprint(青写真)」を選ぶことができます。
今回は「s3-get-object」を選択します。
この画面ではイベント発信元の設定を行います。
「Bucket」に対象のs3バケットを指定し、今回は「Event type」に「Object Created」を指定します。
Event Typeにはその他にも下記を指定することが出来ます。
Complete Multipart Upload
Copy
Delete
Delete Maker Created
Object Removed
Post
Put
Complete Multipart Upload
Copy
Delete
Delete Maker Created
Object Removed
Post
Put
Reduced Redundancy Lost Object
この画面ではFunctionの設定を行います。
Functionの名前、説明文、コードの形式(Node.js or Java 8)を設定します。
※なお、設定内容はアップロードされたオブジェクトのメタデータ情報を取得するというものです。
この画面では今回はIAMロールの設定を行います。
Suggested roleで示唆されている「S3 execution role」を設定します。
別ウィンドウが開き、IAMロールの作成を行えます。
「IAM Role」で「Create a new IAM Role」を選択するだけで作成ができます。
また、ポリシーを確認することも出来ます。
確認画面では、すぐに実行させるかどうかを選択します。
問題が無ければ「Create function」をクリックします。
StateがEnabledになっていれば設定完了です。
動作確認
それでは、イベント通知を設定したS3バケットにテキストファイルをアップロードしてみます。
アップロードを実行するとそれをトリガーにLambdaへと通知が為され、CloudWatch logsに出力されます。
該当のLog Streamsをクリックします。
ログが出力されており、ファイルのメタデータとして「CONTENT TYPE: text/plain」となっているのが確認できます。
今回紹介したイベント通知機能を応用してS3バケットへの不正なファイルアップロードやファイル削除を検知するという使い方もできます。
次回もお楽しみに!!