Warum erhalte ich die Fehlermeldung Zugriff verweigert, wenn ich versuche, mit einem AWS-SDK auf Amazon S3 zuzugreifen?

Lesedauer: 3 Minute
0

Ich kann auf meine Amazon Simple Storage Service (Amazon S3) -Ressourcen zugreifen, wenn ich die AWS-Befehlszeilenschnittstelle (AWS CLI) verwende. Ich erhalte jedoch die Fehlermeldung Zugriff verweigert, wenn ich ein AWS-SDK verwende. Wie kann ich das beheben?

Lösung

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS-CLI verwenden.

Überprüfen Sie Ihre AWS-CLI und die AWS-SDK-Anmeldeinformationen

Stellen Sie zunächst sicher, dass die AWS-CLI und das von Ihnen verwendete AWS-SDK mit denselben Anmeldeinformationen konfiguriert sind. Gehen Sie dazu wie folgt vor:

Führen Sie diesen Befehl aus, um die Anmeldeinformationen auf der AWS-CLI zu konfigurieren:

aws iam list-access-keys

Wenn Sie eine AWS Identity and Access Management (IAM) -Rolle verwenden, die mit der AWS-CLI verknüpft ist, führen Sie diesen Befehl aus, um die Rolle abzurufen:

aws sts get-caller-identity

Um die Anmeldeinformationen für das von Ihnen verwendete AWS-SDK zu konfigurieren, führen Sie einen getCallerIdentity-Aufruf mit Ihrem AWS Security Token Service (AWS STS) -Client. Wenn Sie beispielsweise das AWS-SDK für Python (Boto3) verwenden, führen Sie get_caller_identity.

Wenn die AWS-CLI und das AWS-SDK unterschiedliche Anmeldeinformationen verwenden, verwenden Sie das AWS-SDK mit den Anmeldeinformationen, die in der AWS-CLI gespeichert sind.

Beheben Sie Probleme mit AWS-CLI- und SDK-Anfragen an Amazon S3

Wenn die von der CLI und dem AWS-SDK verwendeten Anmeldeinformationen identisch sind, fahren Sie mit der Fehlerbehebung fort, indem Sie die folgenden Fragen stellen:

  • Kommen die CLI- und SDK-Anfragen an S3 aus derselben Quelle? Prüfen Sie also, ob die Anfragen von derselben Amazon Elastic Compute Cloud (Amazon EC2) -Instance stammen.
  • Wenn Anfragen von derselben Quelle kommen, verwendet SDK die vorgesehenen Anmeldeinformationen? Wenn Sie beispielsweise das AWS-SDK für Python (Boto3) verwenden, können Sie mit dem SDK Anmeldeinformationen mithilfe mehrerer Methoden konfigurieren. Das bedeutet, dass Boto3 an mehreren Stellen in einer bestimmten Reihenfolge nach Anmeldeinformationen sucht. Wenn zu Beginn falsche Anmeldeinformationen angegeben werden, werden diese Anmeldeinformationen verwendet. Weitere Informationen zur Reihenfolge, in der Boto3 nach Anmeldeinformationen sucht, finden Sie auf der Boto3 SDK-Website unter Anmeldeinformationen.

Überprüfen Sie, ob Ihre VPC-Endpunkte Anfragen an S3 zulassen

Wenn Anfragen von verschiedenen Quellen gesendet werden, überprüfen Sie, ob die Quelle, die das SDK verwendet, Anfragen über einen VPC-Endpunkt sendet. Stellen Sie dann sicher, dass der VPC-Endpunkt die Anfrage zulässt, die Sie an Amazon S3 senden möchten.

Die VPC-Endpunktrichtlinie in diesem Beispiel ermöglicht Download- und Uploadberechtigungen für DOC-EXAMPLE-BUCKET. Wenn Sie diesen VPC-Endpunkt verwenden, wird Ihnen der Zugriff auf andere Buckets verweigert.

{
  "Statement": [
    {
      "Sid": "Access-to-specific-bucket-only",
      "Principal": "*",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ]
    }
  ]
}

Wenn Sie keine Probleme mit Ihren Anmeldeinformationen oder Ihrer Quelle feststellen, überprüfen Sie einige der Gründe, warum ein Fehler „Zugriff verweigert“ möglicherweise von S3 zurückgegeben wird. Weitere Informationen finden Sie unter Wie behebe ich Fehler 403 Access Denied in Amazon S3?


Ähnliche Informationen

Identitäts- und Zugriffsmanagement in Amazon S3

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren