0
Help us understand the problem. What are the problem?

posted at

updated at

Organization

AWS SNSでeメールを送信する

はじめに

前々から、AWS SNSについて学ぼうと思っていたので、今回記事にしてみました。

AWS SNSとは

フルマネージド型のプッシュ型メッセージングサービス。
フルマネージド型サービスとはサービス提供以外にもAWS側が管理しているサービス。
サービスを利用することだけ考えればいいので、管理が楽。

AWS SNSを実装する

まずはAWSのコンソール画面からSNSを検索。

AWS-SNS説明資料1.png

SNSの画面に遷移したら、トピックの作成をクリック。

Amazon SNS トピックは、通信チャネルとして機能する論理アクセスポイントです。

AWS-SNS説明資料2.png

今回はeメールを送信する方向で実装を進めていくのでタイプをスタンダードに指定。

トピックを作成したら、次はサブスクリプションを作成する。
トピックのエンドポイントをサブスクライブし、サブスクリプションの確認を行うとメッセージの受信が可能になる。

AWS-sns説明資料3.png

プロトコルでエンドポイントの種類を選択。
今回はeメールでの受信を行いたいので、eメールに設定。

eメールを選択すると、プロトコルの下にエンドポイントの入力欄が出てくる。
ここでeメールを受信したいメールを入力。

サブスクリプションの作成ボタンを押すと、入力したメールアドレス宛に確認メールが届く。
確認メールの中身を開いて、確認用URLに飛んで認証をする。

これでトピックからメッセージを発行する際にeメールが送信されるようになる。

後はトピックからメッセージの発行を行うことで通知を行える。

lambdaでSNSを実行する

ここからはAWS lambdaでSNSを実行する手順。

AWS-sns説明資料4.png

lambdaのポリシーテンプレートからもSNS発行ポリシーをアタッチできる。

今回はpythonの3.9で実装。

import boto3

def lambda_handler(event, context):
    
    sns = boto3.resource('sns')
    platform_endpoint = sns.PlatformEndpoint('MY TOPIC ARN')
    
    msg = """testです\n
             testです\n
             testです"""
    subject = "test"

    response = platform_endpoint.publish(
        Message = msg,
        Subject = subject
    )

    return response

これでlambda関数を実行すると、指定したメールアドレスにメールが送信されている。

参考資料

boto3 ドキュメント

AWS SNSドキュメント

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?