自由気ままに書いちゃおう

好きなことをつらつらと・・・

AWS 初めてのLambda(本当の初心者向け4)

過去の記事でS3をトリガーとしたLambdaの実行を行いました。

www.guri2o1667.work

 
S3だけだとイメージを掴みづらいかもしれないので、もう1つ別のAWSサービスをトリガーとして使ってみようと思います。

■トリガーとして利用できるAWSサービスについて

既にS3をトリガーとして使えることは実証済みですが、
他にも下記の主要なAWSサービスが利用できます。

・ALB
・Cloudwatch Logs
・Cloudwatch Events(=EventBridge)
・CodeCommit
・DynamoDB
・S3
・SNS
・SQS


全量は下記サイトにございます。

他のサービスで AWS Lambda を使用する - AWS Lambda


今回は、Cloudwatch Eventsを使ったLambda起動をやってみます。

余談ですが、CloudwatchEventsは現在は旧称になっており、
現在は、EventBrideと言います。

■作業イメージ

CloudwatchEventsのスケジュール内容に連動し、Lambdaが起動するようにします。
今回は1分間隔でLambdaが起動するようにCloudwatchEventsを設定します。
f:id:guri2o1667:20200704195820p:plain

 

■流れ

1.Lambda関数の作成
2.Cloudwatch Eventsの設定
3.lambda関数のトリガー情報を確認
4.動作確認
5.後片付け

■1.Lambda関数の作成

詳細は下記記事で記載済みのため、ここではざっくりとした説明してませんがご了承ください。

www.guri2o1667.work

www.guri2o1667.work

www.guri2o1667.work

 

1.Lambda関数を新規作成し、以下のコードを設定します。
ここでは、Lambda関数をtest2としています。

import json
from datetime import datetime

def lambda_handler(event, context):
    print("■■■■■■■■  実行されました! 起動時刻> " + datetime.now().strftime("%Y/%m/%d %H:%M:%S") )


2.念のため、テストを実行し、エラーとならないことを確認します。

■2.CloudwatchEventsの設定

やり方はいくつかありますが、
個人的にわかりやすいと思われる方法を記載しております。

1.Cloudwatchを開きます。

2.「ルール」をクリックし、「ルールの作成」を選択します。

f:id:guri2o1667:20200704193200p:plain

f:id:guri2o1667:20200704193213p:plain


3.「スケジュール」を選択します。

f:id:guri2o1667:20200704193253p:plain


スケジュールを選択後、1分ごとに起動するようにしたいので、
下記の通り設定します。

f:id:guri2o1667:20200704193341p:plain

4.「ターゲットの追加」をクリックします。

f:id:guri2o1667:20200704193419p:plain

5.「Lambda関数」を選択します。
※デフォルトで選択されているはずですが、違うものが選択されている場合には変更してください。

f:id:guri2o1667:20200704193516p:plain


6.以下の通り設定し、「設定の詳細」をクリックします。
ここでは、事前に作成したLambda関数であるtest2を選択しています。
また、「バージョン/エイリアスの設定」「入力の設定」はデフォルトのままで大丈夫です。

f:id:guri2o1667:20200704193646p:plain

f:id:guri2o1667:20200704193721p:plain

7.適当な名前をつけ、「ルールの作成」をクリックします。
ここでは、「lambda-test2-func」としました。

f:id:guri2o1667:20200704193833p:plain

8.ルールが作成されたことを確認します。

f:id:guri2o1667:20200704193917p:plain

 

■3.lambda関数のトリガー情報を確認

1.再度、Lambdaを開きます。
ここでは、test2を開いています。

2.以下のように、トリガー部分にCloudwatchEventsが表示されていることを確認します。

f:id:guri2o1667:20200704194223p:plain


3.上記画像の「EventBridge(CloudwatchEvents)」をクリックします。

4.画面表示がトリガーに特化したものに切り替わります。
さきほど作成した内容が表示されているかと思います。

f:id:guri2o1667:20200704194415p:plain

■4.動作確認

1.Cloudwatchを開きます

2.左ペインで「ロググループ」をクリックします。

f:id:guri2o1667:20200704194533p:plain

3.対象のロググループを選択します。
ここでは、/aws/lambda/test2 を選択しています。

f:id:guri2o1667:20200704194621p:plain


4.最新のログストリームをクリックします。
※本来は、CloudwatchEventsを設定した時間のものを開きます。
クリックすると、1分ごとにLambda関数が実行されていることがわかるかと思います。

f:id:guri2o1667:20200704194939p:plain

■5.後片付け

このままですと、1分ごとにLambda関数が起動してしまうため、
一旦CloudwatchEventsを停止させます。

1.Cloudwatchの「イベント」>「ルール」をクリックし、今回設定したルールを選択します。
※ここでは、「lambda-test2-func」を選択しています。

2.画面右上の「アクション」をクリックし、「無効化」を選択します。

f:id:guri2o1667:20200704195208p:plain

3.ダイアログボックスが表示されるため、「無効化」をクリックします。

f:id:guri2o1667:20200704195236p:plain


4.再度ルールの画面を開き、ステータスが灰色時計になっていることを確認します。

f:id:guri2o1667:20200704195329p:plain


以上です。