2016-08-24 111 views
1

我想从我的S3存储桶与s3cmd路径样式URL访问对象。这对Java SDK来说没有问题。s3cmd节点名称,服务名称提供,或不知道

s3Client.setS3ClientOptions(S3ClientOptions.builder() 
      .setPathStyleAccess(true).build()); 

我想对s3cmd做同样的事情。我在s3conf文件进行设置:

host_base = s3.eu-central-1.amazonaws.com 
host_bucket = s3.eu-central-1.amazonaws.com/%(bucket)s 

这适用于桶上市:

$ s3cmd ls 
2016-08-24 12:36 s3://test 

当试图列出斗我得到以下错误的所有对象:

Traceback (most recent call last): 
File "/usr/local/bin/s3cmd", line 2919, in <module> 
rc = main() 
File "/usr/local/bin/s3cmd", line 2841, in main 
rc = cmd_func(args) 
    File "/usr/local/bin/s3cmd", line 120, in cmd_ls 
subcmd_bucket_list(s3, uri) 
File "/usr/local/bin/s3cmd", line 153, in subcmd_bucket_list 
response = s3.bucket_list(bucket, prefix = prefix) 
File "/usr/local/lib/python2.7/site-packages/S3/S3.py", line 297, in bucket_list 
for dirs, objects in self.bucket_list_streaming(bucket, prefix, recursive, uri_params): 
File "/usr/local/lib/python2.7/site-packages/S3/S3.py", line 324, in bucket_list_streaming 
response = self.bucket_list_noparse(bucket, prefix, recursive, uri_params) 
File "/usr/local/lib/python2.7/site-packages/S3/S3.py", line 343, in bucket_list_noparse 
response = self.send_request(request) 
File "/usr/local/lib/python2.7/site-packages/S3/S3.py", line 1081, in send_request 
conn = ConnMan.get(self.get_hostname(resource['bucket'])) 
File "/usr/local/lib/python2.7/site-packages/S3/ConnMan.py", line 192, in get 
conn.c.connect() 
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 836, in connect 
self.timeout, self.source_address) 
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 557, in create_connection 
for res in getaddrinfo(host, port, 0, SOCK_STREAM): 
gaierror: [Errno 8] nodename nor servname provided, or not known 

回答

2

假设您的配置没有其他问题,则用于“host_bucket”的值是错误的。

它应该是:

host_bucket = %(bucket)s.s3.eu-central-1.amazonaws.com 

host_bucket = s3.eu-central-1.amazonaws.com 

第二个将用于 “路径式” 使用。但是,如果您使用的是amazon s3和我建议的第一个host_bucket值,则s3cmd将自动使用基于dns或基于路径的存储桶,具体取决于您在存储桶名称中使用的字符。

这是您希望仅使用基于路径的样式的特殊原因吗?

相关问题