【AWS】Amazon SNS ~ 基本編 / Email ~

■ はじめに

https://dk521123.hatenablog.com/entry/2021/06/03/175213

の続きで、Amazon Simple Notification Service(SNS)について。

https://dk521123.hatenablog.com/entry/2021/10/06/141323

で、Airflow において、
 Amazon SNS経由でEmailを受信することになったので
メモしておく

目次

【1】Amazon SES との違い
【2】構築手順
 1)トピックを作成する
 2)Email用のサブスクリプションを作成する
 3)Email受信を許可する
 4)動作確認
【3】サンプル
 例1:AirflowでSNS経由でEmailを受信する

【1】Amazon SES との違い

* SES は、フルマネージド側Emailサーバ的なサービス(送受信)
* SNS は、Emailを含めたユーザへの通知を重きをおいた
 フルマネージド側サービス

比較表

* それ以外の違いは、以下の比較表を参照のこと。
 => 使ってみると、結構、違いがあるので、
  サービス採用する際に知っておいた方がいいかも。
 => 細かいことをやりたい場合は、SESを選択しておいた方がいいかも。
 => Amazon SES については、以下の関連記事を参照とのこと

https://dk521123.hatenablog.com/entry/2017/04/28/234103

# 項目 SNS SES 備考
1 HTMLメール 不可 可能 SNSはTextのみ
2 添付ファイル 不可 可能
3 Fromメールアドレスの事前登録 不要 必要 SNSはno-reply@sns.amazonaws.comから送られてくる

参考文献
https://qiita.com/shiro01/items/94aad0210917422d105f

* 現状、Amazon SESは、東京リージョンも対応されている模様
 => 以下の公式サイトを参照のこと。

https://aws.amazon.com/jp/blogs/news/amazon-ses-tokyo/

【2】構築手順

* Amazon SNSでEmailを設定する手順は以下の通り。

1)トピックを作成する
2)Email用のサブスクリプションを作成する
3)Email受信を許可する

1)トピックを作成する

[1] AWS管理コンソールでSNSページを表示する
[2] 「トピックの作成」ボタン押下
[3] 以下を選択し、「トピックの作成」ボタン押下
(特に指定しない項目は、デフォルトのまま)

 + タイプ:スタンダード
 + 名前:任意(今回は「hello-world-sns-demo」)
 + 表示名:任意(今回は「hello-world-sns-demo」)

2)Email用のサブスクリプションを作成する

「1)トピックを作成する」の流れで、、、

[1] 「サブスクリプションの作成」ボタン押下
[2] 以下を選択し、「サブスクリプションの作成」ボタン押下
(特に指定しない項目は、デフォルトのまま)
 + プロトコル:Eメール
 + エンドポイント:対象のEmailアドレス
 => 「Amazon SNSから通知を受信できるメールアドレス」
  って表示されているのでわかると思う

3)Email受信を許可する

 「2)Email用のサブスクリプションを作成する」を行うと
エンドポイントに指定されたEmailアドレスに以下のメールが届く。

 + タイトル:AWS Notification - Subscription Confirmation
 + From:{Topic name}<no-reply@sns.amazonaws.com>
({Topic name}は、今回は「hello-world-sns-demo」)

そのメール内のリンク「Confirm subscription」を押下する
 => これで、SNSでメール受信することを承諾したことになる。

4)動作確認

「3)Email受信を許可する」の流れで、、、

[1] 作成したトピックのページ内にある「メッセージの発行」ボタン押下
[2] 以下を入力し、「メッセージの発行」ボタン押下
 + 件名:任意のASCII文字(今回「Hello World」) ... ※
 + エンドポイントに送信するメッセージ本文:任意(今回「こんにちは世界」)

 => 設定したアドレスにメールが届いているはず。

※ 使用上の注意

* 件名(Subject)に日本語は入力できない(入力したらエラー表示)
 => ただ、API経由なら使えるっぽい

* 件名(Subject)は、100文字以内
 => 以下のAPI仕様より抜粋、「must be less than 100 characters long」

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sns.html#SNS.Client.publish

 => 詳細は、以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2022/02/03/151049

【3】サンプル

例1:AirflowでSNS経由でEmailを受信する

* 以下の関連記事を参照のこと。

Apache Airflow ~ 通知サンプル編 ~
https://dk521123.hatenablog.com/entry/2021/10/09/000000

関連記事

Amazon SNS ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2021/06/03/175213
Amazon SNSAWS CLI
https://dk521123.hatenablog.com/entry/2024/02/21/141346
Amazon SNS に関するトラブル
https://dk521123.hatenablog.com/entry/2022/02/03/151049
Amazon SES ~ Emailサービス ~
https://dk521123.hatenablog.com/entry/2017/04/28/234103
Apache Airflow ~ 通知あれこれ編 ~
https://dk521123.hatenablog.com/entry/2021/10/06/141323
Apache Airflow ~ 通知サンプル編 ~
https://dk521123.hatenablog.com/entry/2021/10/09/000000
Apache Airflow に関するトラブル
https://dk521123.hatenablog.com/entry/2021/10/03/000000