【问题标题】:ETIMEDOUT error when deploying Node.js app to Elastic Beanstalk将 Node.js 应用程序部署到 Elastic Beanstalk 时出现 ETIMEDOUT 错误
【发布时间】:2020-09-08 02:17:53
【问题描述】:
我希望能在我面临的这个部署问题上获得一些帮助:
我创建了一个 RDS 实例,通过查看仪表板可以看到它“可用”。然后我使用 Elastic Beanstalk CLI 部署我的应用程序,部署成功。
但是,当我访问端点时,我从 nginx 获得了 502 Bad Gateway。检查日志后,我可以从我的 Node.js 应用程序中看到以下错误:
错误:连接 ETIMEDOUT x.x.x.x:5432(ip 省略)
根据AWS documentation on this,我尝试将自动生成的安全组从我的 Elastic Beanstalk 实例分配给我的 RDS 实例,但我仍然遇到同样的错误。
我在这里的文档中有什么误解吗?如果有人能在这里指出正确的方向,我将不胜感激。
提前谢谢你。
【问题讨论】:
标签:
amazon-web-services
amazon-elastic-beanstalk
【解决方案1】:
经过大量试验和错误后,设法解决了这个问题。事实证明这并不太棘手。
- 转到您的 EB 环境 -> 配置
- 点击“实例”旁边的“编辑”
- 记下底部选择的安全组 ID
- 创建一个新的安全组,例如"my-eb-instance-rds-access"
- 在“入站规则”下选择“添加规则”。选择您正在使用的任何数据库服务,它应该会自动填充端口。将来源设置为“自定义”,然后单击搜索框。选择您之前记下的 EB 实例具有的安全组。
- 点击“创建安全组”
- 找到您的 RDS 实例并点击“修改”
- 向下滚动并找到“连接”。然后从下拉框中选择您刚刚创建的安全组。
- 一直滚动到底部并点击继续。在这里,我发现有两种选择:一种立即更新更改,另一种等待定期定期维护。我不是专家,但我选择了“立即”选项,因为数据库尚未在生产中使用,所以一些停机时间不是问题。
- 您的 EB 实例现在应该可以连接了!即使在重新部署后,这对我也有用。
免责声明:我绝不是专家。这纯粹是通过反复试验完成的。如果有人有任何提示或改进,我很乐意听到并编辑答案。