2016-04-24 5 views
0

Я пытаюсь настроить службу динамических миниатюр thumbor и поддерживать s3 в качестве хранилища, мне нужно настроить это сообщество на питание pip library for aws.aws no credentials error

Его работа хорошо в моей локальной среде, но когда я пытаюсь разместить его на одном из наших серверов, я получаю NoCredentialsError. Я предполагаю, что это из-за разностных версий ботокора (последняя одна и одна, установленная библиотекой pip). Вот журнал ошибок:

File "/usr/local/lib/python2.7/dist-packages/botocore/session.py", line 774, in get_component 
    # client config from the session 
    File "/usr/local/lib/python2.7/dist-packages/botocore/session.py", line 174, in <lambda> 
    self._components.lazy_register_component(
    File "/usr/local/lib/python2.7/dist-packages/botocore/session.py", line 453, in get_data 
    - agent_version is the value of the `user_agent_version` 
    File "/usr/local/lib/python2.7/dist-packages/botocore/loaders.py", line 119, in _wrapper 
    data = func(self, *args, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/botocore/loaders.py", line 364, in load_data 
DataNotFoundError: Unable to load data for: _endpoints 







2016-04-24 12:14:34 tornado.application:ERROR Future exception was never retrieved: Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/tornado/gen.py", line 230, in wrapper 
    yielded = next(result) 
    File "/usr/local/lib/python2.7/dist-packages/thumbor/handlers/imaging.py", line 31, in check_image 
    exists = yield gen.maybe_future(self.context.modules.storage.exists(kw['image'][:self.context.config.MAX_ID_LENGTH])) 
    File "/usr/local/lib/python2.7/dist-packages/tornado/concurrent.py", line 455, in wrapper 
    future.result() 
    File "/usr/local/lib/python2.7/dist-packages/tornado/concurrent.py", line 215, in result 
    raise_exc_info(self._exc_info) 
    File "/usr/local/lib/python2.7/dist-packages/tornado/concurrent.py", line 443, in wrapper 
    result = f(*args, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/tc_aws/aws/storage.py", line 107, in exists 
    self.storage.get(file_abspath, callback=return_data) 
    File "/usr/local/lib/python2.7/dist-packages/tornado/concurrent.py", line 455, in wrapper 
    future.result() 
    File "/usr/local/lib/python2.7/dist-packages/tornado/concurrent.py", line 215, in result 
    raise_exc_info(self._exc_info) 
    File "/usr/local/lib/python2.7/dist-packages/tornado/concurrent.py", line 443, in wrapper 
    result = f(*args, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/tc_aws/aws/bucket.py", line 44, in get 
    Key=self._clean_key(path), 
    File "/usr/local/lib/python2.7/dist-packages/tornado_botocore/base.py", line 97, in call 
    return self._make_api_call(operation_name=self.operation, api_params=kwargs, callback=callback) 
    File "/usr/local/lib/python2.7/dist-packages/tornado_botocore/base.py", line 60, in _make_api_call 
    operation_model=operation_model, request_dict=request_dict, callback=callback) 
    File "/usr/local/lib/python2.7/dist-packages/tornado_botocore/base.py", line 54, in _make_request 
    request_dict=request_dict, operation_model=operation_model, callback=callback) 
    File "/usr/local/lib/python2.7/dist-packages/tornado_botocore/base.py", line 32, in _send_request 
    request = self.endpoint.create_request(request_dict, operation_model) 
    File "/usr/local/lib/python2.7/dist-packages/botocore/endpoint.py", line 126, in create_request 
    operation_name=operation_model.name) 
    File "/usr/local/lib/python2.7/dist-packages/botocore/hooks.py", line 226, in emit 
    return self._emit(event_name, kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/botocore/hooks.py", line 209, in _emit 
    response = handler(**kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/botocore/signers.py", line 90, in handler 
    return self.sign(operation_name, request) 
    File "/usr/local/lib/python2.7/dist-packages/botocore/signers.py", line 124, in sign 
    signer.add_auth(request=request) 
    File "/usr/local/lib/python2.7/dist-packages/botocore/auth.py", line 626, in add_auth 
    raise NoCredentialsError 
NoCredentialsError: Unable to locate credentials 

Может ли оно быть исправлено с правильным заказом, в котором я устанавливаю библиотеки? Поскольку библиотека pip удаляет существующую новую версию botocore и устанавливает более старую версию.

EDIT:

Я бегу процессы с супервизором и, кажется, процесс косяка AWS доступа учетных

EDIT 2:

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

+0

Похоже, что у ваших серверов нет учетных данных, настроенных должным образом. Как настроить учетные данные на вашем сервере и на компьютере разработки? Что касается версий, похоже, что tc_aws имеет жесткую зависимость от botocore 1.2.0, и поэтому может не работать, если вы перейдете за эту точку. –

+0

Да, tc_aws понижает ботокоры до 1.2.0. С текущей конфигурацией я попытался подключиться к ведро s3 из командной строки с boto3, и он работает. Я не знаю, какой правильный порядок установки этих библиотек. – pratsJ

+0

@ JordonPhillips Думаю, я понял вопрос. Я запускаю процессы с супервизором, а затем обрабатываю без доступа к учетным данным aws. – pratsJ

ответ

0

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