学习如何开始使用 Elastic Beanstalk - AWS Elastic Beanstalk

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

学习如何开始使用 Elastic Beanstalk

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

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

使用 Elastic Beanstalk 不收取任何费用,但是标准费用 AWS 适用于您在本教程中创建的资源,直到最后将其删除。总费用通常不到一美元。 有关如何最大限度减少费用的信息,请参阅 AWS 免费套餐

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

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

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

你要建造什么

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

Elastic Beanstalk 应用程序

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

环境

Elastic Bean st alk 环境是一组一起运行的资源, AWS 包括一个亚马逊实例。 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. 可信实体类型中选择 AWS 服务

  3. 对于用例,请选择 Elastic Beanstalk — 环境

  4. 选择下一步

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

    • AWSElasticBeanstalkEnhancedHealth

    • AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy

  6. 选择创建角色

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

创建 EC2 实例配置文件
  1. 选择创建角色

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

  3. 对于用例,请选择 Elastic Beanstalk — 计算

  4. 选择下一步

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

    • AWSElasticBeanstalkWebTier

    • AWSElasticBeanstalkWorkerTier

    • AWSElasticBeanstalkMulticontainerDocker

  6. 选择创建角色

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

完成应用程序的配置和创建
  1. 跳过 k EC2 ey pair

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

  2. 选择 “跳至查看” 可移至几个可选步骤。

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

  3. 在显示您的选择摘要的 “查看” 页面上,选择 “提交”。

恭喜您!

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

第 2 步-部署您的应用程序

当你创建应用程序时,Elastic Beanstalk 会为你设置环境。你只需要坐下来等待。

初始部署最多可能需要五分钟才能创建资源。更新将花费更少的时间,因为只有更改才会部署到您的堆栈中。

代表部署过程的说明性图像

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

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

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

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

  • Amazon S3 存储桶 — 您的源代码、日志和其他项目的存储位置。

  • Amazon CloudWatch CloudWatch 警报 — 创建两个警报来监控您的实例上的负载并根据需要向上或向下扩展。

  • AWS CloudFormation 堆栈 — Elastic AWS CloudFormation Beanstalk 用于在您的环境中部署资源并进行配置更改。您可以在AWS CloudFormation 控制台中查看资源定义模板。

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

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

带有 Web 服务器环境的 Elastic Beanstalk 应用程序架构概述。

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

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

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

第 3 步——探索 Elastic Beanstalk 环境

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

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

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

  3. 选择 “转到环境” 浏览您的应用程序!

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

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

来自 Elastic Beanstalk 示例应用程序的 “恭喜” 屏幕的说明性示例。

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

在概述窗格之后,您将在 “事件” 选项卡中看到最近的环境活动

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

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

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

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

环境配置设置

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

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

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

  • He@@ alth — 查看运行您的应用程序的 Amazon EC2 实例的状态和详细运行状况信息。

  • 日志-从您环境 EC2 中的 Amazon 检索和下载日志。您可以检索完整的日志或最近的活动。检索到的日志在 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,然后将其添加到角色中。

使用会话管理器连接到您的 EC2 Amazon
  1. 导航至 Amazon EC2 控制台。

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

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

  4. 选择连接

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

  1. 运行 bash 命令。

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

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

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

恭喜,您已连接!

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

Connect 按钮不起作用?

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

第 4 步-更新您的应用程序

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

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

暗示更新环境的说明性图片。
更新您的应用程序版本
  1. 下载以下 PHP 示例应用程序:

    PHPphp-v2.zip

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

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

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

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

    控制台会自动在版本标签中填入新的唯一标签,并自动递增尾随整数。如果您选择自己的版本标签,请确保它是唯一的。

  6. 选择部署

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

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

更新成功!

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

如果您想自己编辑源代码,请解压缩、编辑,然后重新压缩源包。在 macOS 上,在 php 目录中使用以下带有-X 的命令来排除额外的文件属性:

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

第 5 步-扩展您的应用程序

您可以配置环境,使其更适合您的应用程序。例如,如果您有一个计算密集型应用程序,则可以更改运行您的应用程序的亚马逊弹性计算云 (Amazon EC2) 实例的类型。为了应用配置更改,Elastic Beanstalk 将执行环境更新。

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

说明性图片显示了您的环境的发展。

增加容量设置

在此配置更改示例中,您将编辑环境的容量设置。您配置一个负载均衡、可扩展的环境,该环境的 Auto Scaling 组中有两到四个 Amazon EC2 实例,然后验证是否发生了更改。Elastic Beanstalk 在最初创建的单个实例的基础上 EC2 又创建了一个亚马逊实例。然后,Elastic Beanstalk 将这两个实例与环境的负载均衡器关联。这样,可以提高应用程序的响应速度,并提高其可用性。

更改环境的容量
  1. 打开 Elastic Beanstalk 控制台,然后在 “区域” 列表中,选择您的。 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. 从选项卡列表或左侧导航窗格中选择 Heal th。

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

你刚刚扩大了规模!

有了两个 Amazon EC2 实例,您的环境容量就翻了一番,只用了几分钟。

清理你的 Elastic Beanstalk 环境

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

显示删除资源的说明性图片。
删除应用程序及所有关联资源
  1. 删除所有应用程序版本。

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

    2. 在导航窗格中,选择应用程序,然后选择 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-started-app,然后选择删除

恭喜您!

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

后续步骤

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

接下来,您可能需要查看如何设置 HTTPS 连接,请参阅为 Elastic Beanstalk 环境配置 HTTPS