Я пытаюсь развернуть приложение в AWS ECS. Бэкэнд приложения - это микросервис, а клиентская часть - приложение реакции с рендерингом на стороне сервера.
Серверная часть развертывается в частной подсети в ECS с внутренним балансировщиком нагрузки. То же самое со стороны клиента, развернуто в той же частной подсети, но в другом кластере ECS (с отдельными экземплярами ECS). Кроме того, на стороне клиента подключен балансировщик нагрузки приложений, выходящий в Интернет.
Следующая диаграмма изображает архитектуру AWS, которую я описал
выпуск
Всякий раз, когда GET, POST или любой другой HTTP-запрос, сделанные приложением React, не доходят до серверной части. Но все это прекрасно работает, когда я запускаю приложение локально
Когда я отправляю SSH в экземпляр ECS на стороне клиента и выполняю вызов GET или POST, используя CURL с внутренним DNS-именем внутреннего балансировщика нагрузки, он работает отлично и выполняет соответствующий HTTP-запрос к бэкэнду. Я также попробовал то же самое по SSH в клиентском док-контейнере и работает без проблем.
Ниже приведен пример действия, которое выполняет внутренний вызов
export function getData() {
return {
type: "GET_DATA",
payload: new Promise((resolve, reject) => {
app.auth().onAuthStateChanged((id) => {
if(id) {
axios.get(process.env.BACKEND_HOST+`/service1/${id}`)
.then((response) => {
if(response.data == "") {
reject(false);
}
resolve(response.data)
}).catch((error) => { console.log(error) })
} else {
reject(false);
}
})
})
}
}
Ниже выводится ошибка, которую я получаю при совершении вышеуказанного вызова
OPTIONS http://internal-cc-backend-lb-238318069.us-east-1.elb.amazonaws.com/service1/data net::ERR_CONNECTION_TIMED_OUT
Error: Network Error
at e.exports (bundle.js:30)
at XMLHttpRequest.f.onerror (bundle.js:30)
OPTIONS http://internal-cc-backend-lb-238318069.us-east-1.elb.amazonaws.com/service1 net::ERR_CONNECTION_TIMED_OUT
Error: Network Error
at e.exports (bundle.js:30)
at XMLHttpRequest.f.onerror (bundle.js:30)
GET http://internal-cc-backend-lb-238318069.us-east-1.elb.amazonaws.com/service1/XfSOjVUFCcSoNEsFljOPfP11XyG2 net::ERR_CONNECTION_TIMED_OUT
Error: Network Error
at e.exports (bundle.js:30)
at XMLHttpRequest.f.onerror (bundle.js:30)
Я передаю DNS-имя внутреннего балансировщика нагрузки как переменную среды. Протестировано с console.log, чтобы увидеть, получает ли код правильное имя DNS, и это происходит. При локальном запуске я передаю имя хоста / порт каждой службы отдельно.
Буду очень признателен за любые замечания и замечания по этому вопросу, и если вам, ребята, нужна дополнительная информация, пожалуйста, дайте мне знать, я обновлю этот вопрос.
Заранее спасибо!