【保存版】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 クリーンアップを行おう
テストが終わり、不要になったS3、Lambdaは適切に削除を行いましょう。
継続的に料金が発生しないように、とても大事な処理です。
もしやり方がご不明なら、下の記事のそれぞれ最後の章をご参考ください。
S3のクリーンアップ
Lambdaのクリーンアップ
今回は以上です。
最後までありがとうございました!
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊