s3cmd nodename или servname предоставлены или неизвестны

Я пытаюсь получить доступ к объектам из своего ведра S3 с помощью s3cmd с URL-адресами в стиле пути. Это не проблема с Java SDK вроде.

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

person Daniel R.    schedule 24.08.2016    source источник


Ответы (1)


Предполагая, что с вашей конфигурацией нет других проблем, значение, которое вы использовали для "host_bucket", неверно.

Должен быть:

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

or

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

Второй будет для использования «стиля пути». Но если вы используете amazon s3 и первое значение host_bucket, которое я предлагаю, s3cmd будет автоматически использовать ведра на основе DNS или на основе пути в зависимости от того, какие символы вы используете в имени вашей корзины.

Это особая причина, по которой вы хотите использовать только стиль на основе пути?

person Florent V    schedule 17.09.2016