Direkt zum Inhalt

Wie behebe ich Amazon S3 AccessDenied-Fehler in SageMaker AI-Trainingsjobs?

Lesedauer: 3 Minute
0

Mein Amazon SageMaker AI-Trainingsjob ist mit einem AccessDenied-Fehler fehlgeschlagen, obwohl ich die AmazonSageMakerFullAccess-Richtlinie an die Ausführungsrolle angehängt habe. Ich möchte dieses Problem beheben.

Kurzbeschreibung

Ein AccessDenied-Fehler kann möglicherweise auftreten, wenn die AWS-Richtlinie für Identity and Access Management (IAM) die folgenden Amazon Simple Storage Service (Amazon S3)-Aktionen nicht zulässt:

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

Der SageMaker AI-API-Aufruf bestimmt die erforderlichen Berechtigungen. Beispielsweise benötigt die CreateModel-API nur s3:getObject, aber die CreateTrainingJob-API erfordert s3:getObject, s3:putObject und s3:ListObject.

Lösung

Führe je nach Szenario die folgenden Maßnahmen aus, um einen AccessDenied-Fehler zu beheben.

Verschlüsselter Eingabe-Bucket

Wenn du Daten im S3-Bucket mit dem AWS Key Management Service (AWS KMS) verschlüsselt hast, überprüfe die Berechtigungen. Die IAM-Richtlinie, die an die Ausführungsrolle angehängt ist, muss die Aktionen kms:encrypt und kms:decrypt zulassen. Überprüfe, ob die AWS KMS-Schlüsselrichtlinie Zugriff auf die Ausführungsrolle gewährt.

Du kannst einen AWS KMS-Schlüssel für das Speichervolume für Machine Learning (ML) in der Ressourcenkonfiguration des Jobs verwenden. Wenn du einen AWS-KMS-Schlüssel verwendest, muss die IAM-Richtlinie die Aktion kms:CreateGrant zulassen. Weitere Informationen findest du unter Berechtigungen in AWS KMS.

Hinweis: Es ist eine bewährte Methode, das ML-Speichervolume zu verschlüsseln.

Wenn du das Python-SDK verwendest und eine Abstraktion der Klasse Estimator.EstimatorBase implementierst, übergebe die Ausgabeparameter _kms_key und volume_kms_key über die Schlüsselwortargumente kwargs. Führe diese Aktion unabhängig vom dokumentierten Vorhandensein der Parameter output_kms_key und volume_kms_key in der erbenden Klasse durch. Weitere Informationen findest du unter Estimatoren auf der Amazon SageMaker Python SDK-Website.

Grenzen der Berechtigungen

Wenn du Berechtigungsgrenzen für die Ausführungsrolle definieren, führt SageMaker nur die Aktionen aus, die sowohl nach der IAM-Richtlinie als auch nach den Berechtigungsgrenzen zulässig sind. Stelle sicher, dass die IAM-Richtlinie und die Berechtigungsgrenzen die erforderlichen Amazon S3-Aktionen zulassen.

Bucket-Richtlinien

Wenn der Eingabe-Bucket eine Bucket-Richtlinie verwendet, dann muss die Bucket-Richtlinie es der Ausführungsrolle ermöglichen, die erforderlichen Amazon S3-Aktionen auszuführen.

Im Folgenden wird ein Beispiel für eine Bucket-Richtlinie aufgeführt, die den Zugriff auf die SageMaker AI-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"
      ]
    }
  ]
}

Hinweis: Um den Zugriff auf die Ausführungsrolle zu ermöglichen, ersetze Verweigern durch Erlauben für den Wert „Effekt“.

AWS-übergreifender Kontozugriff

Wenn ein anderes AWS-Konto Amazon S3-Daten besitzt, überprüfe, ob beide Konten Zugriff auf den AWS-KMS-Schlüssel haben. Wenn du keinen AWS KMS-Schlüssel für den Trainingsjob angibst, verwendet SageMaker AI standardmäßig einen serverseitigen Amazon S3-Verschlüsselungsschlüssel. Ein anderes Konto kann keinen serverseitigen Standardverschlüsselungsschlüssel für Amazon S3 teilen oder verwenden.

Stelle sicher, dass die IAM-Richtlinie für die SageMaker-Ausführungsrolle und die S3-Bucket-Richtlinie über kontoübergreifende Berechtigungen verfügen.

Weitere Informationen findest du unter Wie kann ich ein Amazon SageMaker AI-Modell für ein anderes AWS-Konto bereitstellen?

Ähnliche Informationen

Wie behebe ich Fehler „403 Access Denied“ von Amazon S3?

So verwendest du die SageMaker AI-Ausführungsrollen

AWS OFFICIALAktualisiert vor 7 Monaten