2016-08-24 1 views
1

경로 스타일 URL을 사용하여 S3 버킷에서 S3 버킷의 개체에 액세스하려고합니다. Java SDK와 마찬가지로 문제 없습니다.s3cmd 노드 이름 또는 서비스 이름이 제공되거나 알려지지 않음

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

s3cmd와 동일하게 작업하고 싶습니다.

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

이 버킷 작동과 함께 목록 : 내 s3conf 파일이 설정 한

$ 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 기반 또는 경로 기반 버킷을 자동으로 사용합니다.

경로 기반 스타일 만 사용하려는 특별한 이유가 있습니까?

관련 문제