本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
部署清单架构参考
部署清单是一个 JSON 文件,它定义了 Elastic Beanstalk 应如何部署和配置你的 Windows 应用程序。本节为清单架构中所有支持的属性和配置选项提供了全面的参考。
清单结构
部署清单遵循具有以下顶级结构的特定 JSON 架构:
例 基本清单结构
{
"manifestVersion": 1,
"skipIISReset": false,
"iisConfig": {
"appPools": [...]
},
"deployments": {
"msDeploy": [...],
"aspNetCoreWeb": [...],
"custom": [...]
}
}
顶级属性
manifestVersion
(必需)-
类型:数字
默认值:1
有效值:1
指定清单架构的版本。当前,仅支持版本 1。
skipIISReset
(可选)-
类型:布尔值
原定设置值:false
控制在应用程序部署期间是否重置 IIS。此标志同时影响部署类型
msDeploy
和aspNetCoreWeb
部署类型。行为:
-
未指定或
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
(必需)-
类型:对象
包含您的应用程序的部署配置。此对象可以包括
msDeploy
aspNetCoreWeb
、和custom
部署类型。 iisConfig
(可选)-
类型:对象
定义要在部署应用程序之前应用的 IIS 配置设置。目前支持应用程序池配置。
IIS 配置
该iisConfig
部分允许您在部署应用程序之前配置 IIS 设置。这对于设置具有特定配置的应用程序池特别有用。
应用程序池
应用程序池在应用程序之间提供隔离,并允许您为应用程序组配置运行时设置。
例 应用程序池配置
{
"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 上运行。
true
对于需要 32 位兼容性的旧版应用程序,请将其设置为。 managedPipelineMode
(可选)-
类型:字符串
有效值:“集成”、“经典”
指定应用程序池的请求处理模式。
managedRuntimeVersion
(可选)-
类型:字符串
有效值:“无托管代码”、“v2.0”、“v4.0”
指定应用程序池的.NET 框架版本。
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 Deploy (MSDeploy) 部署的传统.NET 框架应用程序。
例 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 文件)相对于清单文件的路径。此捆绑包包含要部署的应用程序文件。
iisPath
(可选)-
类型:字符串
默认:“/”
IIS 中将部署应用程序的虚拟目录路径。使用 “/” 作为根路径,使用 “/api” 作为子目录。
appPool
(可选)-
类型:字符串
运行此应用程序的应用程序池的名称。
ASP.NET 核心部署
ASP.NET Core 部署专为.NET Core 和.NET 5+ 应用程序而设计。
例 ASP.NET 核心部署配置
{
"deployments": {
"aspNetCoreWeb": [
{
"name": "CoreAPI",
"description": "ASP.NET Core Web API",
"parameters": {
"appBundle": "coreapi.zip",
"iisPath": "/api",
"appPool": "CoreAppPool"
}
}
]
}
}
ASP.NET Core 部署使用与 MSDeploy 部署相同的属性结构,主要区别在于应用程序使用的运行时环境和托管模型。
ASP.NET 核心部署参数
appBundle
(必需)-
类型:字符串
相对于清单文件的应用程序包路径。这可以是 ZIP 存档,也可以是包含已发布的 ASP.NET Core 应用程序的目录路径。
iisPath
(可选)-
类型:字符串
默认:“/”
ASP.NET 核心应用程序在 IIS 中的虚拟目录路径。
appPool
(可选)-
类型:字符串
ASP.NET 核心应用程序的应用程序池。将针对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 和 aspNetCore Web)
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"
}
}
}