通过Direct Connect调用S3 ListObjectsV2时遇EndpointConnectionError
解决S3 ListObjectsV2接口EndpointConnectionError问题
针对你遇到的无法连接S3端点的错误,以下是几个排查和解决方向:
检查Direct Connect与S3的访问配置
如果你通过Direct Connect的私有VIF访问S3,需要确保:- 私有VIF已关联到正确的VPC,且VPC路由表中添加了eu-west-3区域S3服务的前缀列表,确保流量通过Direct Connect路由到S3而非公网。
- VPC内已配置S3网关端点,且端点策略允许当前凭证执行
s3:ListBucket操作。
修正S3客户端的端点配置
当通过私有网络访问S3时,需确保boto3客户端使用正确的私有端点。可以在创建客户端时显式指定端点URL:s3_client = session_root.client('s3', endpoint_url='https://s3.eu-west-3.amazonaws.com')若使用VPC网关端点,boto3会自动通过端点路由流量,无需额外配置,但需确保客户端运行在VPC内实例或通过Direct Connect接入的网络环境中。
修复URL编码异常
从错误URL中可见prefix=object1%2object2%2F...存在编码错误(%2应为%2F),大概率是旧版本boto3/botocore的编码bug导致,执行以下命令升级到最新版本:pip install --upgrade boto3 botocore验证凭证与权限
- 检查
~/.aws/credentials和~/.aws/config中my_profile的配置,确认region为eu-west-3,且凭证拥有目标bucket的s3:ListBucket权限。 - 用AWS CLI测试连通性:
若CLI能正常返回结果,说明是脚本或boto3配置问题;若CLI也报错,需排查网络或权限配置。aws s3 ls s3://my_bucket/object1/object2/object3/object4/ --profile my_profile --region eu-west-3
- 检查
排查网络连通性
在运行脚本的机器上:- 测试S3端点的443端口连通性:
若无法连接,说明网络路由存在问题,需检查Direct Connect的路由、防火墙规则或安全组配置。telnet s3.eu-west-3.amazonaws.com 443 - 确认机器路由表中,S3的流量指向Direct Connect链路而非公网出口。
- 测试S3端点的443端口连通性:
内容的提问来源于stack exchange,提问作者mlflow
相关产品推荐
相关产品推荐

