SNSでSQSをサブスクライブする背後にある考え方は、SNSからSQSにメッセージを送信することです。 生のメッセージとSNSメッセージに含まれる他のメッセージ属性の両方を送信できます。 この記事を進める前に、アカウントにSNSとSQSがあることを前提としています。 SNSとSQSの作成は、この記事の範囲外です。
SNSは複数のSQSキューをサブスクライブすることができ、SNSはすべてのサブスクリプションに同じメッセージを公開します。
AWSの公式ページにアクセスして、 SNS そして SQS。
前提条件
- AWSアカウント(作成する お持ちでない場合)。
- SNSトピック(SNSトピックの作成方法については、ここをクリックしてください)
- SQSトピック
何をしたらいいでしょう?
- AWSにログインします。
- SNSを確認してください。
- SQSを確認し、そのアクセスポリシーを変更します。
- SNSからSQSへのサブスクリプションを作成します。
- SQSでメッセージをポーリングし、SNSからメッセージを送信します。
- サブスクリプションを削除します。
AWSにログインします
AWSアカウントにログインするには、 ここに 資格情報を入力します
アカウントに正常にログインすると、次のようなメインのAWS管理コンソールが表示されます。
SNSをチェック
画面上部の検索ボックスでSNSを検索します。
SNSダッシュボードは次のように表示されます。 左側のパネルの「トピック」をクリックします。
ここでは、選択したリージョンの下のアカウントにある既存のSNSトピックが表示されます。 「sns-test」SNSトピックを使用します。 目的のトピックをクリックして、詳細を確認してください。
ここでは、トピックにはサブスクリプションがありません。
SQSを確認し、アクセスポリシーを変更します
画面上部の検索ボックスでSQSを検索します。
AWSアカウントの選択したリージョンで利用可能なSQSキューのリストを含むSQSのメインダッシュボードが次のように表示されます。 ここでは、「sqs-test」キューを使用します。 SQSトピックをクリックして詳細を確認し、アクセスポリシーを変更します。
[アクセスポリシー]タブに移動してデフォルト/既存のポリシーを変更し、[編集]ボタンをクリックします。
アクセスポリシーで、潜在的なアクセスの問題を回避し、変更を保存するために、プリンシパルブロックの下のアカウントarnを*に置き換えます。 これは、本番アカウントでは推奨されません。
SNSからSQSへのサブスクリプションを作成する
SNSトピックに移動し、[サブスクリプションの作成]ボタンをクリックしてサブスクリプションを作成します。
ここで、プロトコルをAmazon SQSに変更し、エンドポイントフィールドにSQSトピックのARNを指定します。[生のメッセージ配信を有効にする]チェックボックスをオンにして、[サブスクリプションの作成]ボタンをクリックします。
ここで、SNSトピックに移動すると、サブスクリプションが正常に作成され、ステータスが確認されたことがわかります。
SQSでメッセージをポーリングし、SNSからメッセージを送信します。
SNSトピックから送信されたときにメッセージがSQSに到着するかどうかをテストできます。 これをテストするには、SQSトピックに移動し、[メッセージの送受信]ボタンをクリックします。
ここで「メッセージのプール」ボタンをクリックします。
「メッセージのポーリング」ボタンをクリックしたらすぐに、SNSトピックに移動し、「メッセージの公開」ボタンをクリックします。
ここで、メッセージに件名を追加し、「各配信プロトコルのカスタムペイロード」オプションを選択します。
少し下にスクロールして、[メッセージの公開]ボタンをクリックします。
ここで、SQSページに戻ると、メッセージがSQSによって受信されたことがわかります。
メッセージIDをクリックして、SNSから送信されたものを確認します。
本文セクションでは、SNSによって送信されたメッセージがSQSによって正常に受信されたことがわかります。
サブスクリプションを削除します
サブスクリプションが不要になった場合は、SNSトピック自体から簡単に削除できます。 サブスクリプションを選択し、「削除」ボタンをクリックします。
削除を確認するためのポップアップ画面が表示されます。 サブスクリプションが削除されると、復元することはできません。 本番アカウントで削除操作を実行するときは注意してください。
結論
この記事では、SNSトピックからSQSトピックへのサブスクリプションを作成する手順について説明しました。 SQSでポーリングされたSNSからサンプルメッセージを送信しました。 また、SNSからサブスクリプションを簡単に削除できることも確認しました。
Hope this helps!