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

上次更新日期:2022 年 10 月 25 日

当我尝试使用 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-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx):

{
  "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",
        "s3:PutObject"
      ],
      "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 服务器端加密进行静态加密的数据。

这篇文章对您有帮助吗?


您是否需要账单或技术支持?