AWS SNSについて 通知の送信とサブスクリプションの種類

個人開発したアプリの宣伝
目的地が設定できる手帳のような使い心地のTODOアプリを公開しています。
Todo with Location

Todo with Location

  • Yoshiko Ichikawa
  • Productivity
  • Free

スポンサードリンク

SNS (Simple Notification Service)はPub/Subメッセージングサービスを提供する。

他サービスからTopicに対しての通知を受け取り、他サービスへ再び通知します。

通知先はサブスクリプションで定義を行います。

SQSがメッセージの配送だとしたら、SNSは到着の通知を行う。

SQSが宅配便だとしたら、SNSはインターホン。のようなイメージかな(^_^;)


SNSトピックに対して通知する

pythonでの記述例。

sns = boto3.resource('sns')
topic = sns.Topic('arn:aws:sns:ap-northeast-1:****:yourTopicName')
topic.publish(
    Message='withMessage'
)

これでSNSのサブスクリプションに対して通知を行う。


サブスクリプションとして定義できる通知先

通知時のプロトコルは以下を選択できます。

f:id:letitride:20200609232524p:plain

プロトコル選択後、対応する通知先アドレスを指定します。


サブスクリプションをLambdaとして登録する

通知先をLambda関数にすることもできる。

この時、通知はhandler関数のevent引数から確認することができる。

def lambda_handler(event, context):
    # SNSの通知はeventから運ばれる
    for rec in event['Records']:
        snsmessage = rec['Sns']['Message']
        ...