はじめに
本記事ではAWSのLambdaとSNSを使用して、Lambdaが実行されたときにSNSのトピックに登録されてる宛先にメール通知をする処理を実装していきます。
ゴール
Lambdaを実行してSNSのトピックに登録してる通知先にメール通知が来ることを確認する
1. SNSトピックの作成
トピックを作成していきます。
メッセージの処理順序は気にしないので スタンダード
を選択し、任意の名前でトピックを作成します。
トピックを作成したら通知先のEメールを登録したサブスクリプションを作成していきます。
プロトコルとエンドポイントを入力出来たら サブスクリプション
を押下します。
- プロトコル:Eメール
- エンドポイント:任意のメールアドレス(通知先)
SNSのトピックを作成すると AWS Notification - Subscription Confirmation
で認証のメールが届くので、対象のメールを確認してください。
2. Lambdaの作成
SNSのトピック > サブスクリプションに登録したメールアドレスに通知を出す用のLambdaを作成していきます。
TopicArn
のところは作成したSNSのARN値で置き換えてください。
lambda_function.py
import json
import boto3
# SNSクライアントの初期化
sns = boto3.client('sns')
def lambda_handler(event, context):
# メールの本文
message = "これはテスト通知メッセージです。"
# メールのタイトル
subject = "Lambda からの通知"
try:
# SNSトピックにメッセージを発行
response = sns.publish(
TopicArn='SNSトピックのARNをコピペ',
Message=message,
Subject=subject
)
return {
'statusCode': 200,
'body': json.dumps('通知が送信されました')
}
except Exception as e:
return {
'statusCode': 500,
'body': json.dumps(str(e))
}
3. 動作の確認
Lambdaのテストイベントを作成し、実際にテスト実行します。
Lambdaを動かす際にはIAMのポリシーからSNSの権限付与を行っていてください。
実行すると数秒で AWS Notifications
から、次の内容でメールが届いている事が確認できます。
通知メール
- メールタイトル:Lambda からの通知
- メール本文:これは通知メッセージです。