React Node Microservice应用程序可在本地运行,但无法一次部署到AWS ECS

时间:2018-11-09 20:55:30

标签: node.js reactjs amazon-web-services docker amazon-ecs

我正在尝试将应用程序部署到AWS ECS。该应用程序的后端是微服务,客户端是具有服务器端渲染的React应用。

后端使用内部负载均衡器部署在ECS的专用子网中。与客户端相同,部署在相同的专用子网中,但部署在不同的ECS群集(具有单独的ECS实例)中。而且,客户端连接到面向Internet的应用程序负载平衡器。

下图描述了我描述的AWS架构

enter image description here

问题

每当React App发出的GET或POST或任何其他HTTP请求未到达后端时。但是当我在本地运行该应用程序时,所有这些都可以正常工作

当我通过SSH进入客户端的ECS实例并使用带有后端内部负载均衡器DNS名称的CURL进行GET或POST调用时,它可以完美运行并向后端执行适当的HTTP请求。我还通过SSH在客户端docker容器中尝试了同样的方法,并且没有任何问题。

以下是进行后端调用的操作示例

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名称,并且确实如此。在本地运行时,我分别传递每个服务的主机名/端口。

我将非常感谢您对此提供的任何投入和见解,如果你们需要更多信息,请告诉我,我将更新此问题。

谢谢!

0 个答案:

没有答案