SageMaker创建标注作业时无法访问S3的问题求助
问题排查与解决方案
1. 校验IAM角色核心权限
需确认角色包含以下针对目标桶的权限:
s3:ListBucket:用于浏览S3桶内文件s3:GetObject:用于读取标注所需的.jsonl文件
权限策略的资源范围必须覆盖桶本身和桶内对象,示例:
"Resource": [ "arn:aws:s3:::cvat.mouseover.ai", "arn:aws:s3:::cvat.mouseover.ai/*" ]
同时检查是否存在显式拒绝策略(IAM权限边界或桶策略中的Deny语句),这类策略会优先覆盖允许权限。
2. 确认角色信任关系
确保IAM角色的信任策略允许SageMaker服务扮演该角色,信任策略需包含:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Service": "sagemaker.amazonaws.com"}, "Action": "sts:AssumeRole" } ] }
3. 检查S3桶策略
即使IAM角色自身有权限,桶策略也可能阻止访问:
- 移除桶策略中针对该角色的
Deny语句 - 若桶为私有,添加允许该角色访问的策略,示例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::你的AWS账号ID:role/你的SageMaker角色名"}, "Action": ["s3:GetObject", "s3:ListBucket"], "Resource": [ "arn:aws:s3:::cvat.mouseover.ai", "arn:aws:s3:::cvat.mouseover.ai/*" ] } ] }
4. 排查VPC网络配置
若SageMaker部署在VPC内:
- 确认已创建S3网关端点,且VPC路由表已将S3流量指向该端点
- 检查安全组和网络ACL是否允许S3方向的流量(出站或端点流量)
- 若使用NAT网关,验证网关状态正常,可访问S3服务
5. 验证路径与桶可用性
- 确认输入的S3路径格式正确:
s3://cvat.mouseover.ai/目标文件.jsonl,无拼写错误 - 通过AWS CLI测试权限:先执行
aws sts assume-role --role-arn 你的角色ARN --role-session-name test获取临时凭证,再用该凭证执行aws s3 ls s3://cvat.mouseover.ai和aws s3 cp s3://cvat.mouseover.ai/目标文件.jsonl ./,验证是否能正常操作
6. CORS配置说明
CORS仅影响浏览器端跨域访问,SageMaker标注作业后台访问S3不依赖CORS,因此该配置对当前问题无直接作用。
内容的提问来源于stack exchange,提问作者Nikolay Dyankov
相关产品推荐
相关产品推荐

