Amazon web services Elastic Beanstalk连接到外部RDS创建的EC2权限

Amazon web services Elastic Beanstalk连接到外部RDS创建的EC2权限,amazon-web-services,permissions,amazon-elastic-beanstalk,amazon-rds,Amazon Web Services,Permissions,Amazon Elastic Beanstalk,Amazon Rds,我对Elastic Beanstalk很陌生,对服务器管理不是很精通,但我需要在Elastic Beanstalk上建立一个Django项目,连接到外部RDS MySQL数据库 我已经创建了一个单独的RDS MySQL数据库,我可以在我的计算机上使用Sequel Pro连接到它而不会出现问题。然后我有我的Django项目,我试图把它放到Elastic Beanstalk上,但不幸的是没有运气。如果我从我的计算机上运行本地Django服务器,该项目是可浏览的,Amazon RDS MySQL是可访

我对Elastic Beanstalk很陌生,对服务器管理不是很精通,但我需要在Elastic Beanstalk上建立一个Django项目,连接到外部RDS MySQL数据库

我已经创建了一个单独的RDS MySQL数据库,我可以在我的计算机上使用Sequel Pro连接到它而不会出现问题。然后我有我的Django项目,我试图把它放到Elastic Beanstalk上,但不幸的是没有运气。如果我从我的计算机上运行本地Django服务器,该项目是可浏览的,Amazon RDS MySQL是可访问的。然而,当我跑的时候

eb deploy
我明白了

如果我通过SSH登录到EC2服务器

eb ssh
然后用以下命令检查打开的端口:

netstat -lntu
我没有看到MySQL的3306端口,所以我猜它被防火墙屏蔽了

这是我在权限方面所做的尝试:

  • 我进入RDS Dashboard->Security Groups,创建了myapp mysql安全组,EC2安全组连接类型指向Elastic Beanstalk EC2实例“awseb-e-…”使用的EC2安全组
  • 我转到EC2->securitygroups,对于“awseb-e-…”,我将入站MySQL端口设置为source 0.0.0/0
  • 我去了VPC Dashboard->Security Groups,用源代码为0.0.0.0/0的mysql端口入站规则创建了myapp mysql安全组
  • 然后,我尝试重新部署、重启服务器,甚至重建环境,但都无济于事。在Elastic Beanstalk创建的EC2实例中,MySQL端口3306仍然没有打开


    我做错了什么或缺少了什么?

    MySQL端口3306仅在RDS实例中打开(不在EC2实例中)。因此,如果您检查EC2实例,它不应该侦听端口3306

    您可以执行哪些操作来检查RDS是否正常工作:

    • 检查EC2实例与RDS的连接。
      • SSH到您的实例(
        eb-SSH
        )并运行
        telnet myapp-staging.xxx.eu-west-1.rds.amazonaws.com 3306
        。您可能需要首先安装
        telnet
        yum安装telnet
      • 如果成功,请检查您的应用程序
      • 如果失败了,请检查下一点
    • 确保您的RDS和EC2位置正确:
      • 对于仅限私人访问的RDS:
        • 确保它们位于同一VPC中,并允许RDS中的传入连接从VPC的IP连接到3306。为了获得更好的性能,请使用IP地址而不是安全组名称
        • 如果他们在不同的VPC上,您可以创建
      • 对于公共访问RDS:
        • 同上,允许从VPC的IP进行传入连接
    • 确保允许EC2实例与EC2安全组中的端口3306建立传出连接
    • 确保您的EC2主机没有在
      iptables
      中拒绝3306规则
    • 如果您的EC2和RDS位于不同的VPC中,并且您的EC2使用专用IP,请检查NAT服务器。确保允许端口3306进行代理

    最初,Elastic Beanstalk的EC2与RDS不在同一VPC中。因此,我在与RDS相同的VPC中使用eb create命令中的--VPC switch重新创建了Elastic Beanstalk。为了解决进一步的连接问题,我不得不为RDS的传入连接添加VPC IP。谢谢你的详细解释。我希望它也能帮助其他AWS用户。
    netstat -lntu