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