

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

# 将传统的 ASP.NET 应用程序部署到 Elastic Beanstalk
<a name="deployment-beanstalk-traditional"></a>

本部分介绍如何使用**发布到 Elastic Beanstalk** 向导（作为 Toolkit for Visual Studio 的一部分提供）通过 Elastic Beanstalk 部署应用程序。要进行练习，您可使用 Visual Studio 中内置的 Web 应用程序初学者项目的实例，也可使用您自己的项目。

**注意**  
此向导还支持部署 ASP.NET 内核应用程序。有关 ASP.NET Core 的信息，请参阅《[AWS .NET deployment tool](https://aws.github.io/aws-dotnet-deploy/)》指南和更新的[部署到 AWS](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/deployment-chapt.html) 目录。

**注意**  
在使用**发布到 Elastic Beanstalk** 向导之前，必须先下载并安装 [Web Deploy](http://www.microsoft.com/en-us/download/details.aspx?id=39277)。此向导依赖 Web Deploy 将 Web 应用程序和网站部署到 Internet Information Services (IIS) Web 服务器。

## 创建示例 Web 应用程序初学者项目
<a name="to-create-a-sample-web-application-starter-project"></a>

1. 在 Visual Studio 中，从 **File (文件)** 菜单中，选择 **New (新建)**，然后选择 **Project (项目)**。

1. 在 **New Project (新建项目)** 对话框的导航窗格中，依次展开 **Installed (已安装)**、**Templates (模板)** 和 **Visual C\$1**，然后选择 **Web**。

1. 在 Web 项目模板的列表中，选择其说明中包含 `Web` 和 `Application` 字样的任何模板。在本示例中，请选择 **ASP.NET Web Forms Application (ASP.NET Web 表单应用程序)**。  
![\[New Project window showing ASP.NET web application templates for Visual C# in .NET Framework 4.5.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-new-web-project-console.png)

1. 在 **Name (名称)** 框中，键入 `AEBWebAppDemo`。

1. 在 **Location (位置)** 框中，键入您的开发计算机上的解决方案文件夹的路径或选择 **Browse (浏览)**，然后浏览并选择解决方案文件夹，再选择 **Select Folder (选择文件夹)**。

1. 确认选中了 **Create directory for solution (为解决方案创建目录)** 框。在 **Solution (解决方案)** 下拉列表中，确认选择了 **Create new solution (创建新解决方案)**，然后选择 **OK (确定)**。Visual Studio 将基于 ASP.NET Web 表单应用程序项目模板创建解决方案和项目。随后，Visual Studio 将显示解决方案资源管理器，其中将显示新的解决方案和项目。  
![\[Solution Explorer window showing project structure with folders and files for a web application.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-web-app-solution-explorer-console.png)

## 使用 Publish to Elastic Beanstalk 向导部署应用程序
<a name="to-deploy-an-application-by-using-the-publish-to-elastic-beanstalk-wizard"></a>

1. 在解决方案资源管理器中，打开您在上一节中创建的**AEBWebAppDemo**项目的项目文件夹的上下文（右键单击）菜单，或者打开您自己的应用程序的项目文件夹的快捷菜单，然后选择**发布到 E AWS lastic Beanstalk**。  
![\[Solution Explorer context menu showing "Publish to AWS..." option for AEBWebAppDemo project.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-publish-to-aws-console.png)

   随即显示 **Publish to Elastic Beanstalk (发布到 Elastic Beanstalk)** 向导。  
![\[Publish to AWS Elastic Beanstalk wizard interface for creating or redeploying an application environment.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-app-console.png)

1. 在**配置文件**中，从**用于部署的账户配置文件**下拉列表中，选择要用于部署的 AWS 账户配置文件。

   或者，如果您有要使用的 AWS 帐户，但尚未为其创建 AWS 账户资料，则可以选择带有加号 (`+`) 的按钮来添加 AWS 账户资料。

1. 从**区域**下拉列表中，选择希望 Elastic Beanstalk 将应用程序部署到的区域。

1. 在 **Deployment Target (部署目标)** 中，您可选择 **Create a new application environment (创建新应用程序环境)** 执行应用程序的初始部署或选择 **Redeploy to an existing environment (重新部署到现有环境)** 重新部署之前已部署的应用程序。（之前的部署可能是使用向导或已弃用的独立部署工具执行的。） 如果您选择 **Redeploy to an existing environment (重新部署到现有环境)**，则当向导从当前正在运行的之前的部署中检索信息时可能会出现延迟。
**注意**  
如果您选择 **Redeploy to an existing environment (重新部署到现有环境)**，再选择列表中的环境，然后选择 **Next (下一步)**，则向导会将您定向至 **Application Options (应用程序选项)** 页面。如果您执行此过程，请向前跳至此部分中后面描述如何使用 **Application Options (应用程序选项)** 页面的说明。

1. 选择**下一步**。  
![\[Application Environment setup page for AWS with fields for name, environment, and URL.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-env-console.png)

1. 在 **Application Environment (应用程序环境)** 页面上的 **Application (应用程序)** 区域中，**Name (名称)** 下拉列表将为应用程序建议默认名称。您可通过选择此下拉列表中的其他名称来更改默认名称。

1. 在**环境**区域的**名称**下拉列表中，为您的 Elastic Beanstalk 环境键入一个名称。在此上下文中，术语*环境*是指 Elastic Beanstalk 为您的应用程序预置的基础设施。此下拉列表中可能已建议默认名称。如果未建议默认名称，您可键入一个名称或从下拉列表中选择一个名称（如果提供了任何其他名称）。环境名称的长度不得超过 23 个字符。

1. 在 **URL** 区域中，此框会建议将作为您的 Web 应用程序 URL 的默认子域 `.elasticbeanstalk.com`。您可键入新的子域名来更改默认子域。

1. 选择 **Check availability (检查可用性)** 以确保您的 Web 应用程序 URL 未在使用中。

1. 如果您的 Web 应用程序 URL 可以使用，请选择 **Next (下一步)**。

![\[AWS EC2 launch configuration settings for deploying an application to Amazon Web Services.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-ec2-console.png)


1. 在 **AWS 选项**页面上的 **Amazon EC2 启动配置**中，从**容器类型**下拉列表中，选择将用于您的应用程序的亚马逊机器映像（AMI）类型。

1. 在**实例类型**下拉列表中，指定要使用的 Amazon EC2 实例类型。在本示例中，我们建议您使用 **Micro (微型)**。这将最大程度降低相关的实例运行成本。有关 Amazon EC2 成本的更多信息，请转至 [EC2 定价](https://aws.amazon.com/ec2/pricing/)页面。

1. 在**密钥对**下拉列表中，选择一个 Amazon EC2 实例密钥对，用于登录您的应用程序将使用的实例。

1. （可选）在 **Use custom AMI (使用自定义 AMI)** 框中，您可指定将覆盖 **Container type (容器类型)** 下拉列表中指定的 AMI 的自定义 AMI。有关如何创建自定义 AMI 的更多信息，请转到 Elasti [AWS c Beanstalk 开发人员指南 AMIs中的[使用自定义](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.customami.html)，然后从 Amazon EC](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/) [2 实例创建](tkv-create-ami-from-instance.md) AMI。

1. （可选）如果您要在 VPC 中启动实例，请选中 **Use a VPC (使用 VPC)** 框。

1. （可选）如果您要启动单个 Amazon EC2 实例，然后将应用程序部署到该实例，请选中**单实例环境**选项框。

   如果您选中此框，Elastic Beanstalk 仍将创建自动扩缩组，但不会配置改组。如果您希望稍后配置自动扩缩组，则可使用 AWS 管理控制台。

1. （可选）如果您希望控制将应用程序部署到实例时的条件，请选中 **Enable Rolling Deployments (启用滚动部署)** 框。只能在未选中 **Single instance environment (单个实例环境)** 框时选中此框。

1. 如果您的应用程序使用诸如 Amazon S3 和 DynamoDB 之类的 AWS 服务，则提供证书的最佳方式是使用 IAM 角色。在**已部署应用程序权限**区域中，您可选择现有 IAM 角色或创建一个供向导用来启动环境的角色。使用的应用程序在向 AWS 服务发出请求时 适用于 .NET 的 AWS SDK 将自动使用此 IAM 角色提供的证书。

1. 如果您的应用程序访问 Amazon RDS 数据库，请在**关系数据库访问权限**区域的下拉列表中，选中向导将更新的任何 Amazon RDS 安全组旁的框，以便您的 Amazon EC2 实例可访问该数据库。

1. 选择**下一步**。
   + 如果您已选择 **Use a VPC (使用 VPC)**，则将显示 **VPC Options (VPC 选项)** 页面。
   + 如果您已选择 **Enable Rolling Deployments (启用滚动部署)**，但未选择 **Use a VPC (使用 VPC)**，则将显示 **Rolling Deployments (滚动部署)** 页面。向前跳至此部分中后面描述如何使用 **Rolling Deployments (滚动部署)** 页面的说明。
   + 如果您未选择 **Use a VPC (使用 VPC)** 或 **Enable Rolling Deployments (启用滚动部署)**，则将显示 **Application Options (应用程序选项)** 页面。向前跳至此部分中后面描述如何使用 **Application Options (应用程序选项)** 页面的说明。

1. 如果您已选择 **Use a VPC (使用 VPC)**，请在 **VPC Options (VPC 选项)** 页面上指定信息以在 VPC 中启动应用程序。  
![\[VPC Options interface for configuring AWS Elastic Beanstalk application deployment settings.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-vpc-console.png)

   必须已创建 VPC。如果您在 Toolkit for Visual Studio 中创建了 VPC，则 Toolkit for Visual Studio 将为您填充此页面。如果您在 [AWS 管理控制台](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo-vpc-basic.html)中创建了 VPC，请在此页面中键入有关您的 VPC 的信息。

## 针对 VPC 的部署的主要注意事项
<a name="key-considerations-for-deployment-to-a-vpc"></a>
+ 您的 VPC 需要至少一个公有子网和一个私有子网。
+ 在 *ELB Subnet (ELB 子网)* 下拉列表中，指定公有子网。Toolkit for Visual Studio 将应用程序的 Elastic Load Balancing 负载均衡器部署到公有子网。公有子网与具有指向 Internet 网关的入口的路由表关联。您可识别 Internet 网关，因为它具有以 `igw-` 开头的 ID（例如，`igw-83cddaex`）。您使用 Toolkit for Visual Studio 创建的公有子网包含将其标识为公有的标签值。
+ 在 *Instances Subnet (实例子网)* 下拉列表中，指定私有子网。Toolkit for Visual Studio 会将应用程序的 Amazon EC2 实例部署到私有子网。
+ 应用程序的 Amazon EC2 实例将通过公有子网中执行网络地址转换（NAT）的 Amazon EC2 实例实现从私有子网到 Internet 的通信。要启用此通信，您需要允许流量从私有子网流至 NAT 实例的 [VPC 安全组](https://console.aws.amazon.com/vpc/home)。在 *Security Group (安全组)* 下拉列表中，指定此 VPC 安全组。

有关如何将 Elastic Beanstalk 应用程序部署到 VPC 的更多信息，请参阅《[AWS Elastic Beanstalk 开发人员指南](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/)》。

1. 在填充 **VPC Options (VPC 选项)** 页面上的所有信息后，请选择 **Next (下一步)**。
   + 如果您已选择 **Enable Rolling Deployments (启用滚动部署)**，则将显示 **Rolling Deployments (滚动部署)** 页面。
   + 如果您未选择 **Enable Rolling Deployments (启用滚动部署)**，则将显示 **Application Options (应用程序选项)** 页面。向前跳至此部分中后面描述如何使用 **Application Options (应用程序选项)** 页面的说明。

1. 如果您已选择 **Enable Rolling Deployments (启用滚动部署)**，请在 **Rolling Deployments (滚动部署)** 页面上指定信息以配置新版本的应用程序部署到负载均衡环境中的实例的方式。例如，如果您的环境中有 4 个实例，并且您需要更改实例类型，则可将环境配置为一次更改 2 个实例。这可帮助确保您的应用程序在执行更改时仍处于运行状态。  
![\[Rolling Deployments configuration interface for AWS application updates and environment settings.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-rolling-console.png)

1. 在 *Application Versions (应用程序版本)* 区域中，选择用于控制一次部署的实例的百分比或数量的选项。指定所需百分比或数量。

1. （可选）在 *Environment Configuration (环境配置)* 区域中，如果要指定在部署期间保持运行的实例数量，请选中此框。如果选中此框，请指定一次应修改的实例的最大数目和/或一次应保持运行的实例的最小数目。

1. 选择*下一步*。

1. 在 **Application Options (应用程序选项)** 页面上，指定有关版本、Internet Information Services (IIS) 和应用程序设置的信息。  
![\[Application Options interface for configuring build and deployment settings for AWS.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-options-console.png)

1. 在 **Build and IIS Deployment Settings (生成和 IIS 部署设置)** 区域的 **Project build configuration (项目生成配置)** 下拉列表中，选择目标版本配置。如果向导可以找到它，则 **Release (发布)** 将显示，否则此框中将显示有效配置。

1. 在 **App pool (应用程序池)** 下拉列表中，选择您的应用程序所需的 .NET Framework 版本。应已显示正确的 .NET Framework 版本。

1. 如果您的应用程序是 32 位的，请选中 **Enable 32-bit applications (启用 32 位应用程序)** 框。

1. 在 **App path (应用程序路径)** 框中，指定 IIS 将用来部署应用程序的路径。默认情况下，指定 **Default Web Site/**，它通常会转换为路径 `c:\inetpub\wwwroot`。如果您指定了 **Default Web Site/** 之外的路径，向导将在 **Default Web Site/** 路径中放置指向您指定的路径的重定向。

1. 在**应用程序设置**区域的**运行状况检查 URL** 框中，键入要检查的 Elastic Beanstalk URL，以确定您的 Web 应用程序是否仍响应。此 URL 相对于根服务器 URL。默认情况下，已指定根服务器 URL。例如，如果完整 URL 为 `example.com/site-is-up.html`，则键入 `/site-is-up.html`。

1. 在 **Key (键)** 和 **Value (值)** 的区域中，可指定要添加到应用程序的 `Web.config` 文件的任何密钥和值对。
**注意**  
尽管不建议这样做，但您可以使用 **Key** 和 **Value** 区域来指定应用程序运行时应使用的 AWS 凭据。首选方式是在 **AWS 选项**页面上的 **Identity and Access Management 角色**下拉列表中指定 IAM 角色。但是，如果您必须使用 AWS 证书而不是 IAM 角色来运行应用程序，请在**密钥**行中选择**AWSAccess密钥**。在 **Value (值)** 行中，键入访问密钥。对 **AWSSecretKey** 重复这些步骤。

1. 选择**下一步**。  
![\[Review window for publishing an application to AWS Elastic Beanstalk with deployment details.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-review-console.png)

1. 在 **Review (查看)** 页面上，查看您配置的选项，然后选中 **Open environment status window when wizard closes (在向导关闭时打开环境状态窗口)** 框。

1. 如果一切正常，请选择 **Deploy (部署)**。
**注意**  
部署应用程序时，将向活动账户收取应用程序使用的 AWS 资源所产生的费用。

   有关部署的信息将显示在 Visual Studio 状态栏和 **Output (输出)** 窗口中。该过程可能需要几分钟。部署完成后，**Output (输出)** 窗口中将显示确认消息。

1. **要删除部署，请在 AWS 资源管理器中展开 El **asti** c Beanstalk 节点，打开部署子节点的上下文（右键单击）菜单，然后选择删除。**此删除过程可能需要几分钟。