Wie behebe ich Amazon S3 AccessDenied-Fehler in Amazon SageMaker-Schulungsaufträgen?

Lesedauer: 3 Minute
0

Mein Amazon SageMaker-Schulungsjob ist mit einem AccessDenied-Fehler fehlgeschlagen, obwohl die AmazonSageMakerFullAccess-Richtlinie an die Ausführungsrolle angehängt ist.

Kurzbeschreibung

AccessDenid-Fehler weisen darauf hin, dass Ihre AWS-Richtlinie für Identity and Access Management (IAM) eine oder mehrere der folgenden Amazon Simple Storage Service (Amazon S3) -Aktionen nicht zulässt:

  • s3:ListBucket
  • s3:GetObject
  • s3:PutObject

Die Berechtigungen, die Sie benötigen, hängen von der SageMaker-API ab, die Sie aufrufen. Die einzige Amazon S3-Aktion, die die CreateModel-API benötigt, ist beispielsweise s3:getObject. Die createTrainingJob-API erfordert jedoch s3:getObject, s3:putObject und s3:ListObject. Weitere Informationen zu den Berechtigungen, die für jede API erforderlich sind, finden Sie unter SageMaker-Rollen.

Lösung

AccessDenied-Fehler treten häufig in den folgenden Szenarien auf.

Verschlüsselter Eingabe-Bucket

Wenn die Daten im S3-Bucket mit AWS Key Management Service (AWS KMS) verschlüsselt sind:

  • Stellen Sie sicher, dass die IAM-Richtlinie, die an die Ausführungsrolle angehängt ist, die Aktionen kms:encrypt und kms:decrypt zulässt. Weitere Informationen finden Sie unter SageMaker-Rollen.
  • Stellen Sie sicher, dass die AWS KMS-Schlüsselrichtlinie Zugriff auf die IAM-Rolle gewährt. Weitere Informationen finden Sie unter Verwenden wichtiger Richtlinien in AWS KMS.
  • Wenn Sie in der Ressourcenkonfiguration Ihres Jobs einen AWS-KMS-Schlüssel für das Speichervolume für maschinelles Lernen (ML) verwenden, muss die IAM-Richtlinie die Aktion kms:createGrant zulassen. Weitere Informationen finden Sie unter Zuschüsse verwenden. Weitere Informationen zur Verschlüsselung des ML-Speichervolumes finden Sie unter Schützen von Daten im Ruhezustand mithilfe von Verschlüsselung.
  • Wenn Sie das Python-SDK verwenden und eine Abstraktion der Klasse Estimator.EstimatorBase implementieren, müssen Sie die Ausgabeparameter _kms_key und volume_kms_key über die Schlüsselwortargumente** kwargs** übergeben. Dies muss unabhängig von ihrer dokumentierten Anwesenheit in der erbenden Klasse geschehen. Weitere Informationen finden Sie unter Estimators.

Grenzen der Berechtigungen

Wenn Sie Berechtigungsgrenzen für die Ausführungsrolle definieren, kann SageMaker nur die Aktionen ausführen, die sowohl nach der IAM-Richtlinie als auch nach den Berechtigungsgrenzen zulässig sind. Stellen Sie sicher, dass die IAM-Richtlinie und die Berechtigungsgrenzen die erforderlichen Amazon S3-Aktionen zulassen.

Bucket-Richtlinien

Wenn der Eingabe-Bucket eine Bucket-Richtlinie verwendet, stellen Sie sicher, dass die Bucket-Richtlinie es der Ausführungsrolle ermöglicht, die erforderlichen Amazon S3-Aktionen auszuführen. Weitere Informationen zu Bucket-Richtlinien finden Sie unter Richtlinien und Berechtigungen in Amazon S3.

Hier ist ein Beispiel für eine Bucket-Richtlinie, die den Zugriff auf die SageMaker-Ausführungsrolle verweigert und einen AccessDenied-Fehler verursacht:

{
  "Version": "2012-10-17",
  "Id": "ExamplePolicy01",
  "Statement": [
    {
      "Sid": "ExampleStatement01",
      "Effect": "Deny",
      "Principal": {
        "AWS": "arn:aws:iam::Account-ID:role/SageMakerExecutionRole"
      },
      "Action": [
        "s3:GetObject",
        "s3:GetBucketLocation",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::awsdoc-example-bucket/*",
        "arn:aws:s3:::awsdoc-example-bucket"
      ]
    }
  ]
}

Kontoübergreifender Amazon S3-Zugriff

Wenn ein anderes AWS-Konto die Amazon S3-Daten besitzt:

  • Stellen Sie sicher, dass beide Konten Zugriff auf den AWS KMS-Schlüssel haben. Wenn Sie keinen AWS KMS-Schlüssel für den Schulungsauftrag angeben, verwendet SageMaker standardmäßig einen serverseitigen Amazon S3-Verschlüsselungsschlüssel. Ein standardmäßiger serverseitiger Amazon S3-Verschlüsselungsschlüssel kann nicht mit einem anderen AWS-Konto geteilt oder von diesem verwendet werden.
  • Stellen Sie sicher, dass die IAM-Richtlinie für die SageMaker-Ausführungsrolle und die S3-Bucket-Richtlinie über kontoübergreifende Berechtigungen verfügen.

Weitere Informationen finden Sie unter Wie kann ich ein Amazon SageMaker-Modell für ein anderes AWS-Konto bereitstellen?


Ähnliche Informationen

Wie behebe ich Fehler vom Typ „403 Zugriff verweigert“ in Amazon S3?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr