AWS Toolkit for Visual Studio
用户指南

AWS services or capabilities described in AWS Documentation may vary by region/location. Click Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

独立部署工具

注意

与 CloudFormation 部署和到 Elastic Beanstalk 的增量部署相关的独立部署工具选项在当前版本中已过时,不应使用。

有关使用 Publish to Elastic Beanstalk 向导的信息,请参阅部署到 Elastic Beanstalk

Toolkit for Visual Studio 包含一个命令行工具,该工具提供了与部署向导相同的功能。您可在构建管道或其他脚本中使用独立部署工具,以实现到 Elastic Beanstalk 的自动部署。

该部署工具支持初始部署和重新部署。如果您使用了部署工具来部署应用程序,则可在 Visual Studio 中使用部署向导来重新部署它,反之亦然。

部署工具使用为部署指定参数值的配置文件。如果您在 Visual Studio 中使用了部署向导来部署应用程序,则可通过 AWS Explorer 或向导中的最后一步生成配置文件。

注意

由于部署配置包含用于部署的凭证,您应将配置文件保存在安全的位置。
_images/deploy-save-config-tkv.png

要使用部署工具部署您的 Web 应用程序,请将应用程序打包在 .zip 文件中。有关如何打包应用程序以便进行部署的更多信息,请转到 MSDN 上的操作方法:在 Visual Studio 中创建 Web 部署程序包

部署工具安装和调用#

部署工具通常安装在以下目录中:

C:\Program Files\AWS Tools\Deployment Tool\awsdeploy.exe

如果是在 Microsoft Windows 64 位系统上,则安装在以下目录中:

C:\Program Files (x86)\AWS Tools\Deployment Tool\awsdeploy.exe

调用语法#

awsdeploy [options] configFile

配置文件必须是命令行上指定的最后一个项目。

命令行选项可使用正斜杠 (/) 和连字符 (-) 指定。

除了 D 选项,每个命令行选项都有一种长格式和一种单字母缩写形式。例如,您可通过以下任一方式指定静默模式。

/s
-s
/silent
-silent

其他命令行选项采用类似的形式。

下表显示了可用的命令行选项。

选项 说明
/s、/silent、-s、-silent 请勿将消息输出到控制台。
/v、/verbose、-v、-verbose 将有关部署的更多信息发送到控制台。
/r、/redeploy、-r、-redeploy 请勿创建堆栈。部署到现有堆栈。此选项不会更改 CloudFormation 配置。
/u、/updateStack、-u、-updateStack 更新现有部署的 CloudFormation 配置。请勿重新部署应用程序。**(过时。请勿使用。)**
/w、/wait、-w、-wait 一直阻止到部署完成。此选项对于需要在部署完成后执行某项操作的脚本很有用。
/l <logfile>、/log <logfile>、-l <logfile>、-log <logfile> 将调试信息记录到指定日志文件。
/D<key>=<value>、-D<key>=<value> 从命令行覆盖配置设置。有关更多信息,请参阅配置文件部分。

输出和退出代码#

警告和错误将输出到控制台。如果指定了日志选项,则将额外的日志记录输出发送到日志文件。

部署工具使用以下退出代码。

键和值 说明
0 成功
1 参数无效
3 部署失败

如果部署成功,部署工具将输出已部署应用程序的 URL。

配置文件示例#

您将使用配置文件指定部署工具的操作。Toolkit for Visual Studio 包含 3 个示例配置文件:

  • Elastic Beanstalk 部署
  • CloudFormation 单一实例部署
  • CloudFormation 负载均衡部署

示例 Web 应用程序#

您可使用部署工具部署的示例 Web 应用程序(位于 .zip 文件存档中)也包含在 Toolkit for Visual Studio 中。您可在部署工具的安装目录的 Samples 子目录中找到这些文件。

您可使用 D 命令行选项覆盖配置文件中的设置:

/D<key>=<value>

或者

-D<key>=<value>

您可多次指定 D 选项来覆盖多个配置文件设置。如果您在命令行上重复具有不同值的同一密钥,部署工具将使用最后一个指定的值。

部署工具配置文件格式#

配置文件提供的信息与您要在部署向导中指定的信息相同。配置文件的格式设置将配置分为若干个部分,这些部分分别对应于部署向导中的一个页面。

Elastic Beanstalk 部署配置文件#

以下配置参数适用于使用 Elastic Beanstalk 的部署。

有关使用独立部署工具部署到 Elastic Beanstalk 的演练,请转到开发人员指南

常规设置#

/Daws:autoscaling:launchconfiguration.SecurityGroups=RDPOnly,HTTPOnly
键和值 说明
DeploymentPackage = archive.zip Web 部署存档的相对路径。此路径相对于您的工作目录(即,您从中调用部署工具的目录)。
IncrementalPushLocation (过时:请勿使用)如果指定,则将启用增量部署。此值指定了一个位置,用来创建 Git 存储库以存储部署程序包的受版本控制的内容(例如,C:\Temp\VS2008App1)。
Template = ElasticBeanstalk 可以是 Elastic BeanstalkElasticBeanstalk
Application.Name 为应用程序指定名称。此值为必填项。
Application.Description 为应用程序指定可选描述。
Application.Version 为应用程序指定版本字符串。如果您使用的是增量部署,则将忽略此值。Elastic Beanstalk 使用 Git 提交 ID 作为版本字符串。
Region = us-east-1 目标区域和终端节点
UploadBucket = awsdeployment-us-east-1-samples 用来存储部署材料的 Amazon S3 存储桶。如果此存储桶不存在,将进行创建。如果您使用部署向导,它将为您生成存储桶名称。
KeyPair = default 用于登录实例的 Amazon EC2 密钥对。此密钥对必须存在才能部署。(部署向导支持您在部署期间创建密钥对。)

AWSAccessKey = DEPLOYMENT_CREDENTIALS_HERE

AWSSecretKey = DEPLOYMENT_CREDENTIALS_HERE

用于创建堆栈并将应用程序部署到 Elastic Beanstalk 的 AWS 访问密钥和私有密钥。我们建议不使用这些参数来指定凭证。相反,应为凭证创建配置文件并使用 AWSProfileName 引用此配置文件。有关更多信息,请参阅指定凭证
AWSProfileName = {profile_name} 用于创建堆栈并将应用程序部署到 Elastic Beanstalk 的配置文件。
aws:autoscaling:launchconfiguration.SecurityGroups = default

Amazon EC2 实例的安全组的名称。如果指定了多个安全组,则用逗号分隔它们。

/Daws:autoscaling:launchconfiguration.SecurityGroups=RDPOnly,HTTPOnly

安全组必须已存在并且必须允许通过端口 80 (HTTP) 访问。有关如何创建安全组的信息,请参阅从 AWS Explorer 管理安全组

环境设置#

键和值 说明
Environment.Name 为您的 Elastic Beanstalk 环境指定名称。此值为必填项。
Environment.Description 可选。为您的环境指定描述。
Environment.CNAME 可选。为您的应用程序指定 URL 前缀。如果您未指定此值,Elastic Beanstalk 将从您的环境名称派生此前缀。

容器设置#

键和值 说明
Container.TargetRuntime = 4.0

指定 .NET Framework 的目标运行时。可能的值为 2.0 或 4.0。以下 .NET Framework 版本将映射到 2.0 的目标运行时:

  • .NET Framework 2.0
  • .NET Framework 3.0
  • .NET Framework 3.5

以下 .NET Framework 版本将映射到 4.0 的目标运行时:

  • .NET Framework 4.0
  • .NET Framework 4.5

利用 Toolkit for Visual Studio 中的部署向导,您可以指定 .NET Framework 版本。此向导随后会将 .NET Framework 版本映射到相应的目标运行时版本。

Container.Enable32BitApplications = false 如果应用程序为 32 位,请指定 true。如果应用程序为 64 位,请指定 false
Container.ApplicationHealthcheckPath = / 此 URL 相对于根服务器 URL。例如,如果完整 URL 为 example.com/site-is-up.html,则键入 /site-is-up.html。仅当您使用负载均衡模板时,此设置才适用。当您使用单实例模板时,将忽略此设置。此 URL 处的应用程序响应能力影响通过负载均衡器和自动定标器执行的操作。如果应用程序不响应或响应较慢,负载均衡器会将传入网络流量定向至其他 Amazon EC2 实例,自动定标器可能添加更多 Amazon EC2 实例。
Container.InstanceType = t1.micro 要使用的 Amazon EC2 实例的类型。此处显示的微型实例是实例的 EC2 定价 类型。
Container.AmiID 指定自定义 Amazon 系统映像 (AMI)。有关如何创建自定义 AMI 的更多信息,请转到 Elastic Beanstalk 开发人员指南中的使用自定义 AMI 以及从 Amazon EC2 实例创建 AMI
Container.NotificationEmail 可选。为部署状态通知指定电子邮件地址。

CloudFormation 部署配置文件#

注意

已弃用使用独立部署工具部署到 CloudFormation。

以下配置参数取自负载均衡模板。

常规设置

键和值 说明
DeploymentPackage = archive.zip Web 部署存档的相对路径。此路径相对于您的工作目录(即,您从中调用部署工具的目录)。如果您要更新部署(/updateStack 开关),则将忽略此参数。
Region = |region_api_default| 目标区域。
Template = LoadBalanced Template 的值可能是 SingleInstanceLoadBalanced,也可能是自定义 CloudFormation 模板的文件路径。有关更多信息,请参阅自定义用于部署的 AWS CloudFormation 模板
UploadBucket = awsdeployment-us-east-1-samples 用来存储部署材料的 Amazon Simple Storage Service (Amazon S3) 存储桶。如果此存储桶不存在,则会创建它。如果您使用了部署向导,它将为您生成存储桶名称。如果您使用了此向导进行部署并且要重新部署,则将忽略此参数。部署工具将自动使用在通过向导进行的原始部署中使用的存储桶。
KeyPair = default 用于登录实例的 Amazon Elastic Compute Cloud (Amazon EC2) 密钥对。此密钥对必须存在才能部署。(部署向导支持您在部署期间创建密钥对。)
AWSAccessKey = DEPLOYMENT_CREDENTIALS_HERE AWSSecretKey = DEPLOYMENT_CREDENTIALS_HERE 用于创建堆栈并将应用程序部署到 CloudFormation 的 AWS 访问密钥和私有密钥。我们建议不使用这些参数来指定凭证。相反,应为凭证创建配置文件并使用 AWSProfileName 引用此配置文件。有关更多信息,请参阅指定凭证
AWSProfileName = {profile_name} 用于创建堆栈并将应用程序部署到 CloudFormation 的配置文件。

模板参数#

除了以下参数之外,负载均衡模还支持很多其他参数来自定义负载均衡和 Auto Scaling 行为。

键和值 说明
Template.InstanceType = t1.micro 要使用的 Amazon EC2 实例的类型。此处显示的微型实例是成本最低类型的实例。
Template.SecurityGroup = default Amazon EC2 实例的安全组。此安全组必须已创建并且必须允许通过端口 80 (HTTP) 访问。有关如何创建安全组的信息,请参阅从 AWS Explorer 管理安全组
Environment.PARAM1 = Environment.PARAM2 = Environment.PARAM3 = Environment.PARAM4 = Environment.PARAM5 = 这些值通过 Web.config 文件中的 appSettings 提供给已部署的应用程序。有关更多信息,请转到 MSDN 库
Environment.AWSAccessKey = APP_CREDENTIALS_HERE Environment.AWSSecretKey = APP_CREDENTIALS_HERE 已部署应用程序用于访问 AWS 服务的访问密钥和私有密钥。我们建议不使用这些参数来指定凭证。相反,应为凭证创建配置文件并使用 AWSProfileName 引用此配置文件。有关更多信息,请参阅指定凭证
AWSProfileName = {profile_name} 已部署应用程序用于访问 AWS 服务的配置文件。

容器设置#

SolutionStack="64bit Windows Server 2008 R2 running IIS 7.5"
SolutionStack="64bit Windows Server 2012 running IIS 8"
键和值 说明
SolutionStack="64bit Windows Server 2012 running IIS 8" 指定要部署到的 Windows Server 和 Internet Information Services (IIS) 的版本。有效值为:SolutionStack="64bit Windows Server 2008 R2 running IIS 7.5" 或 SolutionStack="64bit Windows Server 2012 running IIS 8"。如果未指定,则默认为 64bit Windows Server 2012 running IIS 8.0。您可使用 Container.Type 作为 SolutionStack 的别名。
Container.TargetRuntime = 4.0

指定 .NET Framework 的目标运行时。可能的值为 2.0 或 4.0。

以下 .NET Framework 版本将映射到 2.0 的目标运行时:
  • .NET Framework 2.0
  • .NET Framework 3.0
  • .NET Framework 3.5
以下 .NET Framework 版本将映射到 4.0 的目标运行时:
  • .NET Framework 4.0
  • .NET Framework 4.5

利用 Toolkit for Visual Studio 中的部署向导,您可以指定 .NET Framework 版本。此向导随后会将 .NET Framework 版本映射到相应的目标运行时版本。

Container.Enable32BitApplications = false 如果应用程序为 32 位,请指定 true。如果应用程序为 64 位,请指定 false
Container.ApplicationHealthcheckPath = /

此 URL 相对于根服务器 URL。例如,如果完整 URL 为 example.com/site-is-up.html,则键入 /site-is-up.html

仅当您使用负载均衡模板时,此设置才适用。当您使用单实例模板时,将忽略此设置。此 URL 处的应用程序响应能力影响通过负载均衡器和 Auto Scaling 执行的操作。如果应用程序不响应或响应较慢,负载均衡器会将传入网络流量定向至其他 Amazon EC2 实例,自动定标器可能添加更多 Amazon EC2 实例。

堆栈创建设置#

键和值 说明
Settings.SNSTopic 要用于部署消息的 SNS 主题。
Settings.CreationTimeout = 0 为创建堆栈留出的时间量。零值意味着没有时间限制。
Settings.RollbackOnFailure = false 如果此值为 true,部署工具将在部署失败时销毁堆栈。

如何更新现有部署的配置#

您可使用部署工具的 updateStack 功能修改现有部署的 CloudFormation 配置。此配置 (应用程序的环境) 包含您的应用程序在其上运行并有权访问的云资源。updateStack 功能不会更改或重新部署应用程序;它只会更新应用程序的环境。这样,updateStack 功能就能补充重新部署功能。重新部署为您提供了在不更改环境的情况下更新应用程序的方式。

您可能使用 updateStack 的情形有很多。例如,如果您使用单一实例模板来开发应用程序,当应用程序即将生产就绪时,您可更新其配置以使用负载均衡模板进行公开 Beta 测试或实时版本部署。在相关情形中,使用负载均衡配置的部署可通过修改一部分配置参数来进行优化 - 例如,通过增加受支持的 EC2 实例的最大数量或更改实例大小(比如从微型更改为大型)。您可使用部署工具的 updateStack 功能实现任一这些情形。

对于某些情形,您可能同时使用 /updateStack 选项和 /redeploy 选项,从而有效修改应用程序本身以及运行应用程序的环境。在某些情况下,此方法比仅仅执行常规部署更有效。例如,您可能更改环境以添加 Amazon S3 存储桶,然后更新应用程序以使用该存储桶。通过将 /updateStack/redeploy 相结合,您可实施这两种更改,同时让任何已配置的 Amazon EC2 实例保持正常运行。常规部署将导致所有环境被销毁并重新构建。

updateStack 功能只能通过部署工具提供。此功能不能通过 Visual Studio 中的部署向导提供。您可使用 updateStack 更新最初通过部署向导进行的部署,但反之则不可行。

更新部署的调用语法类似于新部署的语法。

awsdeploy /updateStack [other options] updatedConfigFile

当您尝试更新部署时,记住以下几点:

  • 您无法更新正在创建或销毁的部署。
  • 指定的配置文件使用的值必须与原始部署的 StackName 参数的值相同。
  • 您无法使用 updateStack 更改部署的区域。但是,您可以更改部署的可用区。
  • 如果您使用 updateStack 将部署从单一实例转换为负载均衡,则您的部署的终端节点必须更改。在单一实例情况下,终端节点指的是 Amazon EC2 实例。在负载均衡模板中,终端节点指的是 Elastic Load Balancing 负载均衡器(跨所有 EC2 实例分发计算负载的计算机)。因此,如果您要使用 CNAME 记录将域名与部署关联,则应更新 CNAME 记录,以便它指向负载均衡模板的负载均衡器。

部署工具通过调用 CloudFormation UpdateStack API 来实现 updateStack 功能。有关 CloudFormation 的更多信息,请转到 CloudFormation 用户指南