在AWS上打开Elastic Beanstalk和一个EC2实例之间的端口

我目前有以下设置:

  • 运行使用Elastic Beanstalk的API(Node.JS),目前只运行一个EC2实例
  • 运行在独立EC2实例上的MongoDB实例

目前,我有两个安全组,一个用于DB,我们称之为sg-db ,另一个由Elastic Beanstalk生成,称为awseb-e-wwbtetapaa-stack-AWSEBSecurityGroup-xx

sg-db上 ,我把端口27017打开到0.0.0.0/0。 我试图closures端口,以便只有我的Elastic Beanstalk应用程序可以访问它。 我已经尝试打开27017为awseb-e-wwbtetapaa-stack-AWSEBSecurityGroup-xx ,但它没有工作,我仍然无法访问它。

出于testing目的,我尝试连接运行API的EC2实例,然后尝试打开我的数据库实例上的端口22,我尝试打开awseb-e-wwbtetapaa-stack-AWSEBSecurityGroup-xx上的端口22并在亚马逊 -elb-sg 。 两者都没有工作。

任何人有关于如何closuresMongoDB端口的想法? 这是一个相当大的安全缺陷,现在打开到0.0.0.0/0。

编辑

我想出了正在发生的问题。 显然,在指定Elastic Beanstalk应用程序的安全组时,您不能使用公共IP。 使用私有IP似乎工作得很好。 所以现在我只需要find一个方法来设置一个“静态”私人IP或类似的解决scheme。

编辑2

似乎使用公共DNS在EC2实例中使用它时返回私有IP。

我想出了正在发生的问题。 显然,在指定Elastic Beanstalk应用程序的安全组时,您不能使用公共IP。 使用私有IP似乎工作得很好。 似乎使用公共DNS在EC2实例中使用它时返回私有IP。 因此,我不是试图连接到弹性IP,现在我连接到公共DNS,这工作得很好。