Amazon SQSにSNSからメッセージを送ってもポーリングされないときにはアクセス権限を確認してみよう

2020.03.31

SQSに泣かされたことがある、たぬき( @tanuki_tzp )です。 今回はSQSのアクセス権限について書いていきたいと思います。

今回のテスト内容

SNSからSQSへメッセージ(Neko is )を送って、ポーリングされるか確認します。

↓テスト用のSQS キューです。

↓テスト用のSNS サブスクリプションです。今回テスト用に作成したtest-SQSへメッセージが飛ぶように設定しています。

検証

テスト(許可設定前)

SNSからテストメッセージを送ってみます。 猫は可愛いので、メッセージ本文に"Neko is Kawaii."と入力して送信します。

送信が正常に完了していれば、test-SQSにキューが溜まるはずですが、test-SQSに『SNSからメッセージを送る権限』を与えていないため、このままではキューが溜まりません。

SQSに権限を設定する

キューを溜めるためにSQSに権限を設定します。

SQSの権限設定はアクセス許可タブの『アクセス許可の追加』から追加できます。

条件の値にはSNSのエンドポイントを入力してください。

設定が追加されると、↓のように表示されます。

テスト(許可設定後)

アクセス許可を設定したのでもう一度テストメッセージを送ると、キューにメッセージが溜まります。

メッセージの中身を確認すると、"Neko is Kawaii."がしっかりと表示されています。

まとめ

AWSでハマったと感じるのは権限周りが多い気がします。 SQSに限らず、構築時にメッセージが出力されていない等のエラーが発生する場合は権限周りを注視してみると良いと思います。

※2020/04/01追記 リンク名を修正しました