VPC 中的 Elastic Beanstalk

Elastic Beanstalk in VPC

我在 AWS Elastic Beanstalk 中创建并部署了我的 Django 应用程序。它通过 EBS 控制台连接到 RDS 中的 Postgres 数据库。

当我在 EBS 中单击 configuration -> network 时,我看到:“This environment is not part of a VPC.

如何使其成为 VPC 的一部分?谢谢!

注意:对此非常陌生;)

您必须重新创建 Elastic Beanstalk 环境并在创建过程中选择 VPC。无法将现有环境移动到 VPC 中。

但是,除非您有权访问 EC2-Classic, the EC2 servers that were launched are already be in a VPC. They are just in the default VPC。但就 Elastic Beanstalk 而言,它似乎忽略了这一点。

我不确定是否有专用于 VPC 环境的功能。我的建议是尝试使用您当前的环境,如果您稍后出于其他原因碰巧重新创建环境,那么您可以尝试选择一个 VPC,看看它是否提供任何新东西。

正如@stefansundin 已经解释的那样,您不能将现有的 EB 移动到自定义 VPC 中。你必须创建一个新的。

这些是需要考虑的一般步骤

  1. 创建一个 自定义 VPC,其中包含 public 和私有子网 ,如文档中所述:VPC with public and private subnets (NAT)。私有子网中的实例和 RDS 需要 NAT 才能与互联网通信,但不允许入站互联网流量。这确保您的实例和 rds 无法从外部访问。

  2. 创建新的 RDS,外部 到 EB。这是一个很好的做法,否则 RDS 的生命周期与 EB 环境相关联。起点是以下 AWS 文档:Launching and connecting to an external Amazon RDS instance in a default VPC

  3. 创建新的 EB 环境 并确保自定义其设置以使用 VPC。使用环境变量将 RDS 端点传递给 EB 实例。根据您希望如何处理 RDS 密码,选项很少,从使用环境变量(低安全性)到 SSM Parameter Store (free) or AWS Secrets Manager(非免费)。

对于 AWS 新手来说,正确设置这一切可能很困难。但是只要有耐心和练习,它是可以做到的。因此,我建议 从默认 VPC 开始,就像您现在所做的那样。然后,一旦您熟悉了如何使用外部 RDS,请考虑按照所述创建自定义 VPC。