【发布时间】:2016-08-28 22:40:17
【问题描述】:
我正在通过 aws elastic beanstalk 将节点应用程序部署到 ec2 实例。我使用 cron 节点包设置了一个 cron 作业,它在滴答时将运行一个 sequelize 查询,解析返回的数据,然后将其发送到电子邮件的正文中。
在本地测试时,它可以正常工作并发送电子邮件。当我使用 awsebcli 命令eb deploy 部署它时,它说部署成功,但我没有收到任何电子邮件。
起初我认为npm start 命令在服务器上不起作用,但我检查了错误日志,似乎 sequelize 在尝试连接时抛出超时错误。
我为 sequelize 编写了一个配置,以一次连接到多个模式。其中三个架构托管在同一个 RDS 上,一个托管在单独的 RDS 上。
我用另一个节点应用程序做了几乎完全相同的事情,它运行良好。唯一不同的是,我在本地机器上可以正常连接的单独 RDS 上的附加架构。
任何想法或建议将不胜感激。
编辑:检查服务器日志,发现 Sequelize 连接错误。
【问题讨论】:
-
服务器日志有错误吗?
-
@MarkB 拉出最后 100 行,看到这一行出现了几次。
Unhandled rejection SequelizeConnectionError: connect ETIMEDOUT这显然意味着 sequelize 无法连接到我的数据库,但为什么呢? -
没有办法用给出的信息回答你的问题。也许检查您的安全组。
-
鉴于您的最后一条评论,由于某种原因您已将其删除,听起来您只需更新单独 RDS 实例的安全组以允许从 EC2 实例进行访问。
-
好吧,我想留下答案,我之前的评论几乎给出了答案,所以我想我只是编辑问题并删除评论。但是,是的,这将是唯一真正的解决方案,没有将架构迁移到已经允许该实例访问的 RDS。
标签: node.js amazon-web-services amazon-ec2 cron amazon-elastic-beanstalk