跳至內容

如何解決 SageMaker AI 訓練任務中的 Amazon S3 AccessDenied 錯誤?

2 分的閱讀內容
0

我的 Amazon SageMaker AI 訓練任務失敗,並出現 AccessDenied 錯誤,儘管我已將 AmazonSageMakerFullAccess 政策附加到執行角色也是如此。我想對此問題進行疑難排解。

簡短描述

如果您的 AWS Identity and Access Management (IAM) 政策不允許下列 Amazon Simple Storage Service (Amazon S3) 動作,則可能會出現 AccessDenied 錯誤:

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

您的 SageMaker AI API 呼叫會決定所需的權限。例如,CreateModel API 只需要 s3:GetObject,但 CreateTrainingJob API 需要 s3:GetObjects3:PutObjects3:ListObject

解決方法

若要解決 AccessDenied 錯誤,請根據您的情況執行以下動作。

加密的輸入儲存貯體

如果您使用 AWS Key Management Service (KMS) 加密 S3 儲存貯體中的資料,請檢查權限。附加到執行角色的 IAM 政策必須允許 kms:encryptkms:decrypt 動作。檢查 AWS KMS key 政策是否授予執行角色存取權

您可以在作業的資源組態中,將 AWS KMS key 用於機器學習 (ML) 儲存磁碟區。如果您使用 AWS KMS key,則 IAM 政策必須允許 kms:CreateGrant 動作。如需詳細資訊,請參閱 AWS KMS 中的授權

**注意:**最佳做法是加密 ML 儲存磁碟區

當使用 Python SDK 並實作 estimator.EstimatorBase 類別的抽象時,您必須透過 kwargs 關鍵字引數傳遞 output_kms_keyvolume_kms_key 參數。無論繼承類別中是否存在 output_kms_keyvolume_kms_key 參數,都採取此動作。如需詳細資訊,請參閱 Amazon SageMaker Python SDK 網站上的估算器

權限界限

如果您為執行角色定義了權限界限,則 SageMaker 只能執行 IAM 政策和權限界限允許的動作。請確認 IAM 政策和權限界限允許所需的 Amazon S3 動作。

儲存貯體政策

如果輸入儲存貯體使用了儲存貯體政策,則儲存貯體政策必須允許執行角色執行所需的 Amazon S3 動作。

以下是拒絕存取 SageMaker AI 執行角色並導致 AccessDenied 錯誤的儲存貯體政策範例:

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

**注意:**若要允許存取執行角色,請將 Effect (效果) 值的 Deny (拒絕) 改為 Allow (允許)。

跨 AWS 帳戶存取

如果 Amazon S3 資料由不同的 AWS 帳戶擁有,請檢查這兩個帳戶是否都具有對 AWS KMS key 的存取權。如果您未為訓練任務指定 AWS KMS key,則 SageMaker AI 會預設使用 Amazon S3 伺服器端加密金鑰。其他帳戶無法共用或使用預設的 Amazon S3 伺服器端加密金鑰。

確認 SageMaker AI 執行角色的 IAM 政策和 S3 儲存貯體政策具有跨帳戶的權限。

如需詳細資訊,請參閱如何將 Amazon SageMaker AI 模型部署至不同的 AWS 帳戶?

相關資訊

如何對來自 Amazon S3 的「403 拒絕存取」錯誤進行疑難排解?

如何使用 SageMaker AI 執行角色

AWS 官方已更新 9 個月前