JAWS-UG CLI専門支部 SNSハンズオン オンライン参加
前回のSQSハンズオンに続き、参加させていただきました。
153R SNS入門
事前準備と概要
事前に公開されている Cloud9 を使った AWS CLI環境の構築 を用意しておきましょう。
bash を活用した手順なので、使い回しが楽のがGood!
コマンドはコピペで用意されているので、黒い画面が苦手な方でも大丈夫です。
仕組みとか
サービスの特色で比較。どちらも、中間レイヤー的な存在で、マイクロサービスの疎結合な作りなどに活用する。
- SNS : PUSH型 , トピック を扱う
- SQS : PULL型 , キュー を扱う
※発想としては UNIX の パイプのようなもの
- Publisher (発行者)が トピックに メッセージを送信
- Subscriber (購読者) のところに、メッセージが配信される
Subscriberとなれる人:5つ
- 人間が受け取る
- SMS
- AWSリソース
- SQS
- Lambda
- WebAPI
- HTTP/S
使い方
「通知 : Notification」サービスとして使うのが王道ではないか。
一番簡単な使い方は e-mail 通知。
開発当初は、e-mail通知からスタートしておいて、運用が始まったら Lambdaも購読者として登録してSlack通知も追加。
このように行っても、Publisher側の変更は発生しない。 (疎結合の良いところ)
使い方とか
e-mailは必ず配信に成功しない
SNS配信に失敗したものを、SQSデッドレター Queue にためておくという方法がある
e-mailは送りまくると良くない
SQSでキューイングして、ボチボチ送る方法が、Blackbeltにかいてあるらしい
開発をすすめる
同じトピックを、本番環境と開発環境で購読する。
開発環境側には、フィルタリングなどもかけてから流すこともできる。
メールテンプレート
メールテンプレートのカスタマイズの自由度は低いので、その時は Lambda でうけて SES で送るのが王道だろう。
使えるプロトコル
--protocol (string)
The protocol you want to use. Supported protocols include:
http – delivery of JSON-encoded message via HTTP POST
https – delivery of JSON-encoded message via HTTPS POST
email – delivery of message via SMTP
email-json – delivery of JSON-encoded message via SMTP
sms – delivery of message via SMS
sqs – delivery of JSON-encoded message to an Amazon SQS queue
application – delivery of JSON-encoded message to an EndpointArn for a mobile app and device.
lambda – delivery of JSON-encoded message to an Amazon Lambda function.
関連
e-mailの場合には Confirm メールが飛ぶ仕組みで、スパムなどにつながらないので良い。
メールの下にある unsubscribe リンクは、 attribute で無効化することができる
これかな?