

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

# 自定义 Elastic Beanstalk 应用程序部署
自定义部署（传统）

本主题介绍 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 资源。