Lambdaを使って1日3回の挨拶をしてもらおう

tkmi
2024-09-12
2024-09-12

お疲れ様です。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時にメッセージが届きました!