AWS Lambdaを利用したS3連携ハンズオン

 はじめに

今回はAmazon S3にオブジェクトを保存した際にAWS Lambdaが起動する仕組みを作成します。

動きとしてはS3に手動でオブジェクト(sample.jpg)を保存した際に、Lambdaが起動して”オブジェクトが保存されました”というログを表示する処理を行います。

 構成図

スクリーンショット 2021-11-13 8.42.20.png

 実装

1.Lambdaを設定する

1.1 AWSマネジメントコンソールからLambdaを検索する

1.検索ウィンドウよりLambdaと打ち込む
スクリーンショット 2021-11-13 8.52.35.png
2.関数の作成を押下する
スクリーンショット 2021-11-13 8.55.51.png

1.2 Lambda関数の作成をする

1.関数を新しく作成するので『一から作成』を選択
2.関数名は今回作成する関数の名前になるので各自で命名する
3.ランタイムで関数を実行するための言語を選択する(今回はPython3.9を選択しています)
4.以降はデフォルトのまま(実行ロールについても『基本的なLambdaアクセス権限で新しいロールを作成』のままで作成する)
スクリーンショット 2021-11-13 8.57.23.png

1.3 作成されたLambda関数にコードを記述する

1.作成されたLambda関数のコードソースにはステータスコード200がリターンされる仕様が記述されている

スクリーンショット 2021-11-13 12.12.22.png

2.コード5行目に”オブジェクトが保存されました”を表示されるように記述する
3.『Deploy』を押下して反映をさせる(押さないと反映されないので注意)

スクリーンショット 2021-11-13 9.59.36.png

4.反映後
スクリーンショット 2021-11-13 10.00.15.png

1.4 テストでLambda関数を確認する

1.『テスト』タグを選択して画面遷移する
2.テンプレート 一般『Hello World』を選択して任意の名前を打ちこむ
3.『テスト』ボタンを押下する

スクリーンショット 2021-11-13 10.02.29.png

4.実行結果が表示される(『ログ出力』の画面において”オブジェクトが保存されました”が表示されていることが確認できる)
スクリーンショット 2021-11-13 10.05.52.png

ここまででLambdaの設定は終了です

2.S3を作成する

2.1 S3でバケットを作成する

1.S3の画面に遷移する
スクリーンショット 2021-11-13 12.31.04.png

2.バケット名に一意の名前をつける
3.AWSリージョンはLambdaのあるリージョンと同じであるか確認をする
4.画面下の『バケットを作成』を押下する

スクリーンショット 2021-11-13 10.14.22.png

5.バケットが作成されたのを確認する
スクリーンショット 2021-11-13 10.16.05.png

2.2 バケットにLambdaと連携するように設定をする

1.作成されたバケットのプロパティを選択する
2.イベント通知の『イベント通知を作成』を押下する
スクリーンショット 2021-11-13 10.29.44.png

3.イベント通知の名前を任意でつける
※プレフィックスは接頭語・サフィックスは接尾語として、保存されるファイル名に対しての指示をすることができる

(例)『サフィックス』欄に『.jpg』とした場合、『〜.jpg』のみに対応したイベント通知を設定することができる

4.イベントタイプを選択する(粒度を細かくできますが、今回は『すべてのオブジェクト作成イベント』としてチェックをしています)
スクリーンショット 2021-11-13 10.40.30.png

5.Lambda関数の項目より1.Lambdaを設定するで作成した『Lambda関数名』を選択する
6.変更の保存を押下する
スクリーンショット 2021-11-13 10.47.21.png

7.正常に作成されたことが確認することができる
スクリーンショット 2021-11-13 10.50.37.png

ここまででS3の設定は終了です

3.再度Lambdaの画面に移動して設定を確認する

3.1 画面の確認を確認する

1.トリガーとして先ほど作成したS3が確認することができる
2.イベントタイプが2.2-4.イベントタイプを選択するで選択したタイプになっていることが確認できる
3.通知名が2.2-3.イベント通知の名前を任意でつけるでつけた名前が表示されていることが確認できる
スクリーンショット 2021-11-13 10.54.16.png

3.2 『設定』の『アクセス権限』を確認する

1.リソースの概要からLambdaがアクセス許可をした『Amazon CloudWatch Logs』が表示されていることが確認できる
→logs:CreateLogGroup(ロググループ作成の許可)
→logs:CreateLogStream(ログストリーム作成の許可)
→logs:PutLogEvents(ログイベント更新)

スクリーンショット 2021-11-13 11.12.19.png

2.リソースベースのポリシー
S3のバケットがLambdaを使用することが許可されていることを確認できる
スクリーンショット 2021-11-13 11.19.57.png

ここまででLambdaの設定確認は終了です

4.S3にオブジェクトを保存した際にLambdaが挙動するか確認する

4.1 S3にオブジェクトをアップロードする

1.S3にsample.pngをアップロードします
スクリーンショット 2021-11-13 11.46.02.png

2.S3にアップロードが成功する
スクリーンショット 2021-11-13 11.46.19.png

4.2 CloudWatchからLambdaの挙動を確認する

1.lambdaの『モニタリング』タグから『CloudWatchのログを表示』を押下する
スクリーンショット 2021-11-13 11.48.00.png

2.CloudWatchのロググループ画面に遷移して、ログストリームを選択する
スクリーンショット 2021-11-13 11.50.45.png

3.オブジェクトがS3に保存された際に”オブジェクトが保存されました”と表示されていることを確認することができる
スクリーンショット 2021-11-13 11.51.41.png

ここまでで挙動の確認は終了です

最後に

来週もLambdaを利用した構築をハンズオンの学習をしていきます

参照

サイト
AWS CloudTechのLambda講座
書籍
Amazon Web Services パターン別構築・運用ガイド 改訂第2版

Last modified: 2021-11-13

Author