Lambdaを使ってAmazon SNSからメールを飛ばしてみた


なりゆき

lambdaでSNS叩いてメール送りたいんじゃ~~
今時メールかよ・・・と思いつつ

設定方法

SNSトピック作成

SNSトピック作成ページを開き、名前を入力後にトピックの作成を押下する。

サブスクリプション作成

サブスクリプションの作成を押下する。
※次の画面でARNを選択するので覚えておくこと。

下記入力項目を入力し、サブスクリプションの作成を押下する。

トピックARN プロトコル エンドポイント
先ほどのARN Eメール 受信メールアドレス

サブスクリプション承認

エンドポイントに指定したメールアドレスに確認メールが送られてくるので、
Confirm subscriptionを押下する。

承認完了メッセージが表示される。

ステータスが保留中から確認済みになっていることを確認する。

Lambda関数作成

Lambda関数作成ウィザードを開く。

関数名 ランタイム 実行ロール ロール名 ポリシーテンプレート
SendMail Python3.7 AWSポリシーテンプレートから新しいロールを作成 SendMailUsingSNS Amazon SNS 発行ポリシー

コードを入力して保存ボタンを押下する。

コード

※TOPIC_ARNは各自のARNを入力

lambda_function.py
import boto3

def lambda_handler(event, context):
    client = boto3.client('sns')

    TOPIC_ARN = 'arn:aws:sns:*:*:*'     
    msg = 'Pythonからの\nテストメール'
    subject = 'ててて!ててて!て~て~♪'

    response = client.publish(
        TopicArn = TOPIC_ARN,
        Message = msg,
        Subject = subject
    )

    return response

終わり

あとは適当にトリガーを設定したらメールが飛びます。
lambdaの中で色々と呼び出して処理した結果をメールに添付することもできます。

参考情報

boto3公式ドキュメント
client.publish
クラスメソッドさん
boto3を使ってAmazon SNSへpublishしてみた