部署清单架构参考 - AWS Elastic Beanstalk

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

部署清单架构参考

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

清单结构

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

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

顶级属性

manifestVersion(必需)

类型:数字

默认值:1

有效值:1

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

skipIISReset(可选)

类型:布尔值

原定设置值:false

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

行为:

  • 未指定或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(必需)

类型:对象

包含您的应用程序的部署配置。此对象可以包括msDeployaspNetCoreWeb、和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" } } }