Amazon Simple Notification Service (Amazon SNS) トピック経由でメッセージを送信するために、Amazon Simple Storage Service (Amazon S3) イベント通知を作成しましたが、Amazon S3 バケットの新規イベント通知により、Amazon SNS トピックにメッセージが発行されませんでした。
解決策
Amazon S3 イベントタイプが正しく設定されていることを確認する
Amazon S3 イベント通知を設定する際は、サポートされているイベントタイプを指定し、Amazon S3 が通知を送信できるようにする必要があります。指定していないイベントタイプが Amazon S3 バケットで発生した場合は、Amazon S3 は通知を送信できません。
オブジェクトキー名のフィルタが URL エンコード形式 (パーセントでのエンコード) でフォーマットされていることを確認する
イベント通知が、オブジェクトキー名フィルターを使用する構成である場合、Amazon S3 は特定のプレフィックスまたはサフィックスを持つオブジェクトに対してのみ通知を発行します。
プレフィックスまたはサフィックスで特殊文字を使用している場合は、URL エンコード (パーセントでのエンコード) 形式で入力する必要があります。詳細については、「オブジェクトキーの命名ガイドライン」および、「オブジェクトメタデータの操作」を参照してください。
注: フィルターでは、任意の文字を表すプレフィックスまたはサフィックスにワイルドカード文字 (*) を使用することはできません。
トピックにメッセージを発行するために必要なアクセス許可を Amazon S3 に付与したことを確認する
Amazon SNS トピックのリソースベースのポリシーでは、Amazon S3 バケットがトピックにメッセージを発行できる必要があります。トピックの AWS Identity and Access Management (IAM) ポリシーを参照し、必要なアクセス許可があることを確認し、必要な場合はアクセス許可を付与します。
トピックに SSE で暗号化されたトピックの AWS KMS アクセス許可があることを確認する
SNS トピックでサーバー側の暗号化 (SSE) を有効にした場合、トピックでは、カスタマーマネージド AWS Key Management (AWS KMS) キーを使用する必要があります。AWS KMS キーには、Amazon S3 にキーを使用するためのアクセス許可を付与するカスタムキーポリシーが必要です。
必要な AWS KMS アクセス許可を設定するには、次の手順を実行します。
-
新規のカスタマーマネージド AWS KMS キーとキーポリシーを作成します。
-
キーポリシーを編集して次のステートメントを追加し、Amazon S3 が暗号化された SNS トピックにメッセージを発行できるようにします。
{
"version": "2012-10-17",
"statement": [
{
"effect": "allow",
"principal": {
"service": "s3.amazonaws.com"
},
"action": [
"kms:generatedatakey*",
"kms:decrypt"
],
"resource": "*"
}
]
}
-
AWS KMS キーを使用して Amazon SNS トピックの SSE を設定します。
CloudWatch メトリクスを使用して追加のトラブルシューティングを実施する
SNS トピックがまだ Amazon S3 イベント通知を受信していない場合は、当該 SNS の Amazon CloudWatch メトリクス NumberOfMessagePublished を確認します。このメトリクスは、Amazon S3 によりイベントが発行済みかどうかを示します。NumberOfMessagePublished に関するメトリクスがない場合は、Amazon SNS の構成に対する Amazon S3 に問題があります。
NumberOfMessagePublished に関するメトリクスがある場合は、NumberOfNotificationsDelivered および NumberOfNotificationsFailed メトリクスを確認します。これらのメトリクスは、SNS トピックがメッセージをサブスクリプションエンドポイントに配信したかどうかを示します。
トラブルシューティングを行うために、SNS トピックに関する配信ステータスの記録を設定することも有効です。
関連情報
Amazon S3 イベント通知をトピックに公開できるようにする