AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

创建应用程序源包

使用 AWS Elastic Beanstalk 控制台部署新应用程序或应用程序版本时,需要上传源包。源包必须符合以下要求:

  • 由单个 ZIP 文件或 WAR 文件组成 (您可以在 WAR 文件中包含多个 ZIP 文件)

  • 不超过 512 MB

  • 不包含父文件夹或顶级目录 (可包含子目录)

如果您要部署处理定期后台任务的工作线程应用程序,您的应用程序源包还必须包括一个 cron.yaml 文件。有关更多信息,请参阅 定期任务

如果您使用 Elastic Beanstalk 命令行界面 (EB CLI)、AWS Toolkit for Eclipse 或 AWS Toolkit for Visual Studio 部署应用程序,则会自动正确构建 ZIP 或 WAR 文件。有关更多信息,请参阅 Elastic Beanstalk 命令行界面 (EB CLI)在 AWS Elastic Beanstalk 上创建和部署 Java 应用程序AWS Toolkit for Visual Studio

从命令行创建源包

使用 zip 命令创建源包。要包含隐藏的文件和文件夹,请使用如下所示的模式。

~/myapp$ zip ../myapp.zip -r * .[^.]* adding: app.js (deflated 63%) adding: index.js (deflated 44%) adding: manual.js (deflated 64%) adding: package.json (deflated 40%) adding: restify.js (deflated 85%) adding: .ebextensions/ (stored 0%) adding: .ebextensions/xray.config (stored 0%)

这可确保存档中包含 Elastic Beanstalk 配置文件以及以句点开头的其他文件和文件夹。

对于 Tomcat Web 应用程序,请使用 jar 创建 Web 存档。

~/myapp$ jar -cvf myapp.war .

上述命令包含的隐藏文件可能会不必要地增加源包的大小。若要获得更多控制,可使用更详细的文件模式,或用 Git 创建源包

使用 Git 创建源包

如果使用 Git 管理应用程序源代码,请使用 git archive 命令创建源包。

$ git archive -v -o myapp.zip --format=zip HEAD

git archive 仅包含 Git 中存储的文件,不包含被忽略的文件和 Git 文件。这有助于使源包尽可能小。有关更多信息,请参阅 git-archive 手册页面

在 Mac OS X Finder 或 Windows 资源管理器中压缩文件

在 Mac OS X Finder 或 Windows 资源管理器中创建 ZIP 文件时,请确保压缩这些文件和子文件夹本身,而不是压缩父文件夹。

注意

Mac OS X 和基于 Linux 的操作系统上的图形用户界面 (GUI) 不显示名称以句点 (.) 开头的文件和文件夹。如果 ZIP 文件必须包含隐藏文件夹 (如 .ebextensions),应使用命令行而不是 GUI 来压缩应用程序。有关在 Mac OS X 或基于 Linux 的操作系统上创建 ZIP 文件的命令行过程,请参阅从命令行创建源包

假设您有一个标记为 myapp 的 Python 项目文件夹,其中包含以下文件和子文件夹:

myapplication.py README.md static/ static/css static/css/styles.css static/img static/img/favicon.ico static/img/logo.png templates/ templates/base.html templates/index.html

如上面的要求列表所述,源包在压缩时必须不包含父文件夹,因此其解压缩后的结构不包含额外的顶级目录。在此示例中,解压缩文件时不应创建 myapp 文件夹 (或在命令行处,不应向文件路径添加 myapp 段)。

本主题均采用此示例文件结构说明如何压缩文件。

在 Mac OS X Finder 中压缩文件

  1. 打开您的顶级项目文件夹,然后选择其中的所有文件和子文件夹。请勿选择顶级文件夹本身。

    
            在 Mac OS X Finder 中选择的文件
  2. 右键单击所选文件,然后选择 Compress X items (压缩 X 个项目),其中 X 是所选的文件和子文件夹数。

    
            在 Mac OS X Finder 中压缩文件

在 Windows 资源管理器中压缩文件

  1. 打开您的顶级项目文件夹,然后选择其中的所有文件和子文件夹。请勿选择顶级文件夹本身。

    
            在 Windows 资源管理器中选择的文件
  2. 右键单击所选文件,选择 Send to (发送到),然后选择 Compressed (zipped) folder (压缩的文件夹)

    
            在 Windows 资源管理器中压缩文件

创建 .NET 应用程序的源包

如果使用 Visual Studio,则可使用 AWS Toolkit for Visual Studio 中包含的部署工具将 .NET 应用程序部署到 Elastic Beanstalk。有关更多信息,请参阅 使用部署工具在 NET 中部署 Elastic Beanstalk 应用程序

如果需要手动为 .NET 应用程序创建源包,您不能直接创建一个包含项目目录的 ZIP 文件。您必须为适合部署到 Elastic Beanstalk 的项目创建一个 Web 部署包。可以使用几种方法创建部署包:

  • 使用 Visual Studio 中的 Publish Web (发布 Web) 向导创建部署包。有关更多信息,请转至 如何:在 Visual Studio 中创建 Web 部署程序包

    重要

    创建 Web 部署包时,Site name (网站名称) 必须以 Default Web Site 开头。

  • 如果是 .NET 项目,则可以使用 msbuild 命令创建部署包,如下例所示。

    重要

    DeployIisAppPath 参数必须以 Default Web Site 开头。

    C:/> msbuild <web_app>.csproj /t:Package /p:DeployIisAppPath="Default Web Site"
  • 如果是网站项目,则可以使用 IIS Web 部署工具创建部署包。有关更多信息,请参阅打包和还原网站

    重要

    apphostconfig 参数必须以 Default Web Site 开头。

如果您要部署多个应用程序或 ASP.NET Core 应用程序,请将 .ebextensions 文件夹放在源包的根目录中,与应用程序包和清单文件并排放置:

~/workspace/source-bundle/ |-- .ebextensions | |-- environmentvariables.config | `-- healthcheckurl.config |-- AspNetCore101HelloWorld.zip |-- AspNetCoreHelloWorld.zip |-- aws-windows-deployment-manifest.json `-- VS2015AspNetWebApiApp.zip

测试源包

您可能要在将源包上传到 Elastic Beanstalk 之前,在本地对其进行测试。因为 Elastic Beanstalk 基本上使用命令行提取文件,所以最好是从命令行 (而不是使用 GUI 工具) 进行测试。

在 Mac OS X 或 Linux 中测试文件提取

  1. 打开终端窗口 (Mac OS X) 或连接到 Linux 服务器。导航到包含源包的目录。

  2. 使用 unziptar xf 命令解压缩存档。

  3. 确保解压缩的文件出现在与存档本身相同的文件夹中,而不是出现在新的顶级文件夹或目录中。

    注意

    如果您使用 Mac OS X Finder 解压缩存档,则会创建新的顶级文件夹 (无论您如何构建存档本身)。为获得最佳结果,请使用命令行。

在 Windows 中测试文件提取

  1. 下载或安装可用于通过命令行提取压缩文件的程序。例如,您可以从 http://stahlforce.com/dev/index.php?tool=zipunzip 下载免费的 unzip.exe 程序。

  2. 如果需要,请将可执行文件复制到包含源包的目录。如果您安装了一个系统范围工具,则可以跳过此步骤。

  3. 使用相应的命令解压缩存档。如果您使用步骤 1 中的链接下载了 unzip.exe,则命令为 unzip <archive-name>

  4. 确保解压缩的文件出现在与存档本身相同的文件夹中,而不是出现在新的顶级文件夹或目录中。