使用boto3连接Linode Object Storage遇无效端点错误,求解决方案
解决boto3连接Linode Object Storage的端点无效问题
你遇到的ValueError: Invalid endpoint错误核心原因是endpoint_url必须包含完整的HTTP/HTTPS协议前缀,同时Linode Object Storage需要额外配置S3 v4签名才能正常兼容boto3。
修正后的代码
import boto3 linode_obj_config = { "aws_access_key_id": "1S**J", "aws_secret_access_key": "YJ**25gjqS3", "endpoint_url": "https://us-southeast-1.linodeobjects.com", "region_name": "us-southeast-1", "signature_version": "s3v4" } client = boto3.client("s3", **linode_obj_config) response = client.list_objects(Bucket='order-book-snapshots') for obj in response['Contents']: print(obj['Key'])
关键配置说明
- endpoint_url必须带协议:Linode的对象存储端点要求以
https://(推荐)或http://开头,仅写域名会被boto3判定为无效端点。 - 添加region_name:明确指定Linode集群对应的区域名称,确保签名和请求路由正确。
- 启用S3 v4签名:Linode Object Storage仅支持AWS Signature Version 4,必须显式配置
signature_version="s3v4",否则会出现权限或签名错误。
额外注意事项
如果尝试将桶名加入endpoint_url(比如https://order-book-snapshots.us-southeast-1.linodeobjects.com),需要同时启用use_path_style_addressing=False,但Linode推荐使用虚拟主机格式(桶名作为子域名),保持上述基础配置即可正常操作桶内对象。
内容的提问来源于stack exchange,提问作者Caullyn
相关产品推荐
相关产品推荐

