В настоящее время я работаю над проектом Django на сервере AWS EC2, на котором в качестве ОС установлен RHEL8. Моя среда AWS настроена для хранения как статических, так и мультимедийных файлов в S3. Моя модель приложения django использует ImageField для загрузки изображения и сохранения в S3. При попытке сохранить изображение в S3 через мое приложение django, я в настоящее время получаю ошибку соединения HTTP 500 с отказом в разрешении, и проблема не в моем приложении django, так как я тестировал точно такое же приложение с теми же конфигурациями (setting.py) намой локальный хост и я можем успешно загрузить как статические файлы, так и мультимедийные файлы на s3. Почему это работает на моем локальном хосте, а не в моем экземпляре EC2? Эта проблема связана с подключением к S3 через EC2 при загрузке изображения, так как у меня не было проблем с загрузкой статических файлов в S3 из моего экземпляра EC2.
При устранении неисправности вышеупомянутой проблемы я хотел исключить, чтопроблема была связана с моим приложением django, возможно, моим файлом settings.py. Я установил точно такой же проект django на свой локальный компьютер (ноутбук) и смог загрузить как статические файлы, так и файл изображения в мое хранилище S3 через мое приложение django. В результате у моего экземпляра EC2 возникают проблемы с подключением к моей корзине s3, особенно при загрузке изображения из моего приложения django, поэтому моя проблема связана с моей конфигурацией AWS с S3 (разрешения) или EC2 (wsgi). Не уверен, с чего начать.
s3 Политика Bucket для корзины Testerstorage
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::testerstorage",
"arn:aws:s3:::testerstorage/*"
]
}
]
}
s3 Конфигурация CORS
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<MaxAgeSeconds>6000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Ошибка трассировки
Internal Server Error: /admin/photoapp/photo/add/
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/urllib3/connection.py", line 171, in _new_conn
(self._dns_host, self.port), self.timeout, **extra_kw)
File "/usr/lib/python3.6/site-packages/urllib3/util/connection.py", line 79, in create_connection
raise err
File "/usr/lib/python3.6/site-packages/urllib3/util/connection.py", line 69, in create_connection
sock.connect(sa)
PermissionError: [Errno 13] Permission denied
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/botocore/httpsession.py", line 263, in send
chunked=self._chunked(request.headers),
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 638, in urlopen
_stacktrace=sys.exc_info()[2])
File "/usr/lib/python3.6/site-packages/urllib3/util/retry.py", line 343, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3.6/site-packages/urllib3/packages/six.py", line 693, in reraise
raise value
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 343, in _make_request
self._validate_conn(conn)
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 849, in _validate_conn
conn.connect()
File "/usr/lib/python3.6/site-packages/urllib3/connection.py", line 314, in connect
conn = self._new_conn()
File "/usr/lib/python3.6/site-packages/urllib3/connection.py", line 180, in _new_conn
self, "Failed to establish a new connection: %s" % e)
urllib3.exceptions.NewConnectionError: <botocore.awsrequest.AWSHTTPSConnection object at 0x7f3a7f847240>: Failed to establish a new connection:
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib64/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/usr/local/lib64/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib64/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args,
**callback_kwargs)
File "/usr/local/lib64/python3.6/site-packages/django/contrib/admin/options.py", line 606, in wrapper
return self.admin_site.admin_view(view)(*args, **kwargs)
File "/usr/local/lib64/python3.6/site-packages/django/utils/decorators.py", line 142, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "/usr/local/lib64/python3.6/site-packages/django/views/decorators/cache.py", line 44, in _wrapped_view_func
response = view_func(request, *args, **kwargs)