

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

# 创建 Elastic Beanstalk 应用程序源包
<a name="applications-sourcebundle"></a>

本主题介绍如何将应用程序源文件上传到源包中的 Elastic Beanstalk。它介绍了源包的要求、结构以及创建源包的方法。

使用 Amazon Elastic Beanstalk 控制台部署新应用程序或应用程序版本时，需要将该应用程序的文件上传到*源包*中。源包必须符合以下要求：
+ 由单个 `ZIP` 文件或 `WAR` 文件组成 (您可以在 `WAR` 文件中包含多个 `ZIP` 文件)
+ 不超过 500 MB
+ 不包含父文件夹或顶级目录 (可包含子目录)

如果您要部署处理定期后台任务的工作线程应用程序，您的应用程序源包还必须包括一个 `cron.yaml` 文件。有关更多信息，请参阅 [定期任务](using-features-managing-env-tiers.md#worker-periodictasks)。

如果您使用 Elastic Beanstalk 命令行界面 (EB CLI)、适用于 Eclipse 的工具包或适用 Amazon 于 Visual Studio 的工具 Amazon 包来部署应用程序，则会自动正确构建 ZIP 或 WAR 文件。有关更多信息，请参阅 [设置 EB 命令行界面（EB CLI）来管理 Elastic Beanstalk](eb-cli3.md)、[使用 Elastic Beanstalk 部署 Java 应用程序](create_deploy_Java.md) 和 [的 Amazon Toolkit for Visual Studio](dotnet-toolkit.md)。

**Topics**
+ [从命令行创建源包](#using-features.deployment.source.commandline)
+ [使用 Git 创建源包](#using-features.deployment.source.git)
+ [在 Mac OS X Finder 或 Windows 资源管理器中压缩文件](#using-features.deployment.source.gui)
+ [创建 .NET 应用程序的源包](#using-features.deployment.source.dotnet)
+ [测试源包](#using-features.deployment.source.test)

## 从命令行创建源包
<a name="using-features.deployment.source.commandline"></a>

使用 `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 [配置文件](ebextensions.md)以及以句点开头的其他文件和文件夹。

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

```
~/myapp$ jar -cvf {{myapp}}.war .
```

上述命令包含的隐藏文件可能会不必要地增加源包的大小。若要获得更多控制，可使用更详细的文件模式，或[用 Git 创建源包](#using-features.deployment.source.git)。

## 使用 Git 创建源包
<a name="using-features.deployment.source.git"></a>

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

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

`git archive` 仅包含 Git 中存储的文件，不包含被忽略的文件和 Git 文件。这有助于使源包尽可能小。有关更多信息，请参阅 [git-archive 手册页面](http://git-scm.com/docs/git-archive)。

## 在 Mac OS X Finder 或 Windows 资源管理器中压缩文件
<a name="using-features.deployment.source.gui"></a>

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

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

**Example**  
假设您有一个标记为 `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` 段)。  
本主题均采用此示例文件结构说明如何压缩文件。

## 创建 .NET 应用程序的源包
<a name="using-features.deployment.source.dotnet"></a>

如果您使用 Visual Studio，则可以使用中包含的部署工具将.NET 应用程序部署 Amazon Toolkit for Visual Studio 到 Elastic Beanstalk。有关更多信息，请参阅 [使用部署工具在.NET 中部署 Elastic Beanstalk 应用程序 Amazon](deploy_NET_standalone_tool.md)。

如果需要手动为 .NET 应用程序创建源包，您不能直接创建一个包含项目目录的 `ZIP` 文件。您必须为适合部署到 Elastic Beanstalk 的项目创建一个 Web 部署包。可以使用几种方法创建部署包：
+ 使用 Visual Studio 中的 **Publish Web (发布 Web)** 向导创建部署包。有关更多信息，请转至[如何：在 Visual Studio 中创建 Web 部署程序包](http://msdn.microsoft.com/en-us/library/dd465323.aspx)。
**重要**  
创建 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 部署工具创建部署包。有关更多信息，请参阅[打包和还原网站](http://www.iis.net/learn/publish/using-web-deploy/packaging-and-restoring-a-web-site)。
**重要**  
`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
```

## 测试源包
<a name="using-features.deployment.source.test"></a>

您可能需要先本地对源包进行测试，然后再将其上传到 Elastic Beanstalk。由于 Elastic Beanstalk 基本上使用命令行提取文件，因此最好是从命令行（而不是使用 GUI 工具）进行测试。

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