Warum erhalte ich die Fehlermeldung „Unable to validate the following destination configurations“, wenn ich eine Amazon S3-Ereignisbenachrichtigung erstelle?

Lesedauer: 5 Minute
0

Ich möchte den folgenden Fehler beheben, wenn ich eine Amazon Simple Storage Service (Amazon S3)-Ereignisbenachrichtigung erstelle: „Unable to validate the following destination configurations when creating an Amazon S3 Event Notification.“

Kurzbeschreibung

Um diesen Fehler zu vermeiden, müssen Sie die folgenden Bedingungen erfüllen:

  • Wenn Sie eine Amazon-S3-Ereignisbenachrichtigung erstellen, muss das angegebene Ziel über eine ressourcenbasierte Richtlinie verfügen, die es S3 ermöglicht, Benachrichtigungen an das Ziel zu veröffentlichen.
  • Die AWS-Region für das Ziel muss dieselbe Region wie der S3 Bucket sein.
  • Wenn das Ziel mit einem AWS Key Management Service (AWS KMS)-Schlüssel verschlüsselt ist, muss die Schlüsselrichtlinie den Zugriff auf S3 ermöglichen.

Wenn Sie eine Konfiguration für eine Ereignisbenachrichtigung aktualisieren, überprüft Amazon S3, ob alle Ereignisziele vorhanden sind. S3 überprüft außerdem, ob die Ereignisziele über die ressourcenbasierten Richtlinien verfügen, die es S3 ermöglichen, je nach Art des Ereignisziels die folgenden Aktionen durchzuführen:

  • Ereignisse veröffentlichen
  • Nachrichten senden
  • Funktionen aufrufen

S3 führt diese Prüfungen an neuen Ereigniszielen und allen vorhandenen Ereigniszielen durch, die Sie während des Updates nicht löschen. Wenn diese Prüfungen fehlschlagen, wird möglicherweise der Fehler „Unable to validate the following destination configurations“ angezeigt.

**Hinweis:**Wenn bei der Ausführung von AWS Command Line Interface (AWS CLI)-Befehlen Fehler auftreten, finden Sie weitere Informationen unter Beheben von AWS-CLI-Fehlern. Stellen Sie außerdem sicher, dass Sie die neueste AWS-CLI-Version verwenden.

Lösung

Stellen Sie sicher, dass alle Ereignisziele existieren

Dieser Fehler wird angezeigt, wenn ein Ereignisziel, das sich im Bucket befindet, nicht existiert.

Wenn Ihre bestehende Ereignisbenachrichtigung Ereignisse an ein Ziel sendet, das nicht mehr existiert, löschen Sie diese Ereignisse, bevor Sie die Konfiguration der Ereignisbenachrichtigung aktualisieren. Die Benachrichtigung ist möglicherweise im Bucket vorhanden, aber das Ziel ist nicht vorhanden, da Sie es gelöscht haben, nachdem Sie die Konfiguration der Ereignisbenachrichtigung aktualisiert haben.

Es hat sich bewährt, alle Ereignisse mit nicht existierenden Zielen mit demselben PutBucketNotificationConfiguration-API zu löschen. Sie können die Amazon-S3-Konsole, die AWS CLI oder das AWS SDK verwenden, um das PutBucketNotificationConfiguration-API aufzurufen.

Stellen Sie sicher, dass die Ereignisziele über gültige ressourcenbasierte Richtlinien verfügen

Um Nachrichten bei den folgenden AWS-Diensten zu veröffentlichen, stellen Sie sicher, dass Sie Amazon S3 die erforderlichen Berechtigungen gewähren, um das entsprechende API aufzurufen:

  • Amazon Simple Notification Service (Amazon SNS)-Thema
  • Amazon Simple Queue Service (Amazon SQS)-Warteschlange
  • AWS-Lambda-Funktion

Beispiel für eine Zielrichtlinie für Amazon-SNS-Themen:

{
    "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"
            }
        }
    }]
}

Beispiel für eine Zielrichtlinie für Amazon-SQS-Warteschlangen:

{
    "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"
            }
        }
    }]
}

Beispiel für eine Zielrichtlinie für eine Lambda-Funktion:

{
    "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"
                }
            }
        }
    ]
}

Wenn Sie dem Bucket ein neues Ereignis hinzufügen, stellen Sie sicher, dass für das neue Ereignis die gültige ressourcenbasierte Richtlinie gilt.

Weitere Informationen zu Berechtigungen in Bezug auf ein Amazon SNS-Thema oder eine Amazon SQS-Warteschlange finden Sie unter Erteilen von Berechtigungen zum Veröffentlichen von Nachrichten in einem SNS-Thema oder einer SQS-Warteschlange.

Informationen zum Aktualisieren der Lambda-Funktion mit gültigen Richtlinien finden Sie im Tutorial: Verwenden eines Amazon-S3-Triggers zum Aufrufen einer Lambda-Funktion.

**Hinweis:**Wenn Sie die S3-Konsole verwenden, um Ereignisbenachrichtigungen zu aktivieren, versucht S3, die Richtlinie für Sie zu aktualisieren, bevor die Richtlinie dem Ereignis hinzugefügt wird.

Wenn die ressourcenbasierte Richtlinie für das Ereignisziel gültig ist und Sie dieselbe Fehlermeldung erhalten, überprüfen Sie alle vorhandenen Ereignisziele auf gültige ressourcenbasierte Richtlinien. Wenn Sie ressourcenbasierte Richtlinien für die Ereignisziele ändern, nachdem Sie die Konfiguration der Ereignisbenachrichtigung im Bucket aktualisiert haben, wird dieser Fehler angezeigt. Um den Fehler zu vermeiden, stellen Sie sicher, dass alle Berechtigungen gültig sind, und löschen Sie Ereignisse mit Zielen, die nicht gültig sind.

Stellen Sie sicher, dass die AWS-KMS-Schlüsselrichtlinie für KMS-verschlüsselte Themen und Warteschlangen gültig ist

Wenn Sie die AWS-KMS-Verschlüsselung für ein SQS- oder SNS-Ziel aktivieren, aktualisieren Sie die Richtlinie für vom Kunden verwaltete Schlüssel, sodass S3 den Schlüssel verwenden kann. Weitere Informationen finden Sie unter AWS-KMS-Schlüsselrichtlinie.

Von AWS verwaltete Schlüssel wie aws/sns und aws/sqs werden nicht unterstützt. Wenn Sie einen von AWS verwalteten Schlüssel für Ihr Ereignisziel verwenden, müssen Sie das Ziel aktualisieren, um einen vom Kunden verwalteten Schlüssel zu verwenden. Aktualisieren Sie dann die Schlüsselrichtlinie.

Beispiel für eine AWS-KMS-Schlüsselrichtlinie:

{
    "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": "*"
    }]
}

Ähnliche Informationen

IAM-Richtlinie für ein SNS-Zielthema

IAM-Richtlinie für eine SQS-Zielwarteschlange

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 7 Monaten