Amazon Simple Notification Service (Amazon SNS) トピックからの E メール通知が届きません。
解決策
E メールエンドポイントのステータスが Confirmed であることを確認する
E メールエンドポイントのステータスを確認するには、Amazon SNS コンソールまたは AWS コマンドラインインターフェイス (AWS CLI) を使用してください。
Amazon SNS コンソール
次の手順を実行します。
- Amazon SNS コンソールを開く。
- ナビゲーションペインで [Topics] (トピック) を選択し、トピックを選択する。
- [Subscriptions] (サブスクリプション) セクションで、[Endpoint] (エンドポイント) 列から E メールエンドポイントを探す。
- [Status] (ステータス) 列で、ステータスが Confirmed であるかどうかを確認する。
- ステータスが Confirmed ではない場合は、Amazon SNS コンソールでサブスクリプションを手動で確認する。確認 E メールが届きます。
- (オプション) 確認 E メールが届かない場合は、エンドポイントを含むサブスクリプションを選択し、[Request confirmation] (リクエストの確認) を選択する。
AWS CLI
**注: ** AWS CLI コマンドの実行時にエラーが発生する場合は、『AWS CLI のエラーのトラブルシューティング』を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
次の list-subscriptions-by-topic コマンドを実行してください。
aws sns list-subscriptions-by-topic --topic-arn "arn:aws:sns:us-east-1:125224123456:my-topic
**注: ** arn:aws:sns:us-east-1: 125224123456:your-topic をご利用の Amazon SNS トピックの Amazon リソースネーム (ARN) に置き換えてください。
出力例:
{
"Subscriptions": [
{
"Owner": "123456789012",
"Endpoint": "my-email@example.com",
"Protocol": "email",
"TopicArn": "arn:aws:sns:us-west-2:123456789012:your-topic",
"SubscriptionArn": "arn:aws:sns:us-west-2:123456789012:my-topic:8a21d249-4329-4871-acc6-7be709c6ea7f"
}
]
}
**注: ** [Endpoint] (エンドポイント) 列に E メールエンドポイントがない場合、そのエンドポイントは削除されています。
メールアドレスが外部連絡先からの E メールを受信できるかどうかを確認する
問題が Amazon SNS でのみ発生しているのかどうかを確認するには、外部プロバイダーから送信先の E メールアドレスにテスト E メールを送信します。テスト E メールにより、外部ソースからのどのような種類のトラフィックが許可されているかを判断できます。組織によっては、メールボックスを内部トラフィックのみに制限している場合があります。
メールボックスがテスト E メールを受信した場合は、次のセクションの手順を実行してください。
ファイアウォール、スパムフィルター、メールボックスルールを確認する
E メール管理者に連絡して、ファイアウォールまたはスパムフィルターが no-reply@sns.amazonaws.com アドレスをブロックしたかどうかを確認してください。no-reply@sns.amazonaws.com アドレスをメールボックスの許可リストに追加することはベストプラクティスです。詳細については、Amazon SNS FAQ の「トランスポート」セクションにある「Amazon SNS からの通知を受け取るには、購読者は特別に E メール設定を行う必要がありますか?」を参照してください。
SNS トピックの E メールをブロックする明示的な Deny アクションが行われたかどうかについて、メールボックスルールを確認してください。また、E メールがメールボックス内の特定のフォルダにルーティングされるかどうかを確認してください。
サブスクライブ解除用の認証を設定する
ユーザーが SNS トピック E メールのすべての受信者のサブスクリプションを解除しないように、サブスクライブ解除に認証を必要とするメールサブスクリプションを設定してください。
サブスクリプションフィルターポリシーを確認する
次の手順を実行します。
- Amazon SNS コンソールを開く。
- ナビゲーションペインで [Topics] (トピック) を選択する。
- トピックを選択し、[Subscriptions] (サブスクリプション) タブを選択する。
- [Subscription filter policy] (サブスクリプションフィルターポリシータブ) タブを選択し、[filter policy] (フィルターポリシー) を確認する。
- フィルターが適用されている場合は、NumberOfNotificationsFilteredOut メトリクスを確認して、メッセージが拒否されたかどうかを確認してください。
メッセージがエンドポイントに送信されると、Amazon SNS はメッセージ属性をフィルターポリシーの属性と比較します。メッセージ属性とフィルターポリシーの属性が一致しない場合、E メールエンドポイントはメッセージを受信しません。
詳細については、『Amazon SNS のサブスクリプションフィルターポリシーの問題のトラブルシューティング方法を教えてください。』を参照してください。
E メールの抑制状況を確認する
アカウントレベルのサプレッションリストにある E メールアドレスの一覧を表示するには、次の list-suppressed-destinations コマンドを実行してください。
aws sesv2 list-suppressed-destinations
サプレッションリストから E メールアドレスを削除するには、『Amazon SES のサプレッションリストに含まれるメールアドレスを削除する方法を教えてください。』を参照してください。
デフォルトの AWS KMS キー設定が使用されていないことを確認する
暗号化にデフォルトの AWS Key Management Service (AWS KMS) を使用する場合、AWS サービスは SNS トピックにメッセージを公開できません。Amazon SNS 用の AWS KMS キーポリシーでは、AWS サービスは kms:Decrypt と kms:GenerateDataKey API コールの実行を許可しません。このキーが AWS に管理されるため、ポリシーを手動で編集することはできません。
AWS KMS キーの設定を確認するには、次の手順を実行してください。
- Amazon SNS コンソールを開く。
- ナビゲーションペインで [Topics] (トピック) を選択する。
- トピックを選択し、[Encryption] (暗号化) タブを選択する。
- AWS KMS キー設定が (Default) alias/aws/sns の場合は、次のようにカスタマーマネージドキーポリシーを設定する。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "service.amazonaws.com"
},
"Action": [
"kms:GenerateDataKey*",
"kms:Decrypt"
],
"Resource": "*"
}
]
}
上記のカスタマーマネージドキーポリシーには、kms:GenerateDataKey と kms:Decrypt を実行するためのアクセス許可が含まれています。