Amazon SNSを使ってみた

AWS

Amazon SNSについて調べたので、まとめたいと思います。

概要

Amazon Simple Notification Serviceの略です。

配信者(パブリッシャー)から受信者(サブスクライバー)へのメッセージ配信を提供します。

パブリッシャーは「トピック」にメッセージを送信することでサブスクライバーにメッセージを送信します。トピックとは、一または複数のサブスクライバーにメッセージを提供するための場所(アクセスポイント)です。

SNSを使うことで、一または複数のサブスクライバーに対してメッセージを非同期で送信できます。

通信方式

SNSは、以下の2つの通信方式をサポートしています:

  • Application to Application(A2A)
    • アプリからアプリに通知します。通知先としては、Amazon SQSキュー、Lambda関数、HTTP/Sエンドポイントなどが挙げられます。詳細はこちらをご参照ください。
  • Application to Person(A2P)
    • アプリから個人(ユーザー)に通知します。通知方法としては、モバイルテキストメッセージング(SMS)、モバイルプッシュ通知、Eメール通知などが挙げられます。詳細はこちらをご参照ください。

FIFOおよび標準トピック

トピックには以下の2種類があります:

  • FIFO(First in First out)
    • メッセージがトピックに送信されるのと同じ順番で配信されます
    • 配信メッセージが重複しません
  • 標準
    • メッセージの配信順序が保証されません
    • メッセージが重複して配信される可能性があります

費用

こちらをご参照ください。

コンソールから操作

コンソールを使った操作(チュートリアル)についてはドキュメントがわかりやすいので、そちらをご参照ください。

AWS CLIから操作

トピックの作成

create-topicコマンドを使用します。

標準トピック

aws sns create-topic --name my-topic

FIFOトピック

aws sns create-topic --name my-topic.fifo --attributes FifoTopic=true

サブスクリプションの作成

sns subscribeコマンドを使用します。

次の例では、emailプロトコルとnotification-endpointのEメールアドレスを指定します。

aws sns subscribe --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic --protocol email --notification-endpoint saanvi@example.com

メッセージの発行

sns publishコマンドを使用します。

次の例は、「Hello World!」というメッセージを指定されたトピックのサブスクライバー全員に送信します。

aws sns publish --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic --message "Hello World!"

トピックからサブスクリプションを解除する

sns unsubscribeコマンドを使用し、サブスクリプションARNを指定します。

aws sns unsubscribe --subscription-arn arn:aws:sns:us-west-2:123456789012:my-topic:1328f057-de93-4c15-512e-8bb22EXAMPLE

トピックの削除

sns delete-topicコマンドを指定します。

aws sns delete-topic --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic

トピックの一覧の確認

sns list-topicsコマンドを使用します。

aws sns list-topics

本記事ではAmazon SNSについてまとめました。

コンソール、CLIを使った操作については試したのですが、SDK、terraform等を使った操作はまだ試していません。これらを試してまとめたいと思います。

プロフィール
この記事を書いた人

30代半ばで未経験でプログラマーに転職し、日々奮闘中です
プログラミング、AI、NLP、キャリア関連などで少しでも役に立てる情報を発信していきます

ユウをフォローする
AWS
ユウをフォローする

コメント

タイトルとURLをコピーしました