本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
部署資訊清單結構描述參考
部署資訊清單是 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 上執行。對於需要 32 位元相容性的舊版應用程式,
true
請將 設定為 。 managedPipelineMode
(選用)-
類型:字串
有效值:"Integrated"、"Classic"
指定應用程式集區的請求處理模式。
managedRuntimeVersion
(選用)-
類型:字串
有效值:「無受管程式碼」、「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
(選用)-
類型:整數
觸發工作者程序回收的虛擬記憶體數量 (以 KB 為單位)。
privateMemory
(選用)-
類型:整數
觸發工作者程序回收的私有記憶體量 (以 KB 為單位)。
部署類型
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 檔案) 路徑。此套件包含要部署的應用程式檔案。
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 應用程式的目錄路徑。
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"
}
}
}