

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

# 了解如何开始使用 Elastic Beanstalk
<a name="GettingStarted"></a>

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

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

使用 Elastic Beanstalk 不收取任何费用，但是标准费用 Amazon 适用于您在本教程中创建的资源，直到最后将其删除。总费用一般不到一美元。有关如何最大限度减少费用的信息，请参阅 [Amazon 免费套餐](https://www.amazonaws.cn/free)。

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

预计持续时间：**35-45 分钟**

![\[Web 服务器环境中 Elastic Beanstalk 应用程序的简化架构。\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/aeb-gs-simple.png)


## 您将构建的内容
<a name="GettingStarted.CreateApp"></a>

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

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

**环境**  
Elastic Bean *st* alk 环境是一组共同运行的资源，包括一个 A Amazon mazon EC2 实例。在您创建环境时，Elastic Beanstalk 会将必要的资源配置到您的账户中。 Amazon 

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

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

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

## 步骤 1：创建应用程序
<a name="GettingStarted.CreateApp.Create"></a>

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

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

![\[Elastic Beanstalk 控制台，箭头指向“创建应用程序”按钮。\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/aeb-gs-01-create-app.png)


**创建应用程序**



1. 打开 [Elastic Beanstalk 控制台](https://console.amazonaws.cn/elasticbeanstalk)。

1. 选择**创建应用程序**。

1. 对于 **Application name**（应用程序名称），输入 **getting-started-app**。

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

**配置环境**

1. 在**环境信息**中，对于**环境名称**，输入：**gs-app-web-env**。

1. 对于**平台**，选择 **PHP** 平台。

1. 对于**应用程序代码**和**预设**，接受默认值（*示例应用程序*和*单个实例*），然后选择**下一步**。

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

**创建或选择服务角色**

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

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

1. 对于**服务角色**，选择**创建角色**。

1. 在**可信实体类型**中选择 **Amazon 服务**。

1. 对于**使用案例**，选择 **Elastic Beanstalk – 环境**。

1. 选择**下一步**。

1. 确认**权限策略**包括以下内容，然后选择**下一步**：
   + `AWSElasticBeanstalkEnhancedHealth`
   + `AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy`

1. 选择**创建角色**。

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

**创建或选择 EC2 实例配置文件**

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

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

1. 选择**创建角色**。

1. 在**可信实体类型**中选择 **Amazon 服务**。

1. 对于**使用案例**，选择 **Elastic Beanstalk – 计算**。

1. 选择**下一步**。

1. 确认**权限策略**包括以下内容，然后选择**下一步**：
   + `AWSElasticBeanstalkWebTier`
   + `AWSElasticBeanstalkWorkerTier`
   + `AWSElasticBeanstalkMulticontainerDocker`

1. 选择**创建角色**。

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

**完成应用程序的配置和创建**

1. 跳过 **EC2 密钥对**。

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

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

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

1. 在显示选择摘要的**审核**页面上，选择**提交**。

**恭喜您！**  
您已经创建了应用程序并配置了环境！现在，您需要等待资源部署。

## 步骤 2：部署应用程序
<a name="GettingStarted.CreateApp.AWSresources"></a>

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

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

![\[部署过程示意图\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/process-external-input.png)


当您创建示例应用程序时，Elastic Beanstalk 会创建以下资源：
+ **EC2 实例**：配置用于在您所选平台上运行 Web 应用程序的 Amazon EC2 虚拟机。

  各平台运行一组不同的软件、配置文件和脚本以支持特定的语言版本、框架、Web 容器或其组合。大多数平台使用 Apache 或 nginx 作为反向代理将 Web 流量转发至 Web 应用程序、提供静态资产以及生成访问和错误日志。您可以连接到 Amazon EC2 实例来查看配置和日志。
+ **实例安全组**：系统将创建 Amazon EC2 安全组以允许端口 80 上的传入请求，这样负载均衡器上的入站流量就可以到达您的 Web 应用程序。
+ **Amazon S3 存储桶**：源代码、日志和其他构件的存储位置。
+ **Amazon CloudWatch CloudWatch 警**报 — 创建两个警报来监控您的实例上的负载并根据需要向上或向下扩展。
+ **Amazon CloudFormation 堆栈** — Elastic Amazon CloudFormation Beanstalk 用于在您的环境中部署资源并进行配置更改。您可通过 [Amazon CloudFormation 控制台](https://console.amazonaws.cn/cloudformation)查看资源定义模板。
+  **域名**：采用以下形式将流量路由到您 Web 应用程序的域名：`subdomain.region.eb.amazonaws.com.cn`。

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

![\[Web 服务器环境中的 Elastic Beanstalk 应用程序架构概览。\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/aeb-overview-web-only.png)


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

**您的应用程序已准备就绪！**  
看到应用程序运行状况更改为 **Ok** 后，您可以浏览到您 Web 应用程序的网站。

## 步骤 3：探索 Elastic Beanstalk 环境
<a name="GettingStarted.Explore"></a>

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

**查看环境和应用程序**

1. 打开 [Elastic Beanstalk](https://console.amazonaws.cn/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 Amazon Web Services 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 选择**转到环境**即可浏览应用程序！

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

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

![\[Elastic Beanstalk 示例应用程序的“祝贺”画面。\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/aeb-gs-launched-app.png)


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

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

![\[显示已启动环境 Elastic Beanstalk 控制台。\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/aeb-gs-console-environment.png)


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

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

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

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

不同选项卡包含有关您环境的不同详细信息：
+ **事件**：可查看来自 Elastic Beanstalk 服务和其他服务有关您环境中资源的信息和错误消息列表，此列表会持续更新。
+ **运行状况**：可查看有关运行您应用程序的 Amazon EC2 实例的状态和详细运行状况信息。
+ **Logs**（日志）– 从您的环境中的 Amazon EC2 检索和下载日志。您可以检索完整的日志或最近的活动。检索到的日志在 15 分钟内可用。
+ **监控**：可查看环境的统计数据（如平均延迟和 CPU 使用率）。
+ **警报**：可查看和编辑为环境指标配置的警报。
+ **托管更新**：可查看有关即将到来和已完成的托管平台更新以及实例替换的信息。
+ **标签**：可查看和编辑应用于您环境的键值对。

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

### 使用日志排查问题
<a name="GettingStarted.Troubleshooting"></a>

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

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

**请求日志（Elastic Beanstalk 控制台）**

1. 在 Elastic Beanstalk 控制台中，导航到您的环境。

1. 选择**日志**选项卡或左侧导航窗格，然后选择**请求日志**。

1. 选择**最后 100 行**。

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

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

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

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

1. 导航到 IAM 控制台。

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

1. 选择**添加权限**，然后选择**附加策略**。

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

**通过会话管理器连接到 Amazon EC2 实例**

1. 导航到 Amazon EC2 控制台。

1. 选择**实例**，然后选择您的 `gs-app-web-env` 实例。

1. 选择**连接**，然后选择**会话管理器**。

1. 选择**连接**。

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

1. 运行 **bash** 命令。

1. 运行 **cd /var/log/nginx** 命令。

1. 运行 **tail -f access.log** 命令。

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

**祝贺您，您已连接成功！**  
每次刷新页面时，您都应该看到实例中的日志条目会更新。

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

## 步骤 4：更新应用程序
<a name="GettingStarted.DeployApp"></a>

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

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

![\[环境更新示意图。\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/redeploy-491854279.jpg)


**更新您的应用程序版本**

1. 下载下列 PHP 示例应用程序：

   **PHP**：[php-v2.zip](samples/php-v2.zip)

1. 打开 [Elastic Beanstalk](https://console.amazonaws.cn/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 Amazon Web Services 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在环境概述页面上，选择 **Upload and deploy**（上传和部署）。

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

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

1. 选择**部署**。

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

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

**更新成功！**  
刷新浏览器后，您应该会看到更新后的“v2”消息。  
如果您想自己编辑源代码，请解压缩、编辑，然后重新压缩源捆绑包。在 macOS 上，请进入您的 php 目录并使用以下命令（添加 -X 参数，排除额外文件属性）：  
`zip -X -r ../php-v2.zip .`

## 步骤 5：扩展您的应用程序
<a name="GettingStarted.EditConfig"></a>

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

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

![\[环境增长示意图。\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/growth_532477598.jpg)


### 增加容量设置
<a name="GettingStarted.EditConfig.Edit"></a>

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

**更改环境的容量**

1. 打开 [Elastic Beanstalk](https://console.amazonaws.cn/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 Amazon Web Services 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在 **Instance traffic and scaling**（实例流量和扩展）配置类别中，选择 **Edit**（编辑）。

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

1. 在**实例**行上，将**最小**更改为 **2**，然后将**最大**更改为 **4**。

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

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

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

### 验证容量增加结果
<a name="GettingStarted.EditConfig.Verify"></a>

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

**验证增加的容量**

1. 从选项卡列表或左侧导航窗格中选择**运行状况**。

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

**扩展成功！**  
现在您的环境拥有两个 Amazon EC2 实例，容量已实现翻倍，而整个过程仅耗时数分钟。

## 清理 Elastic Beanstalk 环境
<a name="GettingStarted.Cleanup"></a>

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

![\[资源删除示意图。\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/aeb-gs-cleanup_514078822.jpg)


**删除应用程序及所有关联资源**

1. 删除所有应用程序版本。

   1. 打开 [Elastic Beanstalk](https://console.amazonaws.cn/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 Amazon Web Services 区域

   1. 在导航窗格中，选择**应用程序**，然后选择 **getting-started-app**。

   1. 在导航窗格中，找到应用程序的名称，然后选择 **Application versions**（应用程序版本）。

   1. 在 **Application versions (应用程序版本)** 页面上，选择要删除的所有应用程序版本。

   1. 选择**操作**，然后选择**删除**。

   1. 启用 **Delete versions from Amazon S3 (从 Amazon S3 删除版本)**。

   1. 选择 **Delete (删除)**，然后选择 **Done (完成)**。

1. 终止环境。

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

   1. 选择 **Actions**（操作），然后选择 **Terminate Environment**（终止环境）。

   1. **键入环境名称确认要终止 **GettingStartedApp-env**，然后选择 Terminate。**

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

   1. 在导航窗格中，选择**getting-started-app**。

   1. 选择 **Actions （操作)**，然后选择 **Delete application （删除应用程序)**。

   1. 键入应用程序名称确认要删除 **getting-started-app**，然后选择**删除**。

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

## 后续步骤
<a name="GettingStarted.NextSteps"></a>

要了解如何使用 **eb** 命令行工具自动将您的代码部署到 Elastic Beanstalk，建议您继续阅读[QuickStart: 将 PHP 应用程序部署到 Elastic Beanstalk](php-quickstart.md)。

接下来，您可能想要知道如何设置 HTTPS 连接，请参阅[为 Elastic Beanstalk 环境配置 HTTPS](configuring-https.md)。