AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

示例:使用 Amazon RDS 启动 VPC 中的 Elastic Beanstalk

此部分演示了使用 NAT 网关在 VPC 中部署带有 Amazon RDS 的 Elastic Beanstalk 应用程序的任务。您的基础设施与下图类似。


      使用 Amazon RDS 的 Elastic Beanstalk 和 VPC 拓扑

注意

如果您之前从未和应用程序同时使用数据库实例,请在添加 VPC 配置至组合之前,尝试添加至测试环境连接到外部数据库实例

创建带有公有子网和私有子网的 VPC

您可使用 Amazon VPC 控制台创建 VPC。

创建 VPC

  1. 登录 Amazon VPC 控制台

  2. 在导航窗格中,选择 VPC Dashboard。然后选择 Create VPC

  3. 选择 VPC with Public and Private Subnets,然后选择 Select

     选择“VPC with Public and Private Subnets (带有公有子网和私有子网的 VPC)”,然后选择“Select (选择)”。
  4. 您的 Elastic Load Balancing 负载均衡器和您的 Amazon EC2 实例必须位于同一可用区中,这样它们才能相互通信。从每个 Availability Zone 列表中选择相同的可用区。

     为私有和公有子网选择同一个可用区。
  5. 为您的 NAT 网关选择弹性 IP 地址。

  6. 选择 Create VPC

    向导将开始创建 VPC、子网和 Internet 网关。它还将更新主路由表并创建自定义路由表。最后,向导将在公有子网中创建 NAT 网关。

    注意

    您可以选择在公有子网而非 NAT 网关中启动 NAT 实例。有关更多信息,请参阅 Amazon VPC 用户指南 中的场景 2:带有公有子网和私有子网的 VPC (NAT)

  7. 在成功创建 VPC 后,您会获得一个 VPC ID。在下一个步骤中,您需要用到此值。要查看您的 VPC ID,请在 Amazon VPC 控制台的左窗格中选择 Your VPCs

     Amazon VPC 控制台显示您的 VPC ID。

创建数据库子网组

VPC 的数据库子网组是可为后端 RDS 数据库实例指定的子网(通常为私有子网)集合。每个数据库子网组应至少包含给定 AWS 区域中每个可用区的一个子网。有关更多信息,请参阅在 VPC 中创建子网

创建数据库子网组

  1. 打开 Amazon RDS 控制台

  2. 在导航窗格中,选择子网组

  3. 选择 Create DB Subnet Group

  4. 选择名称,然后键入数据库子网组的名称。

  5. 选择描述,然后描述数据库子网组。

  6. 对于 VPC,选择您之前创建的 VPC 的 ID。

  7. 添加子网中,选择添加与此 VPC 相关的所有子网

    
            添加与您的 VPC 相关的所有子网。
  8. 完成后,选择 Create

    您的新数据库子网组显示在 Amazon RDS 控制台的子网组列表中。在此页面底部的详细信息窗格中,您可以选择它以查看详细信息,例如与此组关联的所有子网。

部署到 Elastic Beanstalk

设置 VPC 后,您可在其中创建您的环境并将应用程序部署到 Elastic Beanstalk。您可以通过 Elastic Beanstalk 控制台使用 AWS 工具包、AWS CLI、EB CLI 或 Elastic Beanstalk API 来执行此操作。如果您使用 Elastic Beanstalk 控制台,则只需上传 .war.zip 文件并在向导中选择 VPC 设置。Elastic Beanstalk 随后会在 VPC 中创建环境并部署应用程序。或者,您也可使用 AWS 工具包、AWS CLI、EB CLI 或 Elastic Beanstalk API 来部署应用程序。为此,您需要在配置文件中定义 VPC 选项设置并使用源捆绑部署此文件。本主题提供了这两种方法的说明。

使用 Elastic Beanstalk 控制台来部署

Elastic Beanstalk 控制台将逐步指导您在您的 VPC 内创建新环境。您需要提供 .war 文件 (对于 Java 应用程序) 或 .zip 文件 (对于所有其他应用程序)。在 Elastic Beanstalk 环境向导的 VPC Configuration (VPC 配置) 页面中,您必须做出以下选择:

VPC

选择您的 VPC。

VPC 安全组

选择您上面创建的实例安全组。

ELB 可见性

选择 External (如果您的负载均衡器应公开可用),或选择 Internal (如果负载均衡器应仅在您的 VPC 内可用)。

选择您的负载均衡器和 EC2 实例的子网。确保选择负载均衡器的公有子网和 Amazon EC2 实例的私有子网。默认情况下,VPC 创建向导将创建 10.0.0.0/24 形式的公有子网,并创建 10.0.1.0/24 形式的私有子网。

您可以通过在 Amazon VPC 控制台中选择 Subnets 来查看子网 ID。

 VPC 的子网 ID

使用 AWS Toolkit、EB CLI、EB CLI、AWS CLI 或 API 来部署

使用 AWS 工具包、EB CLI、AWS CLI 或 API 将应用程序部署到 Elastic Beanstalk 时,您可以在一个文件中指定 VPC 选项设置并使用源包部署该文件。参阅 使用配置文件 (.ebextensions) 进行高级环境自定义 了解更多信息。

更新选项设置时,至少需要指定以下内容:

  • VPCId – 包含 VPC 的 ID。

  • 子网 – 包含 Auto Scaling 组子网的 ID。在此示例中,这是私有子网的 ID。

  • ELBSubnets – 包含负载均衡器的子网 ID。在此示例中,这是公有子网的 ID。

  • SecurityGroups – 包含安全组的 ID。

  • DBSubnets – 包含数据库子网的 ID。

    注意

    使用数据库子网时,您需要在 VPC 中创建其他子网,以覆盖该 AWS 区域中的所有可用区。

另外,您还可以指定以下信息:

  • ELBScheme – 指定 internal 以在 VPC 内创建一个内部负载均衡器,确保无法从 VPC 外部访问您的 Elastic Beanstalk 应用程序。

以下是在 VPC 内部署 Elastic Beanstalk 应用程序时可以使用的选项设置的示例。有关 VPC 选项设置的更多信息(包括有关如何指定这些设置、默认值和有效值的示例),请参阅配置选项中的 aws:ec2:vpc 命名空间表。

option_settings: - namespace: aws:autoscaling:launchconfiguration option_name: EC2KeyName value: ec2keypair - namespace: aws:ec2:vpc option_name: VPCId value: vpc-170647c - namespace: aws:ec2:vpc option_name: Subnets value: subnet-4f195024 - namespace: aws:ec2:vpc option_name: ELBSubnets value: subnet-fe064f95 - namespace: aws:ec2:vpc option_name: DBSubnets value: subnet-fg148g78 - namespace: aws:autoscaling:launchconfiguration option_name: InstanceType value: m1.small - namespace: aws:autoscaling:launchconfiguration option_name: SecurityGroups value: sg-7f1ef110

注意

使用数据库子网时,确保 VPC 中的子网可以覆盖该 AWS 区域中的所有可用区。