我试图用s3cmd和路径样式的url从s3bucket访问对象。这与Java SDK类似没有问题。在
s3Client.setS3ClientOptions(S3ClientOptions.builder()
.setPathStyleAccess(true).build());
我想用s3cmd做同样的事情。我已经在我的s3conf文件中设置了这个:
^{pr2}$这适用于存储桶列表:
$ s3cmd ls
2016-08-24 12:36 s3://test
当试图列出一个bucket的所有对象时,我得到了以下错误:
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
假设您的配置没有其他问题,那么您用于“host_bucket”的值是错误的。在
它应该是:
或者
^{pr2}$第二种方法将使用“路径样式”。但是,如果您使用amazons3和我建议的第一个host_bucket值,s3cmd将根据您在bucket名称中使用的字符自动使用基于dns或基于路径的bucket。在
这是您只想使用基于路径的样式的特殊原因吗?在
相关问题 更多 >
编程相关推荐