スキップしてコンテンツを表示

汎用バケットで Amazon S3 イベント通知の使用時に、"Unable to validate the following destination configurations" というエラーが発生する理由を知りたいです。

所要時間2分
0

Amazon Simple Storage Service (Amazon S3) イベント通知を使用して通知設定を追加すると、"Unable to validate the following destination configurations when creating an Amazon S3 Event Notification" というエラーが発生します。この問題をトラブルシューティングして解決したいです。

解決策

イベント通知の設定を追加または更新した場合、Amazon S3 はすべてのイベント送信先が存在することを確認します。Amazon S3 は、イベント送信先に Amazon S3 が以下のアクションを実行できるようにするリソースベースのポリシーがあることも確認します。

  • イベントの公開
  • メッセージの送信
  • 関数の呼び出し

更新中、Amazon S3 は、新しいイベント送信先と、更新時に削除しなかった既存のイベント送信先に対してチェックを実行します。チェックが不合格の場合は、"Unable to validate the following destination configurations" というエラーが発生する場合があります。

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

: イベント通知は汎用バケットでのみサポートされています。ディレクトリバケットとテーブルバケットはイベント通知をサポートしていません。イベント通知機能が必要な場合は、汎用バケットを使用してください。

AWSSupport-TroubleshootS3EventNotifications オートメーションランブックを実行する

ベストプラクティスは、AWSSupport-TroubleshootS3EventNotifications を実行し、イベント通知設定の追加時に発生する問題をトラブルシューティングすることです。

注:

  • バケット所有者がオートメーションを実行する AWS アカウントも所有している場合のみ、ランブックでイベント通知設定を評価することができます。
  • このランブックでは、別のアカウントでホストしている送信先リソースに対するポリシーを評価することはできません。

オートメーションを実行するには、次の手順を実行します。

  1. AWS Systems Manager コンソールを開き、AWSSupport-TroubleshootS3EventNotifications を開きます。
  2. [オートメーションの実行] を選択します。
  3. 入力パラメータを指定します。
  4. [実行] を選択します。
  5. [出力] セクションで結果を確認します。

最終レポートには、S3 バケットで送信先イベント通知として設定されたリソースが含まれます。S3 イベント通知の問題が解消されない場合は、次の解決策を使用して問題を手動でトラブルシューティングしてください。

現在は存在しない送信先に関するイベントを削除する

S3 イベント通知の送信先が現在存在していない場合は、それらの通知の設定を削除する必要があります。例えば、Lambda 関数などの送信先を削除しても、そのイベント通知設定は汎用バケットに残ったままになります。Amazon S3 コンソール、AWS CLI、または PutBucketNotificationConfiguration API を使用して、古いイベント通知を削除できます。すべてのイベント通知を管理するには、**PutBucketNotificationConfiguration ** API を使用することをお勧めします。

イベント送信先に有効なリソースベースのポリシーが適用されていることを確認する

関連する API を呼び出して以下の AWS サービスにメッセージを発行するために必要なアクセス許可を Amazon S3 に確実に付与します。

  • Amazon Simple Notification Service (Amazon SNS) トピック
  • Amazon Simple Queue Service (Amazon SQS) のキュー
  • AWS Lambda 関数

Amazon SNS トピックの送信先ポリシーの例:

{
    "Version": "2012-10-17",
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "Example SNS topic policy",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SNS:Publish"
            ],
            "Resource": "SNS-topic-ARN",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:*:*:bucket-name"
                },
                "StringEquals": {
                    "aws:SourceAccount": "bucket-owner-account-id"
                }
            }
        }
    ]
}

Amazon SQS キューの送信先ポリシーの例:

{
    "Version": "2012-10-17",
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "example-statement-ID",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SQS:SendMessage"
            ],
            "Resource": "arn:aws:sqs:Region:account-id:queue-name",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:*:*:awsexamplebucket1"
                },
                "StringEquals": {
                    "aws:SourceAccount": "bucket-owner-account-id"
                }
            }
        }
    ]
}

Lambda 関数の送信先ポリシーの例:

{
    "Version": "2012-10-17",
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "s3invoke",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:Region:account-id:function:function-name",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceAccount": "bucket-owner-account-id"
                },
                "ArnLike": {
                    "AWS:SourceArn": "arn:aws:s3:::awsexamplebucket1"
                }
            }
        }
    ]
}

バケットに新しいイベントを追加する場合は、その新しいイベントに有効なリソースベースのポリシーが適用されていることを確認します。

Amazon SNS または Amazon SQS のアクセス許可に関する詳細については、「SNS トピックまたは SQS キューにメッセージを発行するアクセス許可の付与」を参照してください。

Lambda 関数を有効なポリシーで更新する方法については、「チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出す」を参照してください。

Amazon S3 コンソールを使用してイベント通知を有効にする場合、ポリシーをイベントに追加する前に、Amazon S3 はポリシーの更新を試行します。イベント送信先のリソースベースのポリシーが有効であり、同じエラーが発生する場合は、イベント送信先で有効なリソースベースのポリシーを確認してください。バケットのイベント通知設定を更新した後に、イベント送信先のリソースベースのポリシーを変更した場合は、検証に失敗します。この問題を防ぐには、すべてのアクセス許可が有効であることを確認したうえで、送信先が有効でないイベントを削除します。

AWS KMS 暗号化トピックとキューで、AWS KMS キーポリシーが適切であることを確認する

SQS または SNS の送信先で AWS Key Management Service (AWS KMS) 暗号化が有効な場合、カスタマーマネージドキーポリシーを更新し、Amazon S3 がキーを使用できるようにします。

aws/snsaws/sqs などの AWS マネージドキーはサポートされていません。イベント送信先で AWS マネージドキーを使用する場合は、カスタマーマネージドキーを使用するように送信先を更新する必要があります。その後に、キーポリシーを更新します。

AWS KMS キーポリシーの例:

{  
    "Version": "2012-10-17",  
    "Id": "example-ID",  
    "Statement": [  
        {  
            "Sid": "example-statement-ID",  
            "Effect": "Allow",  
            "Principal": {  
                "Service": "s3.amazonaws.com"  
            },  
            "Action": [  
                "kms:GenerateDataKey",  
                "kms:Decrypt"  
            ],  
            "Resource": "*"  
        }  
    ]  
}

関連情報

送信先 SNS トピック用の AWS Identity and Access Management (IAM) ポリシー

送信先 SQS キュー用の IAM ポリシー

AWS公式更新しました 5ヶ月前
コメントはありません

関連するコンテンツ