如何从Vertex AI Workbench上传文件至AWS S3?遇连接错误求解决
从Vertex AI Workbench上传文件到AWS S3的解决方案与替代方案
一、可行性说明
从Vertex AI Workbench上传文件到AWS S3完全可行,本质是通过AWS SDK在GCP环境中发起S3 API请求,只要配置正确的权限和参数即可实现跨云存储传输。
二、当前错误的解决方法
你遇到的Could not connect to the endpoint URL错误,核心原因是region_name参数设置无效:AWS不存在名为"auto"的区域,必须指定S3桶实际所在的有效区域(比如us-east-1、eu-west-1、ap-southeast-1等)。
修正后的代码如下:
import boto3 # 替换为你的实际AWS密钥和桶所在区域 key_id = "你的AWS_ACCESS_KEY_ID" access_key = "你的AWS_SECRET_ACCESS_KEY" bucket_region = "us-east-1" # 需与S3桶所在区域一致 # 初始化正确配置的S3客户端 client = boto3.client( "s3", region_name=bucket_region, aws_access_key_id=key_id, aws_secret_access_key=access_key ) # 执行文件上传 client.upload_file( Filename="path_file.csv", Bucket="bucket_name", Key="uploaded.csv" )
额外注意事项:
- 确保Vertex AI Workbench实例具备互联网访问权限(默认配置通常满足,若使用私有网络需配置NAT网关或VPC peering)。
- 确认你的AWS密钥拥有目标S3桶的
s3:PutObject权限,可通过IAM策略明确配置上传权限。
三、替代方案
若不想使用boto3,还可以通过以下方式实现跨云文件传输:
1. gsutil + AWS CLI中转
先将文件上传到Google Cloud Storage(GCS),再通过AWS CLI同步到S3:
# 第一步:上传文件到GCS临时存储 gsutil cp path_file.csv gs://你的GCS桶名/temp/ # 第二步:从GCS同步到S3(需先在Workbench安装并配置AWS CLI) aws s3 cp gs://你的GCS桶名/temp/path_file.csv s3://你的S3桶名/uploaded.csv
2. Google Cloud Dataflow批量传输
如果是批量或定时传输需求,可创建Dataflow作业:读取Vertex AI关联的GCS文件,直接写入S3。需为Dataflow服务账号配置对应的AWS访问权限。
3. S3 REST API直接调用
通过Python的requests库手动构造并签名S3的PutObject API请求,适合高度自定义的传输场景,但实现复杂度较高。
内容的提问来源于stack exchange,提问作者Krisna Gita
相关产品推荐
相关产品推荐

