2016-09-27 62 views
0

嘿,我一直在一個問題上停留了一段時間,現在我可以從本地主機上傳媒體文件到AWS S3,但是當我部署到EB/EC2時上傳媒體文件時,會導致504網關超時。在我的開發服務器上,上傳工作正常,存儲在s3中沒有任何問題。無法從彈性beanstalk/ec2服務器上傳媒體文件

我目前使用django-storages但我已經試過django-storages-reduxdjango-s3-storages,我有它的工作在我的本地主機,但我部署的服務器上,我得到了504網關超時和文件不被上傳到S3同樣的問題。

我把我的設置文件分解爲dev和prod。在我的督促設置,我有以下:

# S3 FILE SETTINGS 
AWS_STORAGE_BUCKET_NAME = 'project-assets' 
AWS_S3_CUSTOM_DOMAIN = 'cdn.domain.com' 
ASSETS_PREFIX = 'app' # prefix in the bucket 
MEDIA_PREFIX = ASSETS_PREFIX + '/uploads/' 
DEFAULT_FILE_STORAGE = 'core.storages.MediaStorage' 
STATICFILES_STORAGE = 'core.storages.StaticStorage' 

爲了測試在發展中,我只是將這些設置,以我的dev的設置底部。

我有這些自定義前綴將其存儲在s3上的特定目錄中。

# storages.py 
from django.conf import settings 

from storages.backends.s3boto import S3BotoStorage 


class StaticStorage(S3BotoStorage): 
    def __init__(self, *args, **kwargs): 
     kwargs['location'] = settings.ASSETS_PREFIX 
     return super(StaticStorage, self).__init__(*args, **kwargs) 


class MediaStorage(S3BotoStorage): 
    def __init__(self, *args, **kwargs): 
     kwargs['location'] = settings.MEDIA_PREFIX 
     return super(MediaStorage, self).__init__(*args, **kwargs) 

我在其他項目之前得到這個錯誤,它通常有與AWS_REGION做。我也嘗試過使用該設置,但具有相同的結果。我的S3存儲在'us-west-2'(默認)中,據我所知我不需要指定區域。

這裏是當我嘗試上傳部署的實例時出現在我的日誌中的堆棧跟蹤。

Traceback (most recent call last): 
File "/opt/python/run/venv/lib/python3.4/site-packages/django/core/handlers/exception.py", line 39, in inner 
[Tue Sep 27 16:01:31.991596 2016] [:error] [pid 13870]  response = get_response(request) 
[Tue Sep 27 16:01:31.991598 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/django/core/handlers/base.py", line 187, in _get_response 
[Tue Sep 27 16:01:31.991600 2016] [:error] [pid 13870]  response = self.process_exception_by_middleware(e, request) 
[Tue Sep 27 16:01:31.991602 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/django/core/handlers/base.py", line 185, in _get_response 
[Tue Sep 27 16:01:31.991604 2016] [:error] [pid 13870]  response = wrapped_callback(request, *callback_args, **callback_kwargs) 
[Tue Sep 27 16:01:31.991606 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view 
[Tue Sep 27 16:01:31.991608 2016] [:error] [pid 13870]  return view_func(*args, **kwargs) 
[Tue Sep 27 16:01:31.991609 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/rest_framework/viewsets.py", line 87, in view 
[Tue Sep 27 16:01:31.991619 2016] [:error] [pid 13870]  return self.dispatch(request, *args, **kwargs) 
[Tue Sep 27 16:01:31.991621 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/rest_framework/views.py", line 474, in dispatch 
[Tue Sep 27 16:01:31.991623 2016] [:error] [pid 13870]  response = self.handle_exception(exc) 
[Tue Sep 27 16:01:31.991625 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/rest_framework/views.py", line 434, in handle_exception 
[Tue Sep 27 16:01:31.991626 2016] [:error] [pid 13870]  self.raise_uncaught_exception(exc) 
[Tue Sep 27 16:01:31.991628 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/rest_framework/views.py", line 471, in dispatch 
[Tue Sep 27 16:01:31.991630 2016] [:error] [pid 13870]  response = handler(request, *args, **kwargs) 
[Tue Sep 27 16:01:31.991631 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/rest_framework/mixins.py", line 21, in create 
[Tue Sep 27 16:01:31.991633 2016] [:error] [pid 13870]  self.perform_create(serializer) 
[Tue Sep 27 16:01:31.991634 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/rest_framework/mixins.py", line 26, in perform_create 
[Tue Sep 27 16:01:31.991636 2016] [:error] [pid 13870]  serializer.save() 
[Tue Sep 27 16:01:31.991638 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/rest_framework/serializers.py", line 192, in save 
[Tue Sep 27 16:01:31.991639 2016] [:error] [pid 13870]  self.instance = self.create(validated_data) 
[Tue Sep 27 16:01:31.991641 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/rest_framework/serializers.py", line 873, in create 
[Tue Sep 27 16:01:31.991643 2016] [:error] [pid 13870]  instance = ModelClass.objects.create(**validated_data) 
[Tue Sep 27 16:01:31.991644 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/django/db/models/manager.py", line 85, in manager_method 
[Tue Sep 27 16:01:31.991646 2016] [:error] [pid 13870]  return getattr(self.get_queryset(), name)(*args, **kwargs) 
[Tue Sep 27 16:01:31.991659 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/django/db/models/query.py", line 399, in create 
[Tue Sep 27 16:01:31.991661 2016] [:error] [pid 13870]  obj.save(force_insert=True, using=self.db) 
[Tue Sep 27 16:01:31.991663 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/django/db/models/base.py", line 796, in save 
[Tue Sep 27 16:01:31.991665 2016] [:error] [pid 13870]  force_update=force_update, update_fields=update_fields) 
[Tue Sep 27 16:01:31.991666 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/django/db/models/base.py", line 824, in save_base 
[Tue Sep 27 16:01:31.991668 2016] [:error] [pid 13870]  updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields) 
[Tue Sep 27 16:01:31.991670 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/django/db/models/base.py", line 908, in _save_table 
[Tue Sep 27 16:01:31.991672 2016] [:error] [pid 13870]  result = self._do_insert(cls._base_manager, using, fields, update_pk, raw) 
[Tue Sep 27 16:01:31.991673 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/django/db/models/base.py", line 947, in _do_insert 
[Tue Sep 27 16:01:31.991675 2016] [:error] [pid 13870]  using=using, raw=raw) 
[Tue Sep 27 16:01:31.991677 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/django/db/models/manager.py", line 85, in manager_method 
[Tue Sep 27 16:01:31.991679 2016] [:error] [pid 13870]  return getattr(self.get_queryset(), name)(*args, **kwargs) 
[Tue Sep 27 16:01:31.991680 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/django/db/models/query.py", line 1045, in _insert 
[Tue Sep 27 16:01:31.991682 2016] [:error] [pid 13870]  return query.get_compiler(using=using).execute_sql(return_id) 
[Tue Sep 27 16:01:31.991686 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 1053, in execute_sql 
[Tue Sep 27 16:01:31.991688 2016] [:error] [pid 13870]  for sql, params in self.as_sql(): 
[Tue Sep 27 16:01:31.991690 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 1006, in as_sql 
[Tue Sep 27 16:01:31.991692 2016] [:error] [pid 13870]  for obj in self.query.objs 
[Tue Sep 27 16:01:31.991693 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 1006, in <listcomp> 
[Tue Sep 27 16:01:31.991695 2016] [:error] [pid 13870]  for obj in self.query.objs 
[Tue Sep 27 16:01:31.991697 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 1005, in <listcomp> 
[Tue Sep 27 16:01:31.991699 2016] [:error] [pid 13870]  [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields] 
[Tue Sep 27 16:01:31.991701 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 955, in pre_save_val 
[Tue Sep 27 16:01:31.991702 2016] [:error] [pid 13870]  return field.pre_save(obj, add=True) 
[Tue Sep 27 16:01:31.991704 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/django/db/models/fields/files.py", line 292, in pre_save 
[Tue Sep 27 16:01:31.991706 2016] [:error] [pid 13870]  file.save(file.name, file, save=False) 
[Tue Sep 27 16:01:31.991708 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/django/db/models/fields/files.py", line 91, in save 
[Tue Sep 27 16:01:31.991709 2016] [:error] [pid 13870]  self.name = self.storage.save(name, content, max_length=self.field.max_length) 
[Tue Sep 27 16:01:31.991711 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/django/core/files/storage.py", line 54, in save 
[Tue Sep 27 16:01:31.991713 2016] [:error] [pid 13870]  return self._save(name, content) 
[Tue Sep 27 16:01:31.991714 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/storages/backends/s3boto.py", line 413, in _save 
[Tue Sep 27 16:01:31.991716 2016] [:error] [pid 13870]  self._save_content(key, content, headers=headers) 
[Tue Sep 27 16:01:31.991718 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/storages/backends/s3boto.py", line 424, in _save_content 
[Tue Sep 27 16:01:31.991720 2016] [:error] [pid 13870]  rewind=True, **kwargs) 
[Tue Sep 27 16:01:31.991721 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/boto/s3/key.py", line 1293, in set_contents_from_file 
[Tue Sep 27 16:01:31.991723 2016] [:error] [pid 13870]  chunked_transfer=chunked_transfer, size=size) 
[Tue Sep 27 16:01:31.991725 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/boto/s3/key.py", line 750, in send_file 
[Tue Sep 27 16:01:31.991727 2016] [:error] [pid 13870]  chunked_transfer=chunked_transfer, size=size) 
[Tue Sep 27 16:01:31.991728 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/boto/s3/key.py", line 951, in _send_file_internal 
[Tue Sep 27 16:01:31.991730 2016] [:error] [pid 13870]  query_args=query_args 
[Tue Sep 27 16:01:31.991732 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/boto/s3/connection.py", line 668, in make_request 
[Tue Sep 27 16:01:31.991734 2016] [:error] [pid 13870]  retry_handler=retry_handler 
[Tue Sep 27 16:01:31.991735 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/boto/connection.py", line 1071, in make_request 
[Tue Sep 27 16:01:31.991737 2016] [:error] [pid 13870]  retry_handler=retry_handler) 
[Tue Sep 27 16:01:31.991739 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/boto/connection.py", line 1030, in _mexe 
[Tue Sep 27 16:01:31.991743 2016] [:error] [pid 13870]  raise ex 
[Tue Sep 27 16:01:31.991744 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/boto/connection.py", line 940, in _mexe 
[Tue Sep 27 16:01:31.991746 2016] [:error] [pid 13870]  request.body, request.headers) 
[Tue Sep 27 16:01:31.991748 2016] [:error] [pid 13870] File "/opt/python/run/venv/lib/python3.4/site-packages/boto/s3/key.py", line 844, in sender 
[Tue Sep 27 16:01:31.991750 2016] [:error] [pid 13870]  http_conn.send(chunk) 
[Tue Sep 27 16:01:31.991751 2016] [:error] [pid 13870] File "/usr/lib64/python3.4/http/client.py", line 917, in send 
[Tue Sep 27 16:01:31.991753 2016] [:error] [pid 13870]  self.sock.sendall(data) 
[Tue Sep 27 16:01:31.991755 2016] [:error] [pid 13870] File "/usr/lib64/python3.4/ssl.py", line 723, in sendall 
[Tue Sep 27 16:01:31.991756 2016] [:error] [pid 13870]  v = self.send(data[count:]) 
[Tue Sep 27 16:01:31.991758 2016] [:error] [pid 13870] File "/usr/lib64/python3.4/ssl.py", line 684, in send 
[Tue Sep 27 16:01:31.991760 2016] [:error] [pid 13870]  v = self._sslobj.write(data) 
[Tue Sep 27 16:01:31.991763 2016] [:error] [pid 13870] ConnectionResetError: [Errno 104] Connection reset by peer 

我想也許有一個與SSL的問題(一切都是HTTPS),並嘗試設置AWS_S3_SECURE_URLS = True設置,但有同樣的結果。

我也嘗試關閉https重定向並通過http://上傳,並再次獲得相同的結果。

歡迎任何想法,在此先感謝!

+0

在附註上,您可以讓瀏覽器直接上載到S3並減少服務器上的負載。用戶也會更快。 http://stackoverflow.com/questions/9421727/upload-directly-to-s3-from-django – kichik

回答

0

那麼,正如預期的那樣,這是非常簡單的。我沒有加載我的id/key到環境變量中。

相關問題