了解如何开始使用 Elastic Beanstalk - AWS Elastic Beanstalk

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

了解如何开始使用 Elastic Beanstalk

使用 Elastic Beanstalk,您可以部署、监控和扩展 Web 应用程序和服务。通常,您会在本地开发代码,然后将其部署到 Amazon EC2 服务器实例。这些实例(也称为环境)在可通过 AWS 控制台或命令行升级的平台上运行。

首先,建议您直接在控制台部署预先构建的示例应用程序。然后,您可在QuickStart: 将 PHP 应用程序部署到 Elastic Beanstalk中,了解到如何在本地开发,然后通过命令行进行部署。

使用 Elastic Beanstalk 不会产生任何费用,但是您在学习本教程过程中创建的 AWS 资源将收取标准费用,直至您最终将其删除。总费用一般不到一美元。有关如何最大限度减少费用的信息,请参阅 AWS 免费套餐

完成本教程后,您将了解在 Amazon EC2 实例上运行的环境中创建、配置、部署、更新和监控 Elastic Beanstalk 应用程序的基础知识。

预计持续时间:35-45 分钟

Web 服务器环境中 Elastic Beanstalk 应用程序的简化架构。

您将构建的内容

您的第一个 Elastic Beanstalk 应用程序将由单个 Amazon EC2 环境组成,该环境在 PHP 托管平台上运行 PHP 示例。

Elastic Beanstalk 应用程序

Elastic Beanstalk 应用程序是 Elastic Beanstalk 组件的容器,其中包含您的应用程序代码在 Elastic Beanstalk 提供和管理的平台上运行的环境,或者在您提供的自定义容器中运行的环境。

环境

Elastic Beanstalk 环境是一组共同运行的 AWS 资源,包括一个 Amazon EC2 实例。您创建环境后,Elastic Beanstalk 会在您的 AWS 账户中预置必要的资源。

平台

平台是操作系统、编程语言运行时、Web 服务器、应用程序服务器和其他 Elastic Beanstalk 组件的组合。Elastic Beanstalk 提供托管平台,您也可以在容器中提供自己的平台。

Elastic Beanstalk 支持针对不同的编程语言、应用程序服务器以及 Docker 容器的平台。当您创建环境时,必须选择平台。您可以升级平台,但不能更改环境平台。

切换平台

如果需要更改编程语言,则必须在不同的平台上创建新环境并切换到该新环境。

步骤 1:创建应用程序

要创建您的示例应用程序,您将使用 Create application(创建应用程序)控制台向导。它创建 Elastic Beanstalk 应用程序并在其中启动一个环境。

提醒:环境是运行应用程序代码所需的 AWS 资源集合。

Elastic Beanstalk 控制台,箭头指向“创建应用程序”按钮。
创建应用程序

  1. 打开 Elastic Beanstalk 控制台

  2. 选择创建应用程序

  3. 对于 Application name(应用程序名称),输入 getting-started-app

控制台提供用于创建应用程序和配置环境的六步流程。在本快速入门中,您只需要专注于前两个步骤,然后略过剩余步骤,直接查看和创建应用程序和环境。

配置环境
  1. 环境信息中,对于环境名称,输入:gs-app-web-env

  2. 对于平台,选择 PHP 平台。

  3. 对于应用程序代码预设,接受默认值(示例应用程序单个实例),然后选择下一步

配置服务访问权限

接下来,您需要两个角色。服务角色允许 Elastic Beanstalk 监控您的 EC2 实例并升级您的环境平台。EC2 实例配置文件角色允许执行诸如写入日志和与其他服务交互之类的任务。

创建或选择服务角色
  1. 如果您之前创建了服务角色并想选择现有的角色,请从服务角色下拉列表中选择该值,然后跳过创建服务角色的其余步骤。

  2. 如果未列出服务角色的任何值,或者您想创建一个新的值,请继续执行后续步骤。

  3. 对于服务角色,选择创建角色

  4. 可信实体类型中选择 AWS 服务

  5. 对于使用案例,选择 Elastic Beanstalk – 环境

  6. 选择下一步

  7. 确认权限策略包括以下内容,然后选择下一步

    • AWSElasticBeanstalkEnhancedHealth

    • AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy

  8. 选择创建角色

  9. 返回到配置服务访问权限选项卡,刷新列表,然后选择新创建的服务角色。

创建或选择 EC2 实例配置文件
  1. 如果您之前创建了 EC2 实例配置文件并想选择现有的 EC2 实例配置文件,请从 EC2 实例配置文件下拉列表中选择该值,然后跳过创建 EC2 实例配置文件的其余步骤。

  2. 如果未列出 EC2 实例配置文件的任何值,或者您想创建一个新的值,请继续执行后续步骤。

  3. 选择创建角色

  4. 可信实体类型中选择 AWS 服务

  5. 对于使用案例,选择 Elastic Beanstalk – 计算

  6. 选择下一步

  7. 确认权限策略包括以下内容,然后选择下一步

    • AWSElasticBeanstalkWebTier

    • AWSElasticBeanstalkWorkerTier

    • AWSElasticBeanstalkMulticontainerDocker

  8. 选择创建角色

  9. 返回配置服务访问权限选项卡,刷新列表,然后选择新创建的 EC2 实例配置文件。

完成应用程序的配置和创建
  1. 跳过 EC2 密钥对

    我们将向您展示通过控制台连接 Amazon EC2 实例的其他方法。

  2. 选择跳至审核可跳过几个可选步骤。

    可选步骤:联网、数据库、扩展参数、更新的高级配置、监控和日志记录。

  3. 在显示选择摘要的审核页面上,选择提交

恭喜您!

您已经创建了应用程序并配置了环境!现在,您需要等待资源部署。

步骤 2:部署应用程序

您创建应用程序后,Elastic Beanstalk 会为您设置环境。您只需要耐心等待即可。

初始部署最多可能需要 5 分钟创建资源。更新只需要将更改部署到您的堆栈中,因此所用时间会更短一些。

部署过程示意图

当您创建示例应用程序时,Elastic Beanstalk 会创建以下资源:

  • EC2 实例:配置用于在您所选平台上运行 Web 应用程序的 Amazon EC2 虚拟机。

    各平台运行一组不同的软件、配置文件和脚本以支持特定的语言版本、框架、Web 容器或其组合。大多数平台使用 Apache 或 nginx 作为反向代理将 Web 流量转发至 Web 应用程序、提供静态资产以及生成访问和错误日志。您可以连接到 Amazon EC2 实例来查看配置和日志。

  • 实例安全组:系统将创建 Amazon EC2 安全组以允许端口 80 上的传入请求,这样负载均衡器上的入站流量就可以到达您的 Web 应用程序。

  • Amazon S3 存储桶:源代码、日志和其他构件的存储位置。

  • Amazon CloudWatch 警报:系统创建的两个 CloudWatch 警报,用于监控您实例的负载并根据需要进行扩展或缩减。

  • CloudFormation 堆栈:Elastic Beanstalk 使用 CloudFormation 启动您环境中的资源并进行配置更改。您可通过 CloudFormation 控制台查看资源定义模板。

  • 域名:采用以下形式将流量路由到您 Web 应用程序的域名:subdomain.region.elasticbeanstalk.com

Elastic Beanstalk 会创建应用程序、启动环境、创建应用程序版本,然后将您的代码部署到环境中。在此过程中,控制台会跟踪进度并在“事件”选项卡中显示事件状态。

Web 服务器环境中的 Elastic Beanstalk 应用程序架构概览。

部署完所有资源后,环境的运行状况应更改为 Ok

您的应用程序已准备就绪!

看到应用程序运行状况更改为 Ok 后,您可以浏览到您 Web 应用程序的网站。

步骤 3:探索 Elastic Beanstalk 环境

您将从控制台的环境概览页面开始探索已部署的应用程序环境。

查看环境和应用程序
  1. 打开 Elastic Beanstalk 控制台,然后在 Regions(区域)列表中选择您的 AWS 区域。

  2. 在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。

  3. 选择转到环境即可浏览应用程序!

    (您也可以选择域名下列出的网址链接来浏览您的应用程序。)

    连接将是 HTTP(而不是 HTTPS),因此您可能会在浏览器中看到一条警告消息。

Elastic Beanstalk 示例应用程序的“祝贺”画面。

回到 Elastic Beanstalk 控制台,上半部分显示环境概览,其中包含有关环境的顶层信息,包括名称、域 URL、当前运行状态、运行版本以及应用程序运行的平台。要对当前部署的应用程序进行故障排除,运行版本和平台是必不可少的信息。

在概览窗格下面,您会看到事件选项卡,其中显示最近的环境活动。

显示已启动环境 Elastic Beanstalk 控制台。

当 Elastic Beanstalk 创建您的 AWS 资源并启动您的应用程序时,环境将处于 Pending 状态。有关启动事件的状态消息会不断地添加到事件列表中。

环境的是您所部署 Web 应用程序的 URL。在左侧导航窗格中,转到环境还会将您带到您的域。同样,左侧导航窗格也包含与各个选项卡相对应的链接。

请注意左侧导航窗格中的配置链接,该链接会显示环境配置选项值摘要(按类别分组)。

环境配置设置

请注意左侧导航窗格中的配置链接。您可以在此查看和编辑详细的环境设置,例如服务角色、联网、数据库、扩展、托管平台更新、内存、运行状况监控、滚动部署、日志记录等!

不同选项卡包含有关您环境的不同详细信息:

  • 事件:可查看来自 Elastic Beanstalk 服务和其他服务有关您环境中资源的信息和错误消息列表,此列表会持续更新。

  • 运行状况:可查看有关运行您应用程序的 Amazon EC2 实例的状态和详细运行状况信息。

  • Logs(日志)– 从您的环境中的 Amazon EC2 检索和下载日志。您可以检索完整的日志或最近的活动。检索到的日志在 15 分钟内可用。

  • 监控:可查看环境的统计数据(如平均延迟和 CPU 使用率)。

  • 警报:可查看和编辑为环境指标配置的警报。

  • 托管更新:可查看有关即将到来和已完成的托管平台更新以及实例替换的信息。

  • 标签:可查看和编辑应用于您环境的键值对。

注意

控制台导航窗格中的链接会显示相应的选项卡。

使用日志排查问题

要对意外行为进行故障排除或调试部署,您可能需要查看环境中的日志。

您可以在 Elastic Beanstalk 控制台的日志选项卡下,请求所有日志文件的最后 100 行内容。您也可以直接连接到 Amazon EC2 实例,实时跟踪日志动态。

请求日志(Elastic Beanstalk 控制台)
  1. 在 Elastic Beanstalk 控制台中,导航到您的环境。

  2. 选择日志选项卡或左侧导航窗格,然后选择请求日志

  3. 选择最后 100 行

  4. 创建日志后,选择下载链接即可在浏览器中查看日志。

在日志中,找到日志并记下 nginx 访问日志的目录。

添加策略,启用与 Amazon EC2 的连接

在连接之前,您必须添加一个允许通过会话管理器连接到 Amazon EC2 的策略。

  1. 导航到 IAM 控制台。

  2. 查找并选择 aws-elasticbeanstalk-ec2-role 角色。

  3. 选择添加权限,然后选择附加策略

  4. 搜索以 AmazonSSMManagedEC2Instance 文本开头默认策略,然后将其添加到角色中。

通过会话管理器连接到 Amazon EC2 实例
  1. 导航到 Amazon EC2 控制台。

  2. 选择实例,然后选择您的 gs-app-web-env 实例。

  3. 选择连接,然后选择会话管理器

  4. 选择连接

连接到实例后,启动 bash shell 并追踪日志动态:

  1. 运行命令。bash

  2. 运行命令。cd /var/log/nginx

  3. 运行命令。tail -f access.log

  4. 在浏览器中,转到应用程序域 URL。刷新。

祝贺您,您已连接成功!

每次刷新页面时,您都应该看到实例中的日志条目会更新。

“连接”按钮不起作用?

如果“连接”按钮不可用,请返回 IAM 并确认您已向该角色添加了必要的策略。

步骤 4:更新应用程序

最后,您还需要更新您的应用程序。您可以随时部署新版本,前提是在环境中没有进行其他更新操作。

您开始使用本教程的应用程序版本称为 Sample Application (示例应用程序)

环境更新示意图。
更新您的应用程序版本
  1. 下载下列 PHP 示例应用程序:

    PHPphp-v2.zip

  2. 打开 Elastic Beanstalk 控制台,然后在 Regions(区域)列表中选择您的 AWS 区域。

  3. 在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。

  4. 在环境概述页面上,选择 Upload and deploy(上传和部署)。

  5. 选择选择文件,然后上传您已下载的示例应用程序源包。

    控制台会自动填入一个新的唯一版本标签,该标签末尾的数字会自动递增。如果您已旋转自己的版本标签,请确保它是唯一的。

  6. 选择部署

当 Elastic Beanstalk 将文件部署到 Amazon EC2 实例时,您可以在环境概述页面上查看部署状态。应用程序版本更新时,环境运行状况状态为灰色。部署完成时,Elastic Beanstalk 会执行应用程序运行状况检查。当应用程序对运行状况检查进行响应时,它被视为运行状况良好,状态会变回绿色。环境概述显示新的 Running Version (运行版本) - 您作为 Version label (版本标签) 提供的名称。

Elastic Beanstalk 也会上传您的新应用程序版本并将其添加到应用程序版本表。要查看此表,请选择导航窗格上的 getting-started-app 下的 Application versions(应用程序版本)。

更新成功!

刷新浏览器后,您应该会看到更新后的“v2”消息。

如果您想自己编辑源代码,请解压缩、编辑,然后重新压缩源捆绑包。在 macOS 上,请进入您的 php 目录并使用以下命令(添加 -X 参数,排除额外文件属性):

zip -X -r ../php-v2.zip .

步骤 5:扩展您的应用程序

您可以配置环境,使其更适合您的应用程序。例如,如果您的应用程序需要进行大量计算,那么您可以更改正在运行您的应用程序的 Amazon Elastic Compute Cloud (Amazon EC2) 实例类型。为了应用配置更改,Elastic Beanstalk 将执行环境更新。

有一些配置更改很简单,而且会即刻生效。有些更改要求删除并重新创建 AWS 资源,这可能要花数分钟时间。更改配置设置时,Elastic Beanstalk 会向您发出有关潜在应用程序停机的警告。

环境增长示意图。

增加容量设置

在此配置更改示例中,您将编辑环境的容量设置。您配置负载均衡的可扩展环境(该环境在其 Auto Scaling 组中有 2 到 4 个 Amazon EC2 实例),然后验证是否已发生更改。Elastic Beanstalk 会创建一个额外的 Amazon EC2 实例,并将其添加到它最初创建的单个实例中。然后,Elastic Beanstalk 将这两个实例与环境的负载均衡器关联。这样,可以提高应用程序的响应速度,并提高其可用性。

更改环境的容量
  1. 打开 Elastic Beanstalk 控制台,然后在 Regions(区域)列表中选择您的 AWS 区域。

  2. 在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。

  3. 在导航窗格中,选择 Configuration(配置)。

  4. Instance traffic and scaling(实例流量和扩展)配置类别中,选择 Edit(编辑)。

  5. 折叠 Instances(实例)部分,这样您就可以更轻松地看到 Capacity(容量)部分。在 Auto Scaling group(自动扩缩组)下方,将 Environment type(环境类型)更改为 Load balanced(负载均衡)。

  6. 实例行上,将最小更改为 2,然后将最大更改为 4

  7. 要保存更改,请选择页面底部的 Apply(应用)。

    如果显示警告信息,告诉您此更新将替换您当前的所有实例。选择确认

环境更新可能需要几分钟的时间。您应该会在事件列表中看到数个更新。注意是否有已成功将新配置部署到环境事件。

验证容量增加结果

环境更新完成且环境准备就绪后,Elastic Beanstalk 会自动启动第二个实例,以满足您新的最低容量设置。

验证增加的容量
  1. 从选项卡列表或左侧导航窗格中选择运行状况

  2. 查看增强型实例运行状况部分。

扩展成功!

现在您的环境拥有两个 Amazon EC2 实例,容量已实现翻倍,而整个过程仅耗时数分钟。

清理 Elastic Beanstalk 环境

为确保您不用为未使用的任何服务付费,请删除所有应用程序版本并终止环境,这会删除环境为您创建的 AWS 资源。

资源删除示意图。
删除应用程序及所有关联资源
  1. 删除所有应用程序版本。

    1. 打开 Elastic Beanstalk 控制台,然后在 Regions(区域)列表中选择您的 AWS 区域。

    2. 在导航窗格中,选择 Applications (应用程序),然后选择 getting-started-app

    3. 在导航窗格中,找到应用程序的名称,然后选择 Application versions(应用程序版本)。

    4. Application versions (应用程序版本) 页面上,选择要删除的所有应用程序版本。

    5. 选择操作,然后选择删除

    6. 启用 Delete versions from Amazon S3 (从 Amazon S3 删除版本)

    7. 选择 Delete (删除),然后选择 Done (完成)

  2. 终止环境。

    1. 在导航窗格中,选择 getting-started-app,然后选择环境列表中的 GettingStartedApp-env

    2. 选择 Actions(操作),然后选择 Terminate Environment(终止环境)。

    3. 通过键入环境名称来确认您要终止 GettingStartedApp-env,然后选择终止

  3. 删除 getting-started-app 应用程序。

    1. 在导航窗格中,选择 getting-started-app

    2. 选择 Actions (操作),然后选择 Delete application (删除应用程序)

    3. 通过输入应用程序名称确认要删除 Getting-starting-app,然后选择删除

恭喜您!

您已成功将示例应用程序部署到 AWS 云、上传了新版本、修改了其配置以添加第二个自动扩缩实例,并清理了 AWS 资源!

后续步骤

要了解如何使用 eb 命令行工具自动将您的代码部署到 Elastic Beanstalk,建议您继续阅读QuickStart: 将 PHP 应用程序部署到 Elastic Beanstalk

接下来,您可能想要知道如何设置 HTTPS 连接,请参阅为 Elastic Beanstalk 环境配置 HTTPS