前回、前々回からの続きです。
今回は、テストデータではなく
実際にトリガーを利用してLambdaを実行してみたいと思います。
トリガーはS3を選びました。
- ■はじめに
- ■Lambdaの起動状況を確認する
- ■作業イメージ
- ■流れ
- ■1.S3バケットの作成(testlambdapractice>folder1)
- ■2.Lambda関数の修正
- ■3.トリガーの設定
- ■4.S3バケットにテキストファイルを格納&Lambdaの起動状態を確認
■はじめに
テストデータと違い、
Lambdaのコンソールから動作状況を確認することができないため、
Lambdaの起動状況を確認する方法(CloudwatchLogsを利用)を記載します。
その後、実際にS3を使いLambdaを起動させてみます。
■Lambdaの起動状況を確認する
Lambdaが起動すると、
そのログは自動的にAWS CloudwatchLogsに格納されるようになっています。
確認方法は以下の通りです。
1.Cloudwatchをクリックします。
2.「ログ」>「ロググループ」をクリックします。
3.Lambda関数(ここでは、test1)が存在することを確認します。
ここで確認した通り、Lambda関数を特に意識せずに作成した場合には、
/aws/lambda/関数名 という形で自動的にロググループが作成されています。
4.対象のロググループをクリックします。
ここでは、/aws/lambda/test1 をクリックします。
5.画面下に「ログストリーム」タブがあり、そこにLambdaの起動履歴が表示されています。
6.試しにログストリームの内容を開いてみます。
ここでは、上記画像のものを開きます。
こんな感じに、元々テストデータを利用していた時のログ出力内容が、
CloudwatchLogs(ロググループ)に出力されていることがわかります。
以降から本題です。
今回はS3バケットにテキストファイルが格納された際に、Lambdaが起動するようにしたいと思います。
■作業イメージ
■流れ
1.S3バケットの作成
2.Lambda関数の修正
3.トリガーの設定
4.S3バケットにテキストファイルを格納&Lambdaの起動状態を確認
■1.S3バケットの作成(testlambdapractice>folder1)
1.S3を開きます。
2.「バケットを作成する」をクリックします。
3.「①名前とリージョン」で以下の通り入力し、「次へ」をクリックします。
記載していないところはデフォルトのままです。
バケット名: ※お好き名前で
4.「②オプションの設定」は何も入力せず、「次へ」をクリックします。
5.「③アクセス許可の設定」ではデフォルトのまま、「次へ」をクリックします。
※デフォルトで、「パブリックアクセスをすべてブロック」のチェックが入っているかと思いますが、チェックが入っていない場合には、チェックしてください。
6.「④確認」にて設定内容に間違いないことを確認し、「バケットを作成」をクリックします。
7.作成したバケットが表示されていることを確認し、クリックします。
※ここでは、lambdatestpractice です。
8.「フォルダの作成」をクリックします。
9.任意の名前を入力し、「保存」をクリックします。
ここでは、「folder1」としました。
■2.Lambda関数の修正
既にtest1というLambda関数を作成している為、これを少し修正したいと思います。
修正後のコードは以下の通りです。
import json from datetime import datetime def lambda_handler(event, context): print("■■■■■■■ テキストが格納されたため、Lambdaが起動しました。起動時刻> " + datetime.now().strftime("%Y/%m/%d %H:%M:%S") )
■3.トリガーの設定
今回は、トリガーにS3を選んだため、
事前にtestlambdapracticeバケットにfolder1フォルダーを作成しました。
ここでは、当該フォルダーに拡張子がtxtのものが格納された際に、
Lambdaが起動するように設定します。
1.「トリガーを追加」をクリックします。
2.プルダウンメニューから「S3」を選択します。
3.以下の通り入力し、画面右下の「追加」をクリックします。
バケット: testlambdapractice
イベントタイプ: すべてのオブジェクト作成イベント
プレフィックス: floder1/
サフィックス: .txt
トリガーの有効化: チェックされていること
再帰呼び出し: チェックを入れること
4.以下が表示されていることを確認します。また、デザイナー部分にS3が追加されていることも併せて確認します。
これでやっと準備が完了です。次は実際にS3にテキストファイル(拡張子がtxt)のものを格納してみます。
■4.S3バケットにテキストファイルを格納&Lambdaの起動状態を確認
1.適当に拡張子がtxtのものをデスクトップ上に一つ作成します。
ここでは、text1.txt を作成したことにします。
※別にデスクトップ以外でも構いません。便宜上、デスクトップとしました。
2.現在の時刻を確認し、text1.txt を S3バケットに格納します。
ここでは、testlambdapractice/folder1/の中にtext1.txtを格納します。
S3へのアップロード手順の詳細は割愛します。
大事なのは、トリガーとして設定したバケット(フォルダー)に拡張子txtのものが格納されることです。
3.CloudWatchのロググループを選択し、ログストリームを確認します。
※詳細な手順は、本記事の冒頭で記載しております。
上記の通り、テキストファイルがS3に格納されたことを契機に、
Lambdaで指定した関数が実行されていることが確認できます。
下図の内容が実施できたことになります。
以上です。