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

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

部署清单架构参考

部署清单是一个 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" } } }