【保存版】AWSのS3へのオブジェクトのアップロードでLambda関数を呼び出そう!

こんにちは、CryptoGamesの高橋です。

クリスペというサービスを行っている会社です。

本日は、下のチュートリアルを参考に、S3へのオブジェクトアップロードでLambda関数を呼び出す処理を行っていきます。

0 料金の確認を行う

事前に料金を確認した上で進む事を推奨します。

1 S3を立ち上げる

では、始めましょう。

AWSアカウントがない方はアカウントを作成後、下のようにS3を立ち上げましょう。

2 バケットの作成とオブジェクトの保存を行う

2ー1 バケットを作成する

では、まずはオブジェクトを入れるバケットを作りましょう。

任意の名前を入れて、「バケットを作成」です。

2ー2 オブジェクトを保存する

では、バケットができたのでオブジェクトを保存しましょう。

下の場所に任意のオブジェクトをドラッグ&ドロップします。

あとは「アップロード」で保存が完了です。

3 Lambdaを立ち上げる

では、まずは下のようにしてLambdaを立ち上げましょう。

4 Lambda関数を作成する

では、Lambda関数を作成していきましょう。

「関数を作成」を押します。

テンプレートとしてあるコードを利用したいので「設計図の使用」から進んでいきます。

「s3-get-object」を選択して「設定」に進みます。
s3-get-object-pythonでも大丈夫です。)

任意の関数名をつけ、先に進んでいきます。

S3トリガーではどのバケットがトリガーになるのかを選択します。

第2章で作ったバケットを選択します。

関数のコードは自動で下のように作られています。

気になる方はご参照ください。

なお、ログでバケット名なども表示させたかったので、下のように一行追加しました。

console.log('params:', params);

追加を行った上で、「関数の作成」を押します。

5 テストを実行しよう

ではテストイベントを作ってテストをしてみましょう。

下のように「テンプレート」から「s3-put」を選んでみましょう。

その後、下のように修正しましょう。

例えばテンプレートのリージョンはアメリカの「us-east-1」になっています。

できたら「保存」を押します。

「テスト」を実行し、下のようになれば成功です。

下のようにエラーが出たら、落ち着いて見てみましょう。

この場合は「key」であるオブジェクト名をS3内に存在しない「test2.png」としたことでエラーが起きています。


6 S3のイベント通知を設定しよう

6ー1 Lambdaが反応しないのは?

では実際に、S3にデータを入れて、Lambdaが反応するか見てみましょう。

。。あれ?データを入れても反応しません。

これは、まだイベント通知を設定していないためです。

6ー2 イベント通知を設定しよう

では、設定しましょう。

S3の今回のバケットから「プロパティ」を選択

「イベント通知」から「イベント通知を作成」を選択します。

任意のイベント名を入れ、どんなイベントが起きた時に通知を行うかを設定します。

今回は下のように、オブジェクトが作成された時に通知を行います。

イベントが起こった時に、どこに通知を行うのかを設定します。

今回は下のようにLambda関数に通知を行います。

このようにイベント通知が完成しました。

7 S3にアップロードして確認しよう

では、確認してみましょう。

7ー1 S3への任意のファイルのアップロード

第4章のイベント通知設定後、下のように任意のファイルアップロードします。

7ー2 Lambdaへの通知確認

では、Lambdaで作成した関数を見てみましょう。

下のようにメトリクスが作成されていました!

なお、初回は少し反映に時間がかかるかもしれません。

「CloudWatchのログを表示」も見てみましょう。

下のように、ログストリームができていました。

選択すると、このように、ログがきちんと出ていることが確認できます。

8 クリーンアップを行おう

テストが終わり、不要になったS3Lambdaは適切に削除を行いましょう。
継続的に料金が発生しないように、とても大事な処理です。

もしやり方がご不明なら、下の記事のそれぞれ最後の章をご参考ください。

S3のクリーンアップ

Lambdaのクリーンアップ

今回は以上です。

最後までありがとうございました!

サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊