部署清单架构参考 - Amazon Elastic Beanstalk
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

部署清单架构参考

部署清单是一个 JSON 文件,用于定义 Elastic Beanstalk 应如何部署和配置您的 Windows 应用程序。本节为清单架构中所有支持的属性和配置选项提供全面的参考。

清单结构

部署清单遵循具有以下顶级结构的特定 JSON 架构:

例基本清单结构
{ "manifestVersion": 1, "skipIISReset": false, "iisConfig": { "websites": [...], "appPools": [...] }, "deployments": { "msDeploy": [...], "aspNetCoreWeb": [...], "custom": [...] } }

顶级属性

manifestVersion(必需)

类型:数字

默认值:-1

有效值:1

指定清单架构的版本。目前仅支持版本 1。

skipIISReset(可选)

类型:布尔值

原定设置值:false

控制是否在应用程序部署期间重置 IIS。此标志同时影响 msDeployaspNetCoreWeb 部署类型。

:Behavior

  • 未指定或 false(默认):在安装、卸载和更新操作期间执行 IIS 重置。这是传统行为。

  • true部署操作期间跳过 IIS 重置。

优点:

  • 减少停机时间:可减少部署期间应用程序的服务中断时间。

  • 加快部署:省去了完全重启 IIS 并进行重新初始化所需的时间。

注意

使用 skipIISReset 时,无论此标志设置如何,RestartAppServer 操作都会执行 IIS 重置。

示例:

{ "manifestVersion": 1, "skipIISReset": true, "deployments": { "aspNetCoreWeb": [ { "name": "my-dotnet-core-app", "parameters": { "archive": "dotnet-core-app.zip", "iisPath": "/" } } ] } }
deployments(必需)

类型:对象

包含应用程序的部署配置。此对象可包括 msDeployaspNetCoreWebcustom 部署类型。

iisConfig(可选)

类型:对象

定义要在部署应用程序之前应用的 IIS 配置设置。同时支持网站和应用程序池配置。

IIS 配置

iisConfig 部分可让您在部署应用程序之前配置 IIS 设置。这包括使用特定配置设置应用程序池,以及使用自定义绑定配置 IIS 网站。

IIS 网站

您可以通过 IIS 网站,在部署应用程序之前配置自定义网站设置,包括物理路径和网络绑定。

有关创建不同 IIS 网站的重要注意事项
  • 网站设置顺序:网站按照其在 websites 数组中出现的顺序进行配置。平台按顺序处理每个网站配置,因此,如果网站之间存在依赖关系,请确保排序正确。

  • 防火墙和端口访问:仅端口 80 会通过默认 Elastic Beanstalk Windows 防火墙配置自动公开。如果将网站配置为使用非标准端口,则必须通过 ebextensions 或自定义部署脚本来定义自定义防火墙规则,从而允许这些端口的外部访问。

例网站配置
{ "iisConfig": { "websites": [ { "name": "MyCustomSite", "physicalPath": "C:\inetpub\wwwroot\mysite", "bindings": [ { "protocol": "http", "port": 8080, "hostName": "mysite.local" }, { "protocol": "https", "port": 8443 } ] } ] } }
网站属性
name(必需)

类型:字符串

IIS 网站的名称。此名称用于在 IIS 管理器中标识网站,并且在 IIS 配置中必须是唯一名称。

physicalPath(必需)

类型:字符串

存储网站文件的服务器上的物理路径。此路径必须可供 IIS 工作线程访问。

bindings(必需)

类型:数组

项目最少为 1。

一系列绑定配置,用于定义网站如何响应网络请求。每个绑定都会指定协议、端口和可选的主机名。

网站绑定

网站绑定用于定义 IIS 网站将在其中侦听传入请求的网络端点。

protocol(必需)

类型:字符串

有效值:“http”、“https”

用于绑定的协议。

port(必需)

类型:整数

有效范围:1-65535

网站用于侦听请求的端口号。

hostName(可选)

类型:字符串

绑定的主机名(域名)。

应用程序池

应用程序池可在应用程序之间提供隔离,并允许您为应用程序组配置运行时设置。

例应用程序池配置
{ "iisConfig": { "appPools": [ { "name": "MyAppPool", "enable32Bit": false, "managedPipelineMode": "Integrated", "managedRuntimeVersion": "v4.0", "queueLength": 1000, "cpu": { "limitPercentage": 80, "limitAction": "Throttle", "limitMonitoringInterval": 5 }, "recycling": { "regularTimeInterval": 1440, "requestLimit": 10000, "memory": 1048576, "privateMemory": 524288 } } ] } }
应用程序池属性
name(必需)

类型:字符串

应用程序池名称。此名称用于在部署配置中引用池。

enable32Bit(可选)

类型:布尔值

允许 32 位应用程序在 64 位版本的 Windows 上运行。对于需要 32 位兼容性的旧版应用程序,请将其设置为 true

managedPipelineMode(可选)

类型:字符串

有效值:“Integrated”、“Classic”

指定应用程序池的请求处理模式。

managedRuntimeVersion(可选)

类型:字符串

有效值:“No Managed Code”、“v2.0”、“v4.0”

指定应用程序池适用的 .NET Framework 版本。

queueLength(可选)

类型:整数

HTTP.sys 在拒绝其他请求之前,为应用程序池列出队列的最大请求数。

CPU 配置

cpu 对象为应用程序池配置 CPU 用量限制和监控。

limitPercentage(可选)

类型:数字

应用程序池中工作线程可以消耗的 CPU 时间的最大百分比。

limitAction(可选)

类型:字符串

有效值:“NoAction”、“KillW3wp”、“Throttle”、“ThrottleUnderLoad”

达到 CPU 限制时采取的操作。

limitMonitoringInterval(可选)

类型:数字

CPU 监控和节流限制的重置周期(以分钟为单位)。

回收配置

recycling 对象配置何时以及如何回收应用程序池工作线程。

regularTimeInterval(可选)

类型:整数

应用程序池进行回收的时间间隔(以分钟为单位)。设置为 0 可禁用基于时间的回收功能。

requestLimit(可选)

类型:整数

应用程序池在回收之前处理的最大请求数。

memory(可选)

类型:整数

触发工作线程回收的虚拟内存量(以千字节为单位)。

privateMemory(可选)

类型:整数

触发工作线程回收的私有内存量(以千字节为单位)。

部署类型

deployments 对象包含适用于不同应用程序类型的部署配置数组。每种部署类型都有特定的属性和使用案例。

MSDeploy 部署

MSDeploy 部署用于可使用 Web 部署(MSDeploy)进行部署的传统 .NET Framework 应用程序。

例 MSDeploy 部署配置
{ "deployments": { "msDeploy": [ { "name": "WebApp", "description": "Main web application", "parameters": { "appBundle": "webapp.zip", "iisPath": "/", "appPool": "DefaultAppPool" } } ] } }
MSDeploy 部署属性
name(必需)

类型:字符串

部署的唯一名称。此名称在清单中的所有部署中必须是唯一的。

description(可选)

类型:字符串

人类可读的部署描述。

parameters(必需)

类型:对象

MSDeploy 操作的配置参数。

scripts(可选)

类型:对象

PowerShell 脚本,可在部署生命周期的各个阶段运行。

MSDeploy 参数

appBundle(必需)

类型:字符串

应用程序捆绑包(ZIP 文件)相对于清单文件的路径。此捆绑包内含要部署的应用程序文件。

iisWebSite(可选)

类型:字符串

默认:“Default Web Site”

要在其中部署应用程序的 IIS 网站。默认情况下,应用程序部署到“Default Web Site”。或者,您可以指定不同的网站名称,例如在 iisConfig.websites 部分中配置的网站名称。

iisPath(可选)

类型:字符串

默认:/

将在其中部署应用程序的 IIS 中的虚拟目录路径。使用“/”用于根路径,使用“/api”用于子目录。

appPool(可选)

类型:字符串

运行此应用程序的应用程序池名称。

ASP.NET Core 部署

ASP.NET Core 部署专为 .NET Core 和.NET 5+ 应用程序而设计。

例 ASP.NET Core 部署配置
{ "deployments": { "aspNetCoreWeb": [ { "name": "CoreAPI", "description": "ASP.NET Core Web API", "parameters": { "appBundle": "coreapi.zip", "iisPath": "/api", "appPool": "CoreAppPool" } } ] } }

ASP.NET Core 部署使用的属性结构与 MSDeploy 部署相同,主要区别在于用于应用程序的运行时环境和托管模型。

ASP.NET Core 部署参数
appBundle(必需)

类型:字符串

应用程序捆绑包相对于清单文件的路径。这可以是 ZIP 存档,也可以是包含已发布 ASP.NET Core 应用程序的目录路径。

iisWebSite(可选)

类型:字符串

默认:“Default Web Site”

要在其中部署 ASP.NET Core 应用程序的 IIS 网站。默认情况下,应用程序部署到“Default Web Site”。或者,您可以指定不同的网站名称,例如在 iisConfig.websites 部分中配置的网站名称。

iisPath(可选)

类型:字符串

默认:/

ASP.NET Core 应用程序在 IIS 中的虚拟目录路径。

appPool(可选)

类型:字符串

ASP.NET Core 应用程序的应用程序池。系统将针对 ASP.NET Core 托管对池进行适当配置。

自定义部署

自定义部署可通过 PowerShell 脚本提供对部署过程的完全控制。此部署类型对于需要自定义安装、配置或部署逻辑的复杂场景而言,非常有用。

例自定义部署配置
{ "deployments": { "custom": [ { "name": "CustomService", "description": "Custom Windows service deployment", "architecture": 32, "scripts": { "install": { "file": "install-service.ps1" }, "restart": { "file": "restart-service.ps1" }, "uninstall": { "file": "uninstall-service.ps1", "ignoreErrors": true } } } ] } }
自定义部署属性
name(必需)

类型:字符串

自定义部署的唯一名称。

description(可选)

类型:字符串

自定义部署的描述。

architecture(可选)

类型:整数

默认值:32

有效值:32、64

Powershell 脚本执行模式的架构规范

scripts(必需)

类型:对象

用于定义部署行为的 PowerShell 脚本。与其他部署类型相比,自定义部署支持其他脚本类型。

部署脚本

部署脚本是在部署生命周期的特定时间点运行的 PowerShell 脚本。不同的部署类型支持不同的脚本事件集。

脚本事件

可根据部署类型,使用以下脚本事件:

标准部署脚本(msDeploy和 aspNetCoreWeb)
preInstall

在安装或更新应用程序前运行。

postInstall

在安装或更新应用程序后运行。

preRestart

在应用程序重新启动前运行。

postRestart

在应用程序重新启动后运行。

preUninstall

在卸载应用程序前运行。

postUninstall

在卸载应用程序后运行。

自定义部署脚本(仅限自定义部署)
install

自定义部署的主安装脚本。此脚本负责安装应用程序或服务。

restart

用于重新启动应用程序或服务的脚本。在重新启动环境时调用。

uninstall

用于卸载应用程序或服务的脚本。在环境终止或删除应用程序期间调用。

脚本属性

每个脚本都定义为具有以下属性的对象:

file(必需)

类型:字符串

PowerShell 脚本文件相对于清单文件的路径。脚本扩展名应是 .ps1

ignoreErrors(可选)

类型:布尔值

原定设置值:false

如果设置为 true,即使脚本失败,部署也会继续进行。可将其用于非关键脚本或清理操作。

例脚本配置示例
{ "scripts": { "preInstall": { "file": "backup-config.ps1", "ignoreErrors": true }, "postInstall": { "file": "configure-app.ps1" } } }