VPC环境下AWS SageMaker从S3读取数据出现名称解析错误如何解决
可行解决方案
该报错本质为VPC环境内的SageMaker Notebook实例无法正常解析S3服务的域名,可按以下优先级尝试修复:
方案1:为VPC配置S3网关端点(推荐)
该方案可实现S3的内网访问,无需消耗公网带宽,合规性更高:
- 进入AWS VPC控制台,定位到SageMaker实例所在的VPC
- 左侧菜单选择「端点」→「创建端点」,服务类别选择AWS服务,搜索并选择
com.amazonaws.<你的资源所在区域>.s3(类型为Gateway) - 关联SageMaker实例所在子网对应的路由表,配置完成后路由表会自动添加S3服务网段的内网路由
- 确认S3网关端点的访问策略允许目标存储桶的访问,同时SageMaker实例的执行角色具备对应S3资源的读写权限
方案2:为VPC配置公网出口
若允许走公网访问S3,可通过以下方式配置公网访问能力:
- 若SageMaker实例部署在公有子网,可为子网配置互联网网关(IGW),并在子网路由表中添加
0.0.0.0/0指向IGW的路由规则 - 若SageMaker实例部署在私有子网,可在同VPC的公有子网部署NAT网关,并在私有子网的路由表中添加
0.0.0.0/0指向NAT网关的路由规则 - 确认VPC关联的安全组、网络ACL允许出方向的443端口公网访问
- 若SageMaker实例部署在公有子网,可为子网配置互联网网关(IGW),并在子网路由表中添加
方案3:代码中显式指定S3区域级端点
部分场景下默认的S3全局域名解析异常,可在初始化S3客户端时显式指定区域级域名:
以boto3为例,修改客户端初始化逻辑:import boto3 # 替换<>内容为你的资源实际所在区域,例如东京区为ap-northeast-1 s3_client = boto3.client('s3', endpoint_url='https://s3.<你的区域>.amazonaws.com')方案4:连通性排查验证
可在SageMaker Notebook的终端中执行以下命令缩小问题范围:
- 执行
nslookup my-bucket.s3.amazonaws.com验证域名解析是否正常 - 执行
curl https://my-bucket.s3.amazonaws.com/<测试文件路径>验证S3资源是否可正常访问
- 执行
内容的提问来源于stack exchange,提问作者tall_table
相关产品推荐
相关产品推荐

