AWS: Как обеспечить связь фронтенда S3 (React, Axios) с бэкендом EC2 (python3/Django, DjangoREST, corsheaders)

Я следовал руководству по созданию базового приложения To-Do (так что CRUD) с фронтендом React+Axios (ServiceWorker, bootstrap) и бэкендом Django (DjangoREST, corsheaders), и хотел бы разместить его на бесплатном уровне AWS для поиска работы. Приложение отлично работает локально на localhost, и я даже смог запустить сервер на EC2 и разместить фронтенд на S3, используя различные другие руководства. Теперь я застрял на том, как заставить их взаимодействовать, не находясь на одной машине. Я надеялся, что смогу просто изменить некоторые строки, относящиеся к localhost, на их IP и порты, но это не сработало. Поскольку это довольно простой пример программы, я постарался свести безопасность к минимуму во время установки, чтобы помочь общению, и разрешил HTTP и HTTPS и все, что мог * в моих настройках безопасности. В файле settings.py у меня есть:

ALLOWED_HOSTS = ['*']
CORS_ORIGIN_WHITELIST = ['http://frontend-IP:3000']

и в моем frontend package.json у меня есть:

"proxy": "http://backend-IP:80",

для туннелирования API в бэкэнд, чтобы мои команды axios выглядели так:

axios
      .get("/api/todos/")

Вместо полного адреса. Я также не уверен, как заставить React использовать что-то другое, кроме localhost:3000, или нужно ли мне это менять, если на S3 все в порядке? Я попытался проверить это локально с помощью cross-env, .env и добавления HOST в package.json, но после того, как я поработал, это повредило моей способности npm запускать сервер до такой степени, что мне пришлось изменить версии.

У меня нет Elastic Load Balancer на AWS, если я не пропустил эту опцию при настройке, является ли это частью этого? Я также немного не понимаю, нужны ли здесь какие-либо сертификаты, поскольку я никогда не разворачивал приложение, которое должно было общаться через Интернет.

Я ожидал, что хостинг на S3 и EC2 позволит мне просто изменить вышеупомянутые строки на IP и порты друг друга, чтобы они могли общаться и выполнять CRUD-операции над файлом db.sqlite3 Django.

Вернуться на верх