vultr的object storage挺香的,250GB存储,1TB流量,一个月只需要$5,因为节点的原因,国内的速度比较差,但是用一台线路好一些的VPS反代一下,还是不错的

获取Secret Key和Access Key

进入vultr后台,查看Secret Key和Access Key


新建bucket

这里,我们新建一个名为yhhjzp的bucket


安装boto3

pip3 install boto3

这里安装的最新版本为1.13.5


创建配置文件

mkdir ~/.aws
vim ~/.aws/credentials

内容为:


[default]
aws_access_key_id = 你的Access Key
aws_secret_access_key = 你的Secret Key
vim ~/.aws/config

内容为:

[default]
region=ewr1.vultrobjects.com
注:因为现在vultr暂时只开了新泽西一个地区的对象存储,所以regin这边统一为ewr1.vultrobjects.com

编写上传脚本

import boto3

s3 = boto3.resource('s3')

with open('1.jpg', 'rb') as f:
    data = f.read()
s3.Bucket('yhhjzp').put_object(Body=data, Key='test.jpg', ContentType='image/jpeg', ACL='public-read')

修改

执行脚本,发现报错

botocore.exceptions.EndpointConnectionError: Could not connect to the endpoint URL: "https://yhhjzp.s3.vultrobjects.com.amazonaws.com/test.jpg"

错误原因是endpoint错了,我们发现多了s3amazonaws.com,导致了endpoint不存在

这里我的解决办法是修改boto3的源代码,需要修改的地方为botocore模块下的client.py文件

找到这一行,将DEFAULT_ENDPOINT = '{service}.{region}.amazonaws.com'改为DEFAULT_ENDPOINT = '{region}'

再次执行上传文件的脚本,成功上传

×