はじめに
とある案件で、アカウントAで発報したアラートのメッセージをアカウントBのSQSキューに入れる必要がありました。
なぜかキューにサブスクリプション承認メッセージが飛ばず、ハマりかけたので、皆さんも同じことが無いように共有します。
SQSキューにSNSのメッセージを受けるためのポリシー
SQSキューでSNSのメッセージを受けるには、以下のようなSQSポリシーを許可している必要があります。
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "from-sns",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "sqs:SendMessage",
"Resource": "arn:aws:sqs:ap-northeast-1:123456789012:SystemName-Env-sqs",
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:sns:ap-northeast-1:123456789012:SystemName-Env-sqs"
}
}
}
]
}
サイ〇リヤ間違え探し難易度MAX
この案件では、SQSポリシーを開発ベンダーで操作できないため、お客様の担当部署に作業依頼を行いました。
その結果、担当者からアタッチされたポリシーがこちらです。
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "from-sns",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "sps:SendMessage",
"Resource": "arn:aws:sqs:ap-northeast-1:123456789012:SystemName-Env-sqs",
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:sns:ap-northeast-1:123456789012:SystemName-Env-sqs"
}
}
}
]
}
何が違うのか?
はい、何が変わったかわかりますか?
正直、私も作業者も最初は気づかず、30分間まじまじと眺めていましたが、原因がわかりませんでした。
正解
正解はここです。
以下の部分が誤っていました。
- 正しい記述: "Action": "sqs:SendMessage"
- 誤った記述: "Action": "sps:SendMessage"
教訓
皆さんは手打ちで記入せず、コピペを活用するか、大文字を記入しましょう。