Ich erhalte eine Fehlermeldung in Amazon Simple Notification Service (Amazon SNS). Der Fehler tritt auf, wenn ich ein Subnetz verwende und versuche, mein SNS-Thema von einer kontoübergreifenden Amazon Elastic Compute Cloud (Amazon EC2)-Instance aus zu veröffentlichen.
Kurzbeschreibung
Wenn Sie beim Aufrufen des Veröffentlichungsvorgangs einen Autorisierungsfehler erhalten, führen Sie die Schritte im Abschnitt EC2-Instance IAM-Rolle und SNS-Themenzugriffsberechtigungen überprüfen durch.
Wenn Sie Probleme mit einem SNS-Thema haben, das eine serverseitige Verschlüsselung verwendet, und der Fehler „KMSAccessDenied“ angezeigt wird, führen Sie die Schritte im Abschnitt KMS-Schlüsseleinstellungen und EC2-IAM-Rollenberechtigungen überprüfen aus.
Hinweis: Wenn Ihre EC2-Instance mit einem Internet-Gateway keine Verbindung zum Internet herstellen kann, finden Sie weitere Informationen unter Warum kann meine Amazon EC2-Instance über ein Internet-Gateway keine Verbindung zum Internet herstellen?
Behebung
Überprüfen Sie die IAM-Rolle der EC2-Instanz und die Zugriffsrichtlinienberechtigungen für SNS-Themen
Falsch konfigurierte AWS Identity und Access Management (IAM)-Rollenberechtigungen für Ihre EC2-Instance und die Zugriffsrichtlinie für die Amazon SNS-Themen können den folgenden Fehler verursachen:
"An error occurred (AuthorizationError) when calling the Publish operation: User: arn:aws:iam::111122223333:role/cross-acc-ec2-sns-publish-role/i-0123456789f804d is not authorized to perform: SNS:Publish on resource: arn:aws:sns:us-east-2:123456789012:cross-account-ec2-sns."
Informationen zur Behebung dieses Fehlers finden Sie unter Wie veröffentliche ich mithilfe einer IAM EC2-Rolle von einer kontoübergreifenden Amazon EC2-Instance aus zu einem Amazon SNS-Thema?
Überprüfen Sie die KMS-Schlüsseleinstellungen und die EC2-IAM-Rollenberechtigungen
Wenn die Berechtigungen für die IAM-Rolle Ihrer EC2-Instance und die Schlüsselrichtlinie des AWS Key Management Service (AWS KMS) Ihres AWS KMS-Schlüssels (KMS-Schlüssel) falsch sind, kann die folgende Fehlermeldung angezeigt werden:
An error occurred (KMSAccessDenied) when calling the Publish operation: null (Service: AWSKMS; Status Code: 400; Error Code: AccessDeniedException; Re
quest ID: IDNumber; Proxy: null)
Hinweis: Der vorherige Fehler tritt nur auf, wenn Ihr SNS-Thema eine serverseitige Verschlüsselung verwendet.
Um den Fehler zu beheben, überprüfen Sie Ihre KMS-Schlüsseleinstellungen und Ihre Berechtigungen für die AWS-KMS-Schlüsselrichtlinien:
1.Vergewissern Sie sich, dass Ihr KMS-Schlüssel aktiviert ist.
2.Bestätigen Sie, dass Ihre EC2-Instance-IAM-Rolle berechtigt ist, die Befehle kms:GenerateDataKey* und kms:Decrypt in der AWS-KMS-Schlüsselrichtlinie auszuführen. Dies ist die Schlüsselrichtlinie des KMS-Schlüssels, der für die serverseitige Verschlüsselung zu Ihrem SNS-Thema verwendet wird. Zum Beispiel:
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:role/cross-acc-ec2-sns-publish-role"
},
"Action": [
"kms:GenerateDataKey*",
"kms:Decrypt"
],
"Resource": "*"
}
3.Vergewissern Sie sich, dass die Berechtigungen für die Befehle ** kms:GenerateDataKey*** und kms:Decrypt mit der IAM-Rolle Ihrer EC2-Instance verknüpft sind.
Hinweis: Es ist eine bewährte Methode, die geringsten Berechtigungen bereitzustellen, die benötigt werden. Ersetzen Sie daher in der folgenden IAM-Rollenrichtlinie unbedingt den Ressourcenwert durch Ihren KMS-Schlüssel-ARN:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey*"
],
"Resource": "*"
}
]
}