はじめに
前々から、AWS SNSについて学ぼうと思っていたので、今回記事にしてみました。
AWS SNSとは
フルマネージド型のプッシュ型メッセージングサービス。
フルマネージド型サービスとはサービス提供以外にもAWS側が管理しているサービス。
サービスを利用することだけ考えればいいので、管理が楽。
AWS SNSを実装する
まずはAWSのコンソール画面からSNSを検索。
SNSの画面に遷移したら、トピックの作成をクリック。
Amazon SNS トピックは、通信チャネルとして機能する論理アクセスポイントです。
今回はeメールを送信する方向で実装を進めていくのでタイプをスタンダードに指定。
トピックを作成したら、次はサブスクリプションを作成する。
トピックのエンドポイントをサブスクライブし、サブスクリプションの確認を行うとメッセージの受信が可能になる。
プロトコルでエンドポイントの種類を選択。
今回はeメールでの受信を行いたいので、eメールに設定。
eメールを選択すると、プロトコルの下にエンドポイントの入力欄が出てくる。
ここでeメールを受信したいメールを入力。
サブスクリプションの作成ボタンを押すと、入力したメールアドレス宛に確認メールが届く。
確認メールの中身を開いて、確認用URLに飛んで認証をする。
これでトピックからメッセージを発行する際にeメールが送信されるようになる。
後はトピックからメッセージの発行を行うことで通知を行える。
lambdaでSNSを実行する
ここからはAWS lambdaでSNSを実行する手順。
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関数を実行すると、指定したメールアドレスにメールが送信されている。