2016-08-24 14 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 

秒1人の意志使用される "パススタイル" のために。しかし、amazon s3と私が提案した最初のhost_bucket値を使用している場合、s3cmdはバケット名で使用している文字に応じて自動的にDNSベースまたはパスベースのバケットを使用します。

パスベーススタイルのみを使用する理由は何ですか?

関連する問題