项目中刚好用到了s3cmd和阿里云OSS对接。
使用方法如下
1. 安装s3cmd
pip install s3cmd
2. 配置s3cmd
s3cmd --configure
我的配置如下
New settings:
Access Key:<RAM 的Access Key>
Secret Key: <RAM 的Secret Key>
Default Region: hangzhou
S3 Endpoint: oss-cn-hangzhou.aliyuncs.com
DNS-style bucket+hostname:port template for accessing a bucket: %(bucket)s.oss-cn-hangzhou.aliyuncs.com
Encryption password:
Path to GPG program: /usr/bin/gpg
Use HTTPS protocol: True
HTTP Proxy server name:
HTTP Proxy server port: 0
如果权限异常s3cmd会报错。这里其实和日期没任何关系。这里就是权限问题,提示信息不错。和日期没有任何关系
ERROR: S3 error: 403 (AccessDenied): OSS authentication requires a valid Date.
另外还遇到一个问题就是在put的时候,提示MD5失败。
WARNING: MD5 Sums don't match!
经查询,s3cmd有bug导致。AWS默认是全部小写,阿里云返回的MD5校验码有大写字符。
bug官方已经解决,但截至2.0.2版本还未修复。
如果要解决MD5问题,需要从github上下载S3.py文件,并替换。
我本地的路径是:
/usr/lib/python2.7/site-packages/S3/S3.py
https://github.com/mouchar/s3cmd/commit/d707533d981d6ad312bc79bfc60c08185a0a46de