0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS Lambda + SNS でメール通知機能を実装してみた

Last updated at Posted at 2024-10-23

はじめに

本記事ではAWSのLambdaとSNSを使用して、Lambdaが実行されたときにSNSのトピックに登録されてる宛先にメール通知をする処理を実装していきます。

ゴール

Lambdaを実行してSNSのトピックに登録してる通知先にメール通知が来ることを確認する

1. SNSトピックの作成

トピックを作成していきます。
メッセージの処理順序は気にしないので スタンダード を選択し、任意の名前でトピックを作成します。

image.png

トピックを作成したら通知先のEメールを登録したサブスクリプションを作成していきます。
プロトコルとエンドポイントを入力出来たら サブスクリプション を押下します。

  • プロトコル:Eメール
  • エンドポイント:任意のメールアドレス(通知先)

image.png

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 からの通知
- メール本文:これは通知メッセージです。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?