如何解决使用 SageMaker Data Wrangler 将数据导入 Amazon SageMaker Studio 时出现的错误?

1 分钟阅读
0

我尝试使用 Amazon SageMaker Data Wrangler 从 Amazon Simple Storage Service (Amazon S3) 或 Amazon Athena 导入数据时出现错误。

解决方案

生命周期权限错误

当您尝试将数据从 Amazon Athena 导入 Data Wrangler 时,可能会出现以下错误:

S3LifecyclePermissionError: You don't have permission to read expiration rules from the bucket that you specified.

之所以出现此错误,是因为与用户配置文件关联的 SageMaker 执行角色没有所需权限访问用于管理数据留存和过期的 Amazon S3 生命周期配置。

要解决此错误,请将以下 AWS Identity and Access Management (IAM) 策略添加到 SageMaker 执行角色(示例: AmazonSageMaker-ExecutionRole-xxxxxxxxxxxxxxx):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "LifecycleConfig",
      "Effect": "Allow",
      "Action": [
        "s3:GetLifecycleConfiguration",
        "s3:PutLifecycleConfiguration"
      ],
      "Resource": "*"
    }
  ]
}

对于 Resource,您只能包含必须访问的特定区域的存储桶。GetBucketLifecycleConfiguration 返回在存储桶上设置的生命周期配置信息,而 PutBucketLifecycleConfiguration 则为存储桶创建新的生命周期配置。

“访问被拒绝”错误

当您使用未加密的输出设置运行处理作业时,可能会出现以下错误。

com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied

出现此错误,可能有以下原因:

  • SageMaker 执行角色不具有执行 S3 操作所需的权限。
  • S3 存储桶策略或 Amazon Virtual Private Cloud (Amazon VPC) 端点策略都明确拒绝了 PutObject 的权限。如果您通过提供特定的 AWS Key Management Service (AWS KMS) 密钥仅强制与 S3 存储桶建立加密连接,则可能出现这种情况。

要解决此错误,请执行以下操作:

  • 检查 SageMaker 执行角色是否具有 S3 存储桶的最低操作权限:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:ListBucket",
        "s3:CreateBucket",
      ],
      "Resource": [
        "arn:aws:s3:::sagemaker-us-east-1-1111222233334444",
        "arn:aws:s3:::sagemaker-us-east-1-1111222233334444/*"
      ]
    }
  ]
}
  • 确保 S3 存储桶策略或 VPC 端点策略未明确拒绝 S3 所需操作权限。
  • 考虑将 AWS KMS 密钥传递给处理任务,该任务允许解密从中导入数据的 S3 存储桶中的对象。
  • 考虑使用不同的 S3 存储桶来导入使用 Amazon S3 服务器端加密进行静态加密的数据。

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