

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 自訂 Elastic Beanstalk 應用程式部署
<a name="deployment-beanstalk-custom"></a>

本主題說明 Elastic Beanstalk Microsoft Windows 容器的部署資訊清單如何支援自訂應用程式部署。

對於想要利用 Elastic Beanstalk 的強大功能來建立和管理 AWS 資源，但想要完全控制應用程式部署方式的進階使用者，自訂應用程式部署是一項強大的功能。對於自訂應用程式部署，您可以為 Elastic Beanstalk 執行的三個不同動作建立 Windows PowerShell 指令碼。啟動部署時會使用 安裝動作，從工具組或 Web 主控台呼叫 `RestartAppServer` API 時會使用重新啟動，並在發生新部署時解除安裝在先前的任何部署上叫用。

例如，當您的文件團隊撰寫了他們想要包含在部署中的靜態網站時，您可能有一個您想要部署的 ASP.NET 應用程式。您可以撰寫部署資訊清單來執行此操作，如下所示：

```
{
  "manifestVersion": 1,
  "deployments": {

    "msDeploy": [
      {
        "name": "app",
        "parameters": {
          "appBundle": "CoolApp.zip",
          "iisPath": "/"
        }
      }
    ],
    "custom": [
      {
        "name": "PowerShellDocs",
        "scripts": {
          "install": {
            "file": "install.ps1"
          },
          "restart": {
            "file": "restart.ps1"
          },
          "uninstall": {
            "file": "uninstall.ps1"
          }
        }
      }
    ]
  }
}
```

為每個動作列出的指令碼必須位於相對於部署資訊清單檔案的應用程式套件中。在此範例中，應用程式套件也會包含 documentation.zip 檔案，其中包含由您的文件團隊建立的靜態網站。

`install.ps1` 指令碼會擷取 zip 檔案並設定 IIS 路徑。

```
Add-Type -assembly "system.io.compression.filesystem"
[io.compression.zipfile]::ExtractToDirectory('./documentation.zip', 'c:\inetpub\wwwroot\documentation')

powershell.exe -Command {New-WebApplication -Name documentation -PhysicalPath  c:\inetpub\wwwroot\documentation -Force}
```

由於您的應用程式正在 IIS 中執行，重新啟動動作會叫用 IIS 重設。

```
iisreset /timeout:1
```

對於解除安裝指令碼，請務必清除安裝階段期間使用的所有設定和檔案。如此一來，在新版本的安裝階段，您就可以避免與先前的部署發生衝突。在此範例中，您需要移除靜態網站的 IIS 應用程式，並移除網站檔案。

```
powershell.exe -Command {Remove-WebApplication -Name documentation}
Remove-Item -Recurse -Force 'c:\inetpub\wwwroot\documentation'
```

透過這些指令碼檔案和應用程式套件中包含的 documentation.zip 檔案，部署會建立 ASP.NET 應用程式，然後部署文件網站。

在此範例中，我們選擇一個簡單的範例來部署簡單的靜態網站，但使用自訂應用程式部署，您可以部署任何類型的應用程式，並讓 Elastic Beanstalk 管理其 AWS 資源。