当我使用 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 服务器端加密进行静态加密的数据。