お疲れ様です。tkmiです。
日々デスクへ向かってモニターに話しかける毎日。でもモニターからの返事はありません・・(あったら怖い)
何か定期的に話しかけて・・そうだ!以前のLambdaからSlackに話しかけた方法でLambdaに1日3回の挨拶メッセージを送信してもらおう!なんて思って作ってみました。
Lambdaに時間帯ごとのメッセージ処理を追加
以前作成したLambdaに、時間帯ごとにメッセージを変更して返す処理を追加します。
import os
import urllib3
import json
import datetime
from dateutil import tz
http = urllib3.PoolManager()
def lambda_handler(event, context):
url = os.environ['SLACK_URL']
greeting_msg = get_greeting()
msg = {
"channel": "#fromlambda",
"username": "",
"text": greeting_msg,
"icon_emoji": ""
}
encoded_msg = json.dumps(msg).encode('utf-8')
resp = http.request('POST', url, body=encoded_msg)
print({
"message": "Hello From Lambda",
"status_code": resp.status,
"response": resp.data
})
def get_greeting():
current_hour = datetime.datetime.now(tz=tz.gettz('Asia/Tokyo')).hour
if 4 <= current_hour < 11:
return "おはようございます!"
elif 11 <= current_hour < 17:
return "こんにちは!"
else:
return "こんばんは!"
以下の時間帯に実行された場合、それぞれのメッセージを送信するようにします。
4時~11時:おはようございます!
11時~17時:こんにちは!
それ以外(17時~翌4時):こんばんは!
トリガーを追加して1日3回実行する
Lambdaの画面からトリガーを設定します。
関数のトリガーを設定するために、[トリガーの追加]ボタンをクリックします。
トリガーの設定画面に切り替わりますので、「ソースを選択」からトリガーとするものを選択します。
トリガーには様々なAWSのサービスを選択することができます。
今回はスケジュール式で設定したいので「EventBridge(CloudWatch Events)」を選択します。
「新規ルールを作成」を選択し、必要な情報を入力します。
ルールタイプは「スケジュール式」を選択し、今回はCronの方式で設定しました。
平日(月-金)の9時、12時、18時に実行されるようにします。
UTCでの指定になりますので、時差に注意してください。
設定が完了しました!
あとは時間まで待ちましょう。
前日の夕方に設定したので前後してますが、9時、12時、18時にメッセージが届きました!