问题
在使用 s3cmd 创建 bucket 名称时发现必须使用首字母大写的名称才可以创建成功否则报错,但是按照 s3 标准 bucket 名称只能包含小写字母,数字、中横杠(-)、点号(.)命名,而且 s3 的 python 接口也是按照标准的 bucket 命名规范进行操作的,如果用 s3cmd 创建的首字母大写的bucket是不能被python接口操作的。
成功
# s3cmd mb s3://Czsss
Bucket 's3://Czsss/' created
失败
# s3cmd mb s3://czsss
ERROR: [Errno -2] Name or service not known
ERROR: Connection Error: Error resolving a server hostname.
Please check the servers address specified in 'host_base', 'host_bucket', 'cloudfront_host', 'website_endpoint'
# s3cmd mb s3://czsss-xxxx
ERROR: [Errno -2] Name or service not known
ERROR: Connection Error: Error resolving a server hostname.
Please check the servers address specified in 'host_base', 'host_bucket', 'cloudfront_host', 'website_endpoint'
文件
s3cmd --configure 生成的配置文件如下
cat /root/.s3cfg
access_key = QFBD6HTA7KVCQ4FF0XGT
secret_key = 5yfezCjCiZxK8icwiG3MUWYD54jkU36f9cmEfaRO
host_base = s3-beta5.51wyq.cn:7480
host_bucket = %(bucket)s.s3-beta5.51wyq.cn:7480
simpledb_host = s3-beta5.51wyq.cn:7480
cloudfront_host = s3-beta5.51wyq.cn:7480
website_endpoint = http://%(bucket)s.s3-beta5.51wyq.cn:7480/
解决
s3cmd --configure 重新生成配置文件,这里 host_base 和 host_bucket 使用 ip:port 的方式表示。
cat /root/.s3cfg
access_key = QFBD6HTA7KVCQ4FF0XGT
secret_key = 5yfezCjCiZxK8icwiG3MUWYD54jkU36f9cmEfaRO
host_base = 10.10.10.27:7480
host_bucket = 10.10.10.27:7480
simpledb_host = sdb.amazonaws.com
cloudfront_host = cloudfront.amazonaws.com
website_endpoint = http://%(bucket)s.s3-website-%(location)s.amazonaws.com/
参考
https://www.jianshu.com/p/effb23ea7b5a
https://github.com/s3tools/s3cmd/issues/1026
https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html
网友评论