Node.js 通过API网关安全路由的ECS容器不会返回,但容器的运行状况检查良好
好吧,这将是一个漫长的过程,但我想确保我能解释清楚。我试图做一个概念证明,我们可以通过使用API网关公开的ECS部署微服务,这样我们就可以利用lambda授权人和cognito 为了实现这一目标,我一直遵循本指南 但是,一旦部署网关,我将面临以下错误:Node.js 通过API网关安全路由的ECS容器不会返回,但容器的运行状况检查良好,node.js,amazon-web-services,docker,amazon-ecs,aws-application-load-balancer,Node.js,Amazon Web Services,Docker,Amazon Ecs,Aws Application Load Balancer,好吧,这将是一个漫长的过程,但我想确保我能解释清楚。我试图做一个概念证明,我们可以通过使用API网关公开的ECS部署微服务,这样我们就可以利用lambda授权人和cognito 为了实现这一目标,我一直遵循本指南 但是,一旦部署网关,我将面临以下错误: Cannot GET /node-demo 让我介绍一下基本知识,我有一个基本的express应用程序,如下所示: const express = require('express') const PORT = process.env.POR
Cannot GET /node-demo
让我介绍一下基本知识,我有一个基本的express应用程序,如下所示:
const express = require('express')
const PORT = process.env.PORT || 3000
const app = express()
app.get('/', (request, response) => {
return response.json({
data: {
message: `API is functional`,
},
})
})
app.listen(PORT, () => console.log(`App running on port ${PORT}`))
Dockerfile如下所示:
FROM mhart/alpine-node:10.16.3
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY index.js .
CMD ["npm", "start"]
此docker映像已推送到ECR,我已使用环境变量PORT=>80创建了一个任务定义
在我的群集上创建了一个工作正常的服务。然后创建了一个ALB,目标组指向我的容器,这些容器恢复正常
我通过以下途径到达这些目标:
然后我的NLB指向ALB,我已经允许ALB上有正确的IP,因此我们可以通过安全组访问它。NLB目标群体中的两个IP都是健康的
在API Gateway中创建了一个VPC链接,然后创建了一个如下所示的资源:
然后,我在最后用/node demo
点击URL,得到上面的初始错误。要么是导游搞错了,要么是我做错了什么事。好消息和坏消息
好消息,我已经解决了这个问题
坏消息,这太简单了
只需要在express应用程序中添加一个路由
/node demo
添加建议进行一些测试以隔离问题。您可以直接呼叫ECS内部IP吗?如果成功,那么问题在于路由。此外,请检查您的安全组,并确保端口和IP/子网都已列入白名单。访问内部IP的问题是我在哪里执行该表单?为什么您同时具有ALB和NLB?有API网关->NLB->ECS服务不是更好吗?我只是从那个指南开始,我会试一试!啊,我记得为什么,ALB意味着我可以有多个目标组,然后我可以在不同的URL下路由,即/测试/演示等