从VPC中的Elastic Beanstalk实例访问RDS

时间:2016-08-12 09:41:59

标签: amazon-web-services elastic-beanstalk amazon-rds

我正在尝试从Elastic Beanstalk环境中的实例配置对RDS的访问。

RDS和EB环境属于同一个VPC。

复杂性是EB实例的安全组是在环境创建时动态生成的。我不确定如何配置RDS安全组以允许动态安全组。

我尝试使用CIDR代替VPC,但这似乎不起作用。

有推荐的方法吗?

2 个答案:

答案 0 :(得分:2)

默认情况下,ElasticBeanstalk将在“出站”选项卡的所有端口上创建与实例关联的安全组,其中包含0.0.0.0/0。如果您还没有改变,那么您需要做的就是将EC2实例所在的子网添加到RDS安全组(即3306上的10.10.10.0/24)。从实例尝试一个telnet,你应该很好。

或者,您可以使用EB - http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html

通过CloudFormation执行此操作

最后,有可能使用ebextensions来做到这一点,但这是我的最后手段,因为我已经在ebextensions上取得了成功,特别是在自动缩放的实例周围。

答案 1 :(得分:2)

EC2安全组不仅可用于允许传入和传出流量。它们还可用于纯粹识别EC2实例。

创建Elastic Beanstalk应用程序时,EB将始终为EC2实例创建安全组,但您也可以将另一个安全组添加到EC2实例。

使用这两条信息,您可以执行以下操作:

  1. 为您的EC2实例创建安全组。不要向安全组提供任何传入或传出规则。
  2. 通过向RDS安全组添加规​​则,允许此安全组访问您的RDS实例,从而允许您的安全组在端口3306上进行传入连接。
  3. 创建EB应用程序时,当您要求为EC2实例安全组时,请选择您的安全组。或者,您可以编辑已存在的EB应用程序配置,并将安全组添加到安全组列表中。这是一个以逗号分隔的列表。
  4. 完成此操作后,您的EC2实例应该可以访问您的RDS实例。

    另外,在RDS安全组的传入规则中为您的VPC使用CIDR也应该可以正常工作。