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

2 分的閱讀內容
0

我的 Amazon SageMaker 訓練任務失敗,並出現 AccessDenied 錯誤,即使 AmazonSageMakerFullAccess 政策連接至執行角色也是如此。

簡短描述

AccessDenied 錯誤表示您的 AWS Identity and Access Management (IAM) 政策不允許執行下列一或多個 Amazon Simple Storage Service (Amazon S3) 動作:

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

您需要的許可取決於您呼叫的 SageMaker API。例如,CreateModel API 所需的唯一 Amazon S3 動作是 s3:GetObject。但是,CreateTrainingJob API 需要 s3:GetObjects3:PutObjects3:ListObject。如需有關每個 API 所需許可的詳細資訊,請參閱 SageMaker 角色

解決方法

AccessDenied 錯誤通常發生在下列情況。

加密的輸入儲存貯體

如果 S3 儲存貯體中的資料已使用 AWS Key Management Service (KMS) 加密,請執行以下操作:

  • 確保連接至執行角色的 IAM 政策允許 kms:encryptkms:decrypt 動作。如需詳細資訊,請參閱 SageMaker 角色
  • 確保 AWS KMS key 政策授予對 IAM 角色的存取權。如需詳細資訊,請參閱在 AWS KMS 中使用金鑰政策
  • 如果在任務的資源組態中將 AWS KMS key 用於機器學習 (ML) 儲存磁碟區,則 IAM 政策必須允許 kms:CreateGrant 動作。如需詳細資訊,請參閱使用授權。如需有關加密 ML 儲存磁碟區的詳細資訊,請參閱使用加密保護靜態資料
  • 當使用 Python SDK 實作 estimator.EstimatorBase 類別的抽取時,您必須透過 kwargs 關鍵字引數傳遞 output_kms_keyvolume_kms_key 參數。無論在繼承類別的記錄顯示狀態如何,都必須完成此操作。如需詳細資訊,請參閱估算器

許可界限

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

儲存貯體政策

如果輸入儲存貯體使用儲存貯體政策,請確保儲存貯體政策允許執行角色執行所需的 Amazon S3 動作。如需有關儲存貯體政策的詳細資訊,請參閱 Amazon S3 中的政策和許可

以下範例是拒絕存取 SageMaker 執行角色並導致 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"
      ]
    }
  ]
}

跨帳戶 Amazon S3 存取

如果不同的 AWS 帳戶擁有 Amazon S3 資料,請執行以下操作:

  • 確保兩個帳戶都可存取 AWS KMS key。如果您未為訓練任務指定 AWS KMS key,則 SageMaker 會預設為 Amazon S3 伺服器端加密金鑰。預設 Amazon S3 伺服器端加密金鑰無法與其他 AWS 帳戶共用或使用。
  • 確保 SageMaker 執行角色的 IAM 政策和 S3 儲存貯體政策具有跨帳戶許可。

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


相關資訊

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

AWS 官方
AWS 官方已更新 2 年前