

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

# 的 AWS Toolkit for Visual Studio
<a name="dotnet-toolkit"></a>

Visual Studio 提供了适用于不同编程语言和应用程序类型的模板。开始时，您可以使用其中任何一个模板。Visual Studio 的 AWS Toolkit for Visual Studio 还提供了三个项目模板，用于引导应用程序的开发： AWS 控制台项目、 AWS Web 项目和 AWS 空项目。在此示例中，您将创建一个新的 ASP.NET Web 应用程序。

**创建一个新的 ASP.NET Web 应用程序项目**

1. 在 Visual Studio 的 **File**（文件）菜单中，单击 **New**（新建），然后单击 **Project**（项目）。

1. 在 **New Project**（新建项目）对话框中，单击 **Installed Templates**（已安装的模板），单击 **Visual C\$1**，然后单击 **Web**。单击 **ASP.NET Empty Web Application**（ASP.NET 空 Web 应用程序），键入项目名，然后单击 **OK**（确定）。

**运行项目**

请执行下列操作之一：

1. 按 **F5**。

1. 从 **Debug**（调试）菜单选择 **Start Debugging**（开始调试）。

## 本地测试
<a name="create_deploy_NET.sdlc.testlocal"></a>

Visual Studio 可让您轻松地在本地测试应用程序。要测试或者运行 ASP.NET Web 应用程序，您需要拥有 Web 服务器。Visual Studio 提供多个选项，如 Internet Information Services (IIS)、IIS Express 或者内置的 Visual Studio 开发服务器。要了解有关其中每个选项的详情以及确定最适合的选项，请参阅 [Visual Studio for ASP.NET Web 项目中的 Web 服务器](http://msdn.microsoft.com/en-us/library/58wxa9w5.aspx)。

## 创建 Elastic Beanstalk 环境
<a name="create_deploy_NET.sdlc.deploy"></a>

在测试应用程序后，可随时将其部署到 Elastic Beanstalk。

**注意**  
[配置文件](ebextensions.md)需为存档中要包含的项目的一部分。或者，您也可以不将配置文件包含在项目中，而是使用 Visual Studio 将所有文件部署到项目文件夹中。在 **Solution Explorer**（解决方案资源管理器）中，右键单击项目名称，然后单击 **Properties**（属性）。单击 **Package/Publish Web**（程序包/发布 Web）选项卡。在 **Items to deploy**（要部署的项）部分中，选择下拉列表中的 **All Files in the Project Folder**（项目文件夹中的所有文件）。

**使用适用于 Visual Studio 的工具包将应用程序部署到 Elastic Beanstalk AWS**

1. 在**解决方案资源管理器**中，右键单击您的应用程序，然后选择**发布到 AWS**。

1. 在 **Publish to AWS(发布到亚马逊云科技)** 向导中，输入您的账户信息。

   1. 对于 **AWS account to use for deployment**（要用于部署的亚马逊云科技账户），选择您的账户或选择 **Other**（其他）以输入新账户信息。

   1. 对于 **Region**（区域），选择要在其中部署应用程序的区域。有关可用 AWS 区域的信息，请参阅中的[AWS Elastic Beanstalk 终端节点和配额*AWS 一般参考*](https://docs.aws.amazon.com/general/latest/gr/elasticbeanstalk.html)。如果您选择了一个 Elastic Beanstalk 不支持的区域，则部署到 Elastic Beanstalk 的选项将变为不可用。

   1.  单击 **Deploy new application with template**（使用模板部署新应用程序）并选择 **Elastic Beanstalk**。然后单击 **Next**（下一步）。  
![\[发布到 AWS 向导 1\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-create-newapp-template.png)

1. 在 **Application**（应用程序）页面上，输入应用程序详细信息。

   1. 对于 **Name**（名称），键入应用程序的名称。

   1. 对于 **Description**，键入应用程序的描述。此为可选步骤。

   1. 应用程序的版本标签将自动显示在 **Deployment version label**（部署版本标签）中。

   1. 选择 **Deploy application incrementally**（以递增方式部署应用程序），可仅部署已更改的文件。因为只需更新已更改的文件而不是所有文件，所以，增量部署的速度更快。如果您选择此选项，则系统会从 Git commit ID 设置应用程序版本。如果您选择不以增量的方式部署应用程序，那么，可以更新 **Deployment version label**（部署版本标签）框中的版本标签。  
![\[发布到 Beanstalk 向导 2\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk1.png)

   1. 单击 **Next**（下一步）。

1. 在 **Environment**（环境）页面上，描述环境详细信息。

   1. 选择 **Create a new environment for this application**（为此应用程序创建新环境）。

   1. 对于 **Name**（名称），键入环境的名称。

   1. 对于 **Description**（描述），描述您的环境的特征。此为可选步骤。

   1. 选择需要的环境 **Type**（类型）。

      可以选择 **Load balanced（负载均衡）、auto scaled**（自动扩展）或 **Single instance**（单一实例）环境。有关更多信息，请参阅[环境类型](using-features-managing-env-types.md)。

       
**注意**  
对于单实例环境，负载均衡、自动扩展和运行状况检查 URL 设置不适用。

   1. 将光标移到 **Environment URL**（环境 URL）框中后，环境 URL 会自动显示在该框中。

   1. 单击 **Check availability**（检查可用性）按钮，确保环境 URL 处于可用状态。  
![\[发布到 Beanstalk 向导 3\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk2.png)

   1. 单击 **Next (下一步)**。

1. 在 **AWS Options**（亚马逊云科技选项）页面上，为部署配置额外的选项和安全信息。

   1.  对于 **Container Type**（容器类型），选择 **64bit Windows Server 2012 running IIS 8**（运行 IIS 8 的 64 位 Windows Server 2012）或 **64bit Windows Server 2008 running IIS 7.5**（运行 IIS 7.5 的 64 位 Windows Server 2008）。

   1. 对于 **Instance Type**（实例类型），选择 **Micro**（微型）。

   1. 对于 **Key pair (密钥对)**，选择 **Create new key pair (创建新密钥对)**。键入新密钥对的名称（在本示例中，我们使用 **myuswestkeypair**），然后单击 **OK**（确定）。key pair 允许远程桌面访问您的 Ama EC2 zon 实例。有关亚马逊 EC2 密钥对的更多信息，请参阅*亚马逊弹性计算云用户指南*中的[使用凭证](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-credentials.html)。

   1. 选择实例配置文件。

      如果您没有实例配置文件，请选择 **Create a default instance profile**（创建默认实例配置文件）。有关将实例配置文件与 Elastic Beanstalk 结合使用的信息，请参阅[管理 Elastic Beanstalk 实例配置文件](iam-instanceprofile.md)。

   1. 如果您有要用于您环境中的自定义 VPC，请单击 **Launch into VPC**（在 VPC 中启动）。您可以在下一页上配置 VPC 信息。有关 Amazon VPC 的更多信息，请转到 [Amazon Virtual Private Cloud (Amazon VPC)](https://aws.amazon.com/vpc/)。有关支持的非旧式容器类型的列表，请参阅[为什么某些平台版本标记为传统版本？](using-features.migration.md#using-features.migration.why)。  
![\[发布到 Beanstalk 向导 4\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk3b_iam.png)

   1.  单击 **Next (下一步)**。

1. 如果您选择在 VPC 内启动环境，则会显示 **VPC Options**（VPC 选项）页面；否则会显示 **Additional Options**（额外选项）页面。在这里可配置您的 VPC 选项。  
![\[适用于负载平衡、可扩展环境的 VPC 选项\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk3b_vpc.png)  
![\[适用于单一实例环境的 VPC 选项\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk3b_vpc-single.png)

   1. 选择您要在其中启动环境的 VPC 的 VPC ID。

   1. 对于负载均衡、可扩展的环境，如果您不希望弹性负载均衡器对 Internet 可用，请为 **ELB 模式**选择**私有**。

      对于单一实例环境，因为环境没有负载均衡器，所以此选项并不适用。有关更多信息，请参阅 [环境类型](using-features-managing-env-types.md)。

   1. 对于负载均衡、可扩展的环境，请为弹性负载均衡器和实例选择子网。 EC2 如果您创建了公有子网和私有子网，请确保弹性负载均衡器和 EC2 实例与正确的子网关联。默认情况下，Amazon VPC 会使用 10.0.0.0/24 创建默认的公有子网，并使用 10.0.1.0/24 创建私有子网。您可以在 Amazon VPC 控制台中查看您的现有子网，网址为[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

      对于单一实例环境，您的 VPC 实例只需要一个公有子网供实例使用。因为环境没有负载均衡器，所以为负载均衡器选择子网并不适用。有关更多信息，请参阅[环境类型](using-features-managing-env-types.md)。

   1. 对于负载均衡、可扩展的环境，请选择您已为实例创建的安全组（如果适用）。

      对于单一实例环境，您无需 NAT 设备。选择默认安全组。Elastic Beanstalk 为实例分配一个弹性 IP 地址，允许实例访问 Internet。

   1. 单击 **Next (下一步)**。

1. 在 **Application Options**（应用程序选项）页上，配置您的应用程序选项。

   1. 对于目标框架，选择 **.NET Framework 4.0**。

   1. Elastic Load Balancing 使用运行状况检查来确定运行您的应用程序的 Amazon EC2 实例是否运行正常。运行状况检查会按设置的时间间隔探测指定的 URL，从而确定该实例的状态。您可以通过在 **Application health check URL**（应用程序运行状况检查 URL）框中输入 URL（例如 `/myapp/index.aspx`）以覆盖默认 URL，使之对应于您的应用程序中的现有资源。有关应用程序运行状况检查的更多信息，请参阅“[健康检查](environments-cfg-clb.md#using-features.managing.elb.healthchecks)”。

   1. 如果要接收 Amazon Simple Notification Service (Amazon SNS) 通知，请键入电子邮件地址，这种通知会提醒您可能会影响应用程序的各种重大事件。

   1. **应用程序环境**部分允许您在运行您的应用程序的 Amazon EC2 实例上指定环境变量。由于不再需要在环境中移动时重新编译资源代码，此设置可实现更高的可移植性。

   1. 选择您希望用于部署应用程序的应用程序凭证选项。  
![\[发布到 Beanstalk 向导 6\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk3a.png)

   1. 单击 **Next (下一步)**。

1. 如果之前设置了 Amazon RDS 数据库，则会显示 **Amazon RDS DB Security Group**（Amazon RDS 数据库安全组）页面。如果要将 Elastic Beanstalk 环境连接到 Amazon RDS 数据库实例，请选择一个或多个安全组。否则，请继续执行下一步。准备就绪时，单击 **Next**（下一步）。  
![\[发布到 Beanstalk 向导 7\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk6b.png)

1.  查看您的部署选项。如果所有内容都准确无误，请单击 **Deploy (部署)**。  
![\[发布到 Beanstalk 向导 8\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-publish-beanstalk4.png)

   您的 ASP.NET 项目会导出为 Web 部署文件，上传到 Amazon S3，并通过 Elastic Beanstalk 注册为新的应用程序版本。Elastic Beanstalk 部署功能将监控您的环境，直到部署了新代码的环境变得可用为止。在“env:<environment name>”（环境: <环境名称>）选项卡上，您将看到环境的状态。  
![\[环境状态\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-env-status.png)

## 终止环境
<a name="create_deploy_NET.terminating"></a>

为了避免因未使用的 AWS 资源而产生费用，您可以使用适用于 Visual Studio 的 AWS Toolkit 来终止正在运行的环境。

**注意**  
 稍后，您始终都可以使用相同的版本启动新的环境。

**终止环境**

1.  在 **AWS Explorer** 中，展开 Elastic Beanstalk 节点和应用程序节点。右键单击应用程序环境，选择 **Terminate Environment**（终止环境）。

1. 当系统提示时，单击 **Yes**（是）以确认要终止该环境。Elastic Beanstalk 需要几分钟才能 AWS 终止在环境中运行的资源。  
![\[Elastic Beanstalk 的“终止环境”对话框\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-terminate-confirm.png)
**注意**  
终止环境时，与已终止环境相关联的别名记录可供任何人使用。

# 部署到您的环境
<a name="create_deploy_NET.sdlc.create.edit"></a>

在您的应用程序测试完毕后，就可以很轻松地编辑和重新部署您的应用程序，并在稍后查看相关结果。

 **编辑和重新部署您的 ASP.NET Web 应用程序** 

1.  在 “**解决方案资源管理器**” 中，右键单击您的应用程序，然后单击 “**重新发布到环境” < *your environment name* >**。此时，会打开 **Re-publish to AWS Elastic Beanstalk**（重新发布到 Amazon Elastic Beanstalk）向导。  
![\[发布到 Beanstalk 向导 1\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-republish-beanstalk-sameenv.png)

1.  查看您的部署详细信息，然后单击 **Deploy**（部署）。
**注意**  
如果要更改任何设置，可以单击 **Cancel**（取消），并改为使用 **Publish to AWS**（发布到亚马逊云科技）向导。有关说明，请参阅[创建 Elastic Beanstalk 环境](dotnet-toolkit.md#create_deploy_NET.sdlc.deploy)。

   您的更新 ASP.NET Web 项目会导出为 Web 部署文件 (其中带有新的版本标签)，上传到 Amazon S3，然后在 Elastic Beanstalk 中注册为新的应用程序版本。Elastic Beanstalk 部署功能会监控您的现有环境，直到该环境具有最新部署的代码并且变为可用状态为止。在 **env: < *environment name* >** 选项卡上，您将看到环境的状态。

例如，如果您需要回滚到以前的应用程序版本，也可以将现有的应用程序部署到现有的环境中。

**将应用程序版本部署到现有的环境中**

1. 通过在 **AWS Explorer** 中展开 Elastic Beanstalk 节点来右键单击您的 Elastic Beanstalk 应用程序。选择 **View Status**（查看状态）。

1. 在 “**应用程序:< *application name* >**” 选项卡中，单击 “**版本**”。  
![\[应用程序版本\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-publish-app-version.png)

1. 单击您希望部署的应用程序版本，然后单击 **Publish Version**（发布版本）。

1.  在 **Publish Application Version**（发布应用程序版本）向导中，单击 **Next**（下一步）。  
![\[发布应用程序版本向导 1\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-republish-beanstalk2a.png)

1.  查看您的部署选项，然后单击 **Deploy**（部署）。  
![\[发布应用程序版本向导 2\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-publish-app-version-wizard3.png)

   您的 ASP.NET 项目将导出为 Web 部署文件，并上传到 Amazon S3。Elastic Beanstalk 部署功能将监控您的环境，直到部署了新代码的环境变得可用为止。在 **env: < *environment name* >** 选项卡上，您将看到环境的状态。

# 管理 Elastic Beanstalk 应用程序环境
<a name="create_deploy_NET.managing"></a>

借助 Visual Studio 的 AWS Toolkit for Visual Studio AWS 和管理控制台，您可以更改应用程序环境所用 AWS 资源的配置和配置。有关如何使用管理控制台 AWS 管理应用程序环境的信息，请参阅[管理 Elastic Beanstalk 环境](using-features.managing.md)。本部分介绍可在 AWS Toolkit for Visual Studio 中编辑的特定服务设置，它也是应用程序环境配置的一部分。

## 更改环境配置设置
<a name="create_deploy_NET.managing.env"></a>

在部署应用程序时，Elastic Beanstalk 会配置许多云计算服务。 AWS 您可以使用适用于 Visual Studio 的 AWS Toolkit 来控制如何配置这些单独的服务。

**编辑应用程序的环境设置**
+ 展开 Elastic Beanstalk 节点和应用程序节点。然后在 **AWS Explorer** 中右键单击您的 Elastic Beanstalk 环境。选择 **View Status (查看状态)**。

  您现在可以配置以下各项的设置：
  + 服务器
  + 负载均衡
  + AutoScaling
  + 通知
  + 环境属性

# 使用 Visual Studio AWS 工具包配置 EC2 服务器实例
<a name="create_deploy_NET.managing.ec2"></a>

亚马逊弹性计算云 (Amazon EC2) 是一项网络服务，用于启动和管理亚马逊数据中心的服务器实例。您可以根据需要随时使用 Amazon EC2 服务器实例，并且可以用于任何合法目的。实例可以按照不同的规模和配置进行提供。欲了解更多信息，请访问 [Amazon EC2](https://aws.amazon.com/ec2/)。

你可以使用 Visual Studio Toolkit for Visual Studio EC2 的应用程序环境选项卡中的服务器选项卡来编辑 Elastic Beanstalk 环境 AWS 的亚马逊实例**配置**。

![\[Elastic Beanstalk 服务器配置面板\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-server.png)


## 亚马逊 EC2 实例类型
<a name="create_deploy_NET.managing.ec2.instancetypes"></a>

**Instance type**（实例类型）显示可用于您的 Elastic Beanstalk 应用程序的实例类型。请更改实例类型以选择特征（包括内存大小和 CPU 处理能力）最适合您的应用程序的服务器。例如，具有大量操作和长时间运行的操作的应用程序可能需要更多 CPU 或内存。

有关可用于 Elastic Beanstalk 应用程序的亚马逊 EC2 实例类型的更多信息[，请参阅*亚马逊弹性计算云用户指南中的*实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)类型。

## 亚马逊 EC2 安全组
<a name="create_deploy_NET.managing.ec2.securitygroups"></a>

您可以使用亚马逊安全组控制对您的 Elastic Beanstalk *应用程序 EC2 *的访问权限。安全组会定义实例的防火墙规则。这些规则会指定应将哪些进入 (即传入) 网络流量提交给实例。将丢弃所有其他进入流量。您可以随时针对不同的组修改这些规则。新的规则会自动在所有现在运行的和将来启动的实例上强制实施。

您可以使用 AWS 管理控制台或使用适用于 Visual Studio 的 AWS Toolkit for Visual Studio 来设置您的亚马逊 EC2 安全组。**您可以通过在 EC2 安全组文本框中输入一个或多个亚马逊安全组名称（以逗号分隔）来指定哪些 EC2 亚马逊安全组控制对您的 Elastic Beanstalk 应用程序的访问权限。EC2 **

**注意**  
如果要启用应用程序的运行状况检查，请确保可以从源 CIDR 范围 0.0.0.0/0 访问端口 80 (HTTP)。有关运行状况检查的详细信息，请参阅 [运行状况检查](create_deploy_NET.managing.elb.md#create_deploy_NET.managing.elb.healthchecks)。

**使用适用于 Visual Studio 的 AWS 工具包创建安全组**

1.  在 Visual Studio 中，在**AWS 资源管理器**中，展开 **Amazon EC2** 节点，然后双击 “**安全组**”。

1.  单击 **Create Security Group**（创建安全组），并输入安全组的名称和描述。

1.  单击 **OK (确定)**。

有关亚马逊 EC2 安全组的更多信息，请参阅*亚马逊弹性计算云用户指南*中的[使用安全组](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)。

## 亚马逊 EC2 密钥对
<a name="create_deploy_NET.managing.ec2.keypair"></a>

您可以使用亚马逊密钥对安全地登录为您的 Elastic Beanstalk 应用程序预配置的亚马逊 EC2 实例。 EC2 

**重要**  
您必须创建亚马逊 EC2 密钥对并将您的 Elastic Beanstalk（预配置的亚马逊 EC2 实例）配置为使用亚马逊密钥 EC2 对，然后才能访问已配置的 Elastic BeanStalk 的亚马逊实例。 EC2 将应用程序部署到 Elastic Beanstalk 时，可以使用 Visual Studio AWS 工具包中的 “**发布**到 AWS” 向导创建密钥对。如果要使用该 Toolkit 创建额外的密钥对，请按照以下步骤操作。或者，您可以使用[AWS 管理控制台](https://console.aws.amazon.com/)设置您的 Amazon EC2 密钥对。有关为亚马逊创建密钥对的说明 EC2，请参阅[亚马逊弹性计算云入门指南](https://docs.aws.amazon.com/AWSEC2/latest/GettingStartedGuide/)。

 **现有密钥对**文本框允许您指定亚马逊密钥对的名称，该 EC2 密钥对可用于安全登录运行 Elastic Beanstalk 应用程序的亚马逊 EC2 实例。

**指定 Amazon EC2 密钥对的名称**

1. 展开 **Amazon EC2** 节点并双击 “**密钥对**”。

1.  单击 **Create Key Pair**（创建密钥对），输入密钥对名称。

1.  单击 **OK**（确定）。

有关亚马逊 EC2 密钥对的更多信息，请前往[亚马逊*弹性计算云用户指南中的使用亚马逊 EC2*凭证](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-credentials.html)。有关连接到 Amazon EC2 实例的更多信息，请参阅[列出和连接到服务器实例](create_deploy_NET.ec2connect.md)。

## 监控间隔
<a name="create_deploy_NET.managing.monitoring"></a>

 默认情况下，仅启用基本的 Amazon CloudWatch 指标。这些指标会以五分钟为周期返回数据。您可以启用更精细的一分钟 CloudWatch指标，方法是为环境的 “**配置**” 选项卡的 “**服务器**” 部分的 “**监控间隔**” 选择 **1 分钟**。 AWS Toolkit for Eclipse

**注意**  
一分钟间隔指标可能会收取 Amazon CloudWatch 服务费。有关更多信息 CloudWatch，请参阅 [Amazon](https://aws.amazon.com/cloudwatch/)。

## 自定义 AMI ID
<a name="create_deploy_NET.managing.customami"></a>

 您可以用自己的自定义 AMI 覆盖用于您的 Amazon EC2 实例的默认 AMI，方法是在环境的 “**配置**” 选项卡的 “**服务器**” 部分的 “**自定义 AMI ID**” 框中输入自定义 AMI 的标识符 AWS Toolkit for Eclipse。

**重要**  
使用您自己的 AMI 是一项高级任务，应小心谨慎地执行。如果需要自定义 AMI，则建议您先使用默认 Elastic Beanstalk AMI，然后修改它。为了被认为是健康的，Elastic Beanstalk EC2 希望亚马逊实例满足一系列要求，包括运行主机管理器。如果未满足这些要求，您的环境可能无法正常运行。

# 使用 Visual Studio 的 AWS 工具包配置弹性负载平衡
<a name="create_deploy_NET.managing.elb"></a>

Elastic Load Balancing 是一种 Amazon Web 服务，可帮助您提高应用程序的可用性和可扩展性。该服务使您可以轻松地在两个或多个 Amazon EC2 实例之间分配应用程序负载。Elastic Load Balancing 通过冗余实现可用性，并支持应用程序的流量增长。

 Elastic Load Balancing 可让您自动在运行的所有实例之间分配和平衡传入的应用程序流量。在您需要增加应用程序容量时，该服务还可让您轻松地添加新的实例。

 Elastic Beanstalk 会在您部署应用程序时自动地预配置 Elastic Load Balancing。你可以使用 Visual Studio Toolkit for Visual Studio EC2 的应用程序环境选项卡中的 “**负载**均衡器” 选项卡来编辑 Elastic Beanstalk AWS 环境的亚马逊实例配置。

![\[Elastic Beanstalk Elastic Load Balancing 配置面板\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-loadbalancer.png)


 以下部分介绍了可为应用程序配置的 Elastic Load Balancing 参数。

## 端口
<a name="create_deploy_NET.managing.elb.ports"></a>

为处理您的 Elastic Beanstalk 应用程序的请求而配置的负载均衡器会向运行您的应用程序的 EC2 亚马逊实例发送请求。预配置的负载均衡器可以监听 HTTP 和 HTTPS 端口上的请求，并将请求路由到 AWS Elastic Beanstalk 应用程序中的 Amazon EC2 实例。默认情况下，负载均衡器将处理 HTTP 端口上的请求。必须至少打开其中一个端口，要么是 HTTP 要么是 HTTPS。

![\[Elastic Beanstalk Elastic Load Balancing 配置 - 端口\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-loadbalancer-ports.png)


**重要**  
确保您指定的端口没有锁定；否则，用户将无法连接到 Elastic Beanstalk 应用程序。

### 控制 HTTP 端口
<a name="create_deploy_NET.managing.elb.ports.http"></a>

若要关闭 HTTP 端口，请为 **HTTP Listener Port**（HTTP 侦听器端口）选择 **OFF**（关）。若要打开 HTTP 端口，需从列表中选择一个 HTTP 端口（例如，**80**）。

**注意**  
要使用默认端口 80 (如端口 8080) 以外的端口来访问您的环境，请将侦听器添加到现有负载均衡器并配置新侦听器来侦听该端口。  
例如，[AWS CLI 对于经典负载均衡器](https://docs.aws.amazon.com/cli/latest/reference/elb/create-load-balancer-listeners.html)，键入以下命令，替换*LOAD\$1BALANCER\$1NAME*为 Elastic Beanstalk 的负载均衡器的名称。  

```
aws elb create-load-balancer-listeners --load-balancer-name LOAD_BALANCER_NAME --listeners "Protocol=HTTP, LoadBalancerPort=8080, InstanceProtocol=HTTP, InstancePort=80"
```
例如，[AWS CLI 对于应用程序负载均衡器](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-listener.html)，键入以下命令，替换*LOAD\$1BALANCER\$1ARN*为 Elastic Beanstalk 的负载均衡器的 ARN。  

```
aws elbv2 create-listener --load-balancer-arn LOAD_BALANCER_ARN --protocol HTTP --port 8080
```
如果希望 Elastic Beanstalk 监控您的环境，请勿删除端口 80 上的侦听器。

### 控制 HTTPS 端口
<a name="create_deploy_NET.managing.elb.ports.https"></a>

Elastic Load Balancing 支持为客户端与负载均衡器的连接启用流量加密的 HTTPS/TLS 协议。从负载均衡器到 EC2 实例的连接使用纯文本加密。默认情况下，HTTPS 端口是关闭的。

**打开 HTTPS 端口**

1. 使用 AWS Certificate Manager (ACM) 创建新证书或将证书和密钥上传到 AWS Identity and Access Management (IAM)。有关请求 ACM 证书的更多信息，请参阅 *AWS Certificate Manager 用户指南*中的[请求证书](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request.html)。有关将第三方证书导入 ACM 中的更多信息，请参阅 *AWS Certificate Manager 用户指南*中的[导入证书](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)。如果您所在的[地区没有](https://docs.aws.amazon.com/general/latest/gr/acm.html) ACM，请使用 AWS Identity and Access Management (IAM) 上传第三方证书。ACM 和 IAM 服务存储证书并为 SSL 证书提供 Amazon Resource Name (ARN)。有关创建证书并将证书上传到 IAM 的更多信息，请参阅 *IAM 用户指南* 中的[使用服务器证书](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingServerCerts.html)。

1. 通过为 **HTTPS Listener Port**（HTTP 侦听器端口）选择端口来指定 HTTPS 端口。  
![\[Elastic Beanstalk Elastic Load Balancing 配置 – SSL\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-elb-ssl.png)

1. 对于 **SSL Certificate ID**（SSL 证书 ID），输入 SSL 证书的 Amazon Resource Name（ARN）。例如，**arn:aws:iam::123456789012:server-certificate/abc/certs/build** 或 **arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678**。使用您在步骤 1 中创建或上传的 SSL 证书。

若要关闭 HTTPS 端口，请为 **HTTPS Listener Port**（HTTPS 侦听器端口）选择 **OFF**（关）。

## 运行状况检查
<a name="create_deploy_NET.managing.elb.healthchecks"></a>

运行状况检查定义包括一个要用来查询实例运行状况的 URL。默认情况下，对于非早期容器，Elastic Beanstalk 使用 TCP:80，而对于早期容器，则使用 HTTP:80。您可以通过在 **Application Health Check URL**（应用程序运行状况检查 URL）框中输入 URL（例如 `/myapp/default.aspx`）来覆盖默认 URL，使之对应于您的应用程序中的现有资源。如果您覆盖默认 URL，则 Elastic Beanstalk 将使用 HTTP 来查询资源。要检查您使用的是否是早期容器类型，请参阅[为什么某些平台版本标记为传统版本？](using-features.migration.md#using-features.migration.why)。

 您可以使用**负载平衡**面板的**EC2 实例运行状况检查**部分来控制运行状况检查的设置。

![\[Elastic Beanstalk Elastic Load Balancing 配置 – 运行状况检查\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-loadbalancer-healthcheck.png)


运行状况检查定义包括一个要用来查询实例运行状况的 URL。通过在 **Application Health Check URL**（应用程序运行状况检查 URL）框中输入 URL（例如 `/myapp/index.jsp`）来覆盖默认 URL，使之对应于您的应用程序中的现有资源。

下表介绍了可为您的应用程序设置的运行状况检查参数。
+ 在**运行状况检查间隔（秒）**中，输入 Elastic Load Balancing 在两次运行状况检查之间等待应用程序的 Amazon EC2 实例的秒数。
+  对于 **Health Check Timeout (seconds)**（运行状况检查超时(秒)），指定 Elastic Load Balancing 在将实例视为无响应之前等待响应的秒数。
+ 对于 **Healthy Check Count Threshold (良好运行状况检查计数阈值)** 和 **Unhealthy Check Count Threshold (不佳运行状况检查计数阈值)**，指定 Elastic Load Balancing 更改实例的运行状况状态之前连续的成功或失败 URL 探测的次数。例如，为 **Unhealthy Check Count Threshold**（不佳运行状况检查计数阈值）指定 **5**，即表示必须在该 URL 连续 5 次返回错误消息或超时后，Elastic Load Balancing 才将运行状况检查视为失败。

## 会话
<a name="create_deploy_NET.managing.elb.sessions"></a>

默认情况下，负载均衡器会以最小的负载将每个请求独立地传送给该服务器实例。比较起来，粘性 (VPC) 会将用户的会话绑定到具体的服务器实例，以便该用户在会话期间发出的所有请求都会发送到同一个服务器实例中。

 在为应用程序启用粘性会话后，Elastic Beanstalk 会使用负载均衡器生成的 HTTP Cookie。负载均衡器会使用负载均衡器生成的特别 Cookie 来跟踪每个请求的应用程序实例。在负载均衡器收到请求时，它首先会检查并查看请求中是否存在这个 Cookie。如果是这样的话，该请求会发送到 Cookie 中指定的应用程序实例。如果没有 Cookie，负载均衡器会根据现有的负载均衡算法选择一个应用程序实例。响应中会插入 Cookie，从而将同一用户发出的后续请求绑定到该应用程序实例中。策略配置会定义 Cookie 的到期时间，从而确定每个 Cookie 的有效持续时间。

您可以使用 **Load Balancer**（负载均衡器）选项卡上的 **Sessions**（会话）部分指定是否让应用程序的负载均衡器支持会话粘性。

![\[Elastic Beanstalk Elastic Load Balancing 配置 - 会话\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-loadbalancer-sessions.png)


 有关 Elastic Load Balancing 的更多信息，请转到 [Elastic Load Balancing 开发人员指南](https://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/)。

# 使用 Visual Studio 的 AWS 工具包配置 Auto Scaling
<a name="create_deploy_NET.managing.as"></a>

Amazon A EC2 uto Scaling 是一项亚马逊网络服务，旨在根据用户定义的触发器自动启动或终止亚马逊 EC2 实例。用户可以设置 *Auto Scaling 组* 并将 *触发器* 与这些组关联，以根据带宽使用量或 CPU 利用率等指标自动扩展计算资源。Amazon A EC2 uto Scaling 与亚马逊 CloudWatch 合作，检索运行您的应用程序的服务器实例的指标。

Amazon A EC2 uto Scaling 允许您选择一组亚马逊 EC2 实例并设置各种参数，以使该组的数量自动增加或减少。Amazon A EC2 uto Scaling 可以在该组中添加或移除亚马逊 EC2 实例，以帮助您无缝处理应用程序的流量变化。

 Amazon A EC2 uto Scaling 还会监控其启动的每个亚马逊 EC2 实例的运行状况。如果有任何实例意外终止，Amazon A EC2 uto Scaling 会检测到终止情况并启动替代实例。此功能使您能够自动维护固定的、所需数量的 Amazon EC2 实例。

Elastic Beanstalk 为您的应用程序配置 A EC2 mazon Auto Scaling。你可以使用 Visual Studio 工具包中应用程序环境选项卡中的 “**自动**缩放” 选项卡来编辑 Elastic Be EC2 anstalk 环境的亚马逊实例 AWS 配置。

![\[Elastic Beanstalk Auto Scaling 配置面板\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-autoscaling.png)


以下部分介绍了如何配置您的应用程序的 Auto Scaling 参数。

## 启动配置
<a name="create_deploy_NET.managing.as.launchconfig"></a>

您可以编辑启动配置以控制您的 Elastic Beanstalk 应用程序如何配置 A EC2 mazon Auto Scaling 资源。

**Minimum Instance Count**（最小实例计数）和 **Maximum Instance Count**（最大实例计数）框可让您指定 Elastic Beanstalk 应用程序使用的 Auto Scaling 组的最小大小和最大大小。

![\[Elastic Beanstalk Auto Scaling 启动配置的配置窗口\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-autoscaling-launchconfig.png)


**注意**  
要保持固定数量的 Amazon EC2 实例，请将**最小实例数**和**最大实例数**设置为相同的值。

**可用区域**框允许您指定希望您的 Amazon EC2 实例所在的可用区域数量。如果要构建容错的应用程序，则设置这个数字是十分重要的。如果一个可用区域出现故障，您的实例仍然会在其他可用区域上运行。

**注意**  
目前，您无法指定您的实例将放入哪些可用区域。

## 触发器
<a name="create_deploy_NET.managing.as.trigger"></a>

*触发器*是一种 Amazon A EC2 uto Scaling 机制，您可以将其设置为告知系统何时要增加（*扩展*）实例数量，以及何时要减少（*缩*小）实例数量。您可以将*触*发器配置为根据发布到 Amazon CloudWatch 的任何指标（例如 CPU 利用率）触发，并确定是否满足了您指定的条件。当在指定的时间期限内超过为该指标指定的条件上限或者下限时，该触发会启动名为*扩展活动* 的长期运行流程。

你可以使用 Visual Studio 的 Toolkit for AWS Visual Studio 为 Elastic Beanstalk 应用程序定义扩展触发器。

![\[Elastic Beanstalk Auto Scaling 触发器\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-autoscaling-triggers.png)


Amazon A EC2 uto Scaling 触发器的工作原理是监视实例的特定亚马逊 CloudWatch 指标。触发包括 CPU 使用率、网络流量和磁盘活动。使用 **Trigger Measurement (触发测量标准)** 设置选择触发的指标。

以下列表描述了您可以使用 AWS 管理控制台配置的触发器参数。
+ 您可以指定该触发应该使用的统计数据。可以为 **Trigger Statistic**（触发统计数据）选择 **Minimum**（最小值）、**Maximum**（最大值）、**Sum**（总计）或 **Average**（平均值）。
+ 对于 **Unit of Measurement**（测量单位），指定触发测量单位。
+ “**衡量周期**” 框中的值指定 Amazon CloudWatch 衡量触发指标的频率。**Breach Duration**（违例持续时间）是激活触发器之前，指标可以超出所定义限制范围 [通过 **Upper Threshold**（上限）和 **Lower Threshold**（下限）指定] 的时长。
+ 对于**较高的漏洞规模增量**和**较低的漏洞规模增量**，请指定在执行扩展活动时要添加或删除多少 EC2个 Amazon 实例。

有关 Amazon A EC2 uto Scaling 的更多信息，请参阅*亚马逊[弹性计算云文档中的 Amazon A](https://aws.amazon.com/documentation/ec2/) ut EC2 o Scaling* 部分。

# 使用 Visual Studio 的 AWS 工具包配置通知
<a name="create_deploy_NET.container.sns"></a>

Elastic Beanstalk 使用 Amazon Simple Notification Service (Amazon SNS) 向您通知影响应用程序的重要事件。要启用 Amazon SNS 通知，只需在 **Email Address**（电子邮件地址）框中输入您的电子邮件地址。若要禁用这些通知，请从框中删除您的电子邮件地址。

![\[Elastic Beanstalk 通知窗口\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-notifications.png)


# 使用 Visual Studio AWS 工具包配置.NET 容器
<a name="create_deploy_NET.container"></a>

 **容器/.NET 选项**面板允许您微调 Amazon EC2 实例的行为并启用或禁用 Amazon S3 日志轮换。你可以使用 Visual Studio 的 AWS Toolkit for Visual Studio 来配置你的容器信息。

**注意**  
您可以通过切换环境别名记录的方法将配置设置修改为零故障时间。有关更多信息，请参阅[使用 Elastic Beanstalk 进行蓝/绿部署](using-features.CNAMESwap.md)。

如果需要，则可以扩展参数数量。有关扩展参数的信息，请参阅[选项设置](ebextensions-optionsettings.md)。

**访问 Elastic Beanstalk 应用程序的“容器/.NET 选项”面板**

1. 在 Visual Studio 的 AWS Toolkit for Visual Studio 中，展开 Elastic Beanstalk 节点和你的应用程序节点。

1. 在 **AWS Explorer** 中，双击您的 Elastic Beanstalk 环境。

1. 在 **Overview**（概述）窗格底部，单击 **Configuration**（配置）选项卡。

1. 在 **Container**（容器）下，您可以配置容器的选项。  
![\[Elastic Beanstalk 容器面板\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-container.png)

## .NET 容器选项
<a name="create_deploy_NET.container.vs.options"></a>

您可以选择应用程序的 .NET Framework 版本。为 **Target runtime**（目标运行时）选择 2.0 或 4.0。如果要启用 32 位应用程序，请选择 **Enable 32–bit Applications**（启用 32 位应用程序）。

## 应用程序设置
<a name="create_deploy_NET.container.vs.options.envprop"></a>

**Application Settings**（应用程序设置）部分可让您指定您可从应用程序代码中读取的环境变量。

![\[Elastic Beanstalk 容器面板\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-container-envproperties.png)


# 管理账户
<a name="create_deploy_NET.accounts"></a>

## 
<a name="create_deploy_NET.accounts.details"></a>

如果要设置不同的 AWS 帐户来执行不同的任务，例如测试、暂存和生产，则可以使用适用于 Visual Studio 的 AWS Toolkit 来添加、编辑和删除帐户。

**管理多个账户**

1.  在 Visual Studio 的 **View**（视图）菜单中，单击 **AWS Explorer**。

1.  在**账户**列表旁边，单击**添加账户**按钮。  
![\[AWS 资源管理器选项卡\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-aws-explorer-tab.png)

    此时显示**添加账户**对话框。  
![\[Add account（添加账户）对话框\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-add-account.png)

1. 填写所需的信息。

1.  现在，您的账户信息会显示在 **AWS Explorer** 选项卡中。在向 Elastic Beanstalk 发布时，您可以选择希望使用的账户。

# 列出和连接到服务器实例
<a name="create_deploy_NET.ec2connect"></a>

您可以通过 Visual Studio 的 Toolkit for AWS Visual Studio 或管理控制台查看运行 Elastic Beanstalk 应用程序环境的亚马逊 EC2 实例列表。 AWS 您可以使用远程桌面连接到这些实例。有关使用 AWS 管理控制台列出和连接服务器实例的信息，请参阅[列出和连接到服务器实例](using-features.ec2connect.md)。以下部分将指导您使用适用于 Visual Studio 的 AWS Toolkit 查看服务器实例并将其连接到服务器实例。

**查看和连接环境的 Amazon EC2 实例**

1.  在 Visual Studio 的**AWS 资源管理器**中，展开 **Amazon EC2** 节点，然后双击 “**实例**”。

1.  在实例列中右键单击在应用程序负载均衡器中运行的 Amazon EC2 **实例的实例** ID，然后从快捷菜单中选择**打开远程桌面**。  
![\[Open Remote Desktop 对话框\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-rdp-login.png)

1.  选择**使用 EC2 密钥对登录**并将用于部署应用程序的私钥文件的内容粘贴到**私钥**框中。另一种方法是，在 **User name**（用户名）和 **Password**（密码）文本框中，输入您的用户名和密码。
**注意**  
如果密钥对保存在工具包内，那么不会显示该文本框。

1. 单击 **OK (确定)**。

# 监控应用程序运行状况
<a name="create_deploy_NET.healthstatus"></a>

当您运行生产网站时，了解您的应用程序是否可用以及能否对请求做出响应非常重要。为了帮助监控应用程序的响应能力，Elastic Beanstalk 提供了一些功能，您可以在其中监控有关应用程序的统计数据并创建在超过阈值时触发的警报。

有关 Elastic Beanstalk 提供的运行状况监控的信息，请参阅[基本运行状况报告](using-features.healthstatus.md)。

您可以使用 Visual Studio 的 AWS Toolkit for Visual Studio 或 AWS 管理控制台来访问有关应用程序的操作信息。

该工具包会在**状态**字段中显示您环境的状态和应用程序运行状况。

![\[Elastic Beanstalk 运行状况状态\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-env-status.png)


**监控应用程序运行状况**

1. 在 Visual Studio 的 AWS Toolkit for Visual Studio 中，在**AWS 资源管理器**中，展开 Elastic Beanstalk 节点，然后展开您的应用程序节点。

1. 右键单击您的 Elastic Beanstalk 环境，然后单击 **View Status**（查看状态）。

1. 在应用程序环境选项卡上，单击**监控**。

   **监控**面板包含一组图表，用于显示您特定应用程序环境的资源使用情况。  
![\[Elastic Beanstalk 监控面板\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-monitoring.png)
**注意**  
默认情况下，时间范围设置为最近一个小时。要修改这个设置，请在**时间范围**列表中，单击另一个时间范围。

您可以使用 Visual Studio 的 AWS Toolkit for Visual Studio 或 AWS 管理控制台来查看与您的应用程序关联的事件。

**查看应用程序事件**

1. 在 Visual Studio 的 AWS Toolkit 中，在**AWS 资源管理器**中，展开 Elastic Beanstalk 节点和您的应用程序节点。

1. 在 **AWS Explorer** 中，右键单击 Elastic Beanstalk 环境，然后单击 **View Status**（查看状态）。

1. 在应用程序环境选项卡上，单击**事件**。  
![\[Elastic Beanstalk 事件面板\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vs-events.png)

# 使用部署工具在.NET 中部署 Elastic Beanstalk 应用程序 AWS
<a name="deploy_NET_standalone_tool"></a>

AWS 提供了两个命令行工具，用于将.NET Core 和 ASP.NET Core 应用程序部署到 Elastic Beanstalk：
+ **AWS .NET 部署工具** — 一种现代命令行工具，可简化将.NET 应用程序部署到 AWS 服务（包括 Elastic Beanstalk）的过程。该工具提供交互式体验，可以自动检测最适合您的应用程序的 AWS 服务。有关更多信息，请参阅 [AWS .NET deployment tool](https://github.com/aws/aws-dotnet-deploy?tab=readme-ov-file#aws-net-deployment-tool)。
+ **AWS .NET CLI 扩展** — 一组.NET CLI 扩展，提供将.NET 核心应用程序部署到 Elastic Beanstalk 和其他服务的 AWS 命令。这些扩展程序与标准 .NET CLI 工作流程集成。有关更多信息，请参阅 [AWS Extensions for .NET CLI](https://github.com/aws/aws-extensions-for-dotnet-cli?tab=readme-ov-file#aws-elastic-beanstalk-amazonelasticbeanstalktools)。