問題
在使用 s3cmd 創(chuàng)建 bucket 名稱時(shí)發(fā)現(xiàn)必須使用首字母大寫的名稱才可以創(chuàng)建成功否則報(bào)錯(cuò),但是按照 s3 標(biāo)準(zhǔn) bucket 名稱只能包含小寫字母,數(shù)字、中橫杠(-)、點(diǎn)號(.)命名,而且 s3 的 python 接口也是按照標(biāo)準(zhǔn)的 bucket 命名規(guī)范進(jìn)行操作的,如果用 s3cmd 創(chuàng)建的首字母大寫的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/
參考
http://www.itdecent.cn/p/effb23ea7b5a
https://github.com/s3tools/s3cmd/issues/1026
https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html