部署資訊清單結構描述參考 - 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 完全重新啟動並重新初始化所需的時間。

注意

使用 時skipIISResetRestartAppServer 操作會執行 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 設定。這對於設定具有特定組態的應用程式集區特別有用。

應用程式集區

應用程式集區可在應用程式之間提供隔離,並可讓您設定應用程式群組的執行時間設定。

範例 應用程式集區組態
{ "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" } } }