

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

# 建立 Elastic Beanstalk 應用程式原始碼套件
<a name="applications-sourcebundle"></a>

本主題說明如何在原始碼套件中將您的應用程式原始碼檔案上傳至 Elastic Beanstalk。它說明了原始碼套件的需求、結構，以及建立原始碼套件的方法。

當您使用 AWS Elastic Beanstalk 主控台部署新的應用程式或應用程式版本時，您需要在*原始碼套件*中上傳應用程式的檔案。您的原始碼套件必須符合下列要求：
+ 內含單一 `ZIP` 檔案或 `WAR` 檔案 (您可於 `WAR` 檔案納入多個 `ZIP` 檔案)
+ 不超過 500 MB
+ 不含父資料夾或最上層目錄 (可包含子目錄)

若您想要部署會定期處理背景任務的工作者應用程式，您的應用程式原始碼套件務必納入 `cron.yaml` 檔案。如需詳細資訊，請參閱[周期性任務](using-features-managing-env-tiers.md#worker-periodictasks)。

如果您使用 Elastic Beanstalk 命令列界面 (EB CLI)、 AWS Toolkit for Eclipse 或 AWS Toolkit for Visual Studio 部署應用程式，ZIP 或 WAR 檔案會自動正確建構。如需詳細資訊，請參閱[設定 EB 命令列界面 (EB CLI) 以管理 Elastic Beanstalk](eb-cli3.md)、[使用 Elastic Beanstalk 部署 Java 應用程式](create_deploy_Java.md)及[的 AWS 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，您可以使用 中包含的部署工具 AWS Toolkit for Visual Studio ，將 .NET 應用程式部署至 Elastic Beanstalk。如需詳細資訊，請參閱[使用部署工具在 .NET 中 AWS 部署 Elastic Beanstalk 應用程式](deploy_NET_standalone_tool.md)。

若您需要手動建立 .NET 應用程式的原始碼套件，您無法直接建立內含專案目錄的 `ZIP` 檔案。您必須為您的專案建立能夠部署至 Elastic Beanstalk 的 Web 部署套件。建立部署套件可採用多種方法：
+ 使用 Visual Studio 內的 **Publish Web (發佈 Web)** 精靈，藉此建立部署套件。如需詳細資訊，請前往 [How to: Create a Web Deployment Package in Visual Studio](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 部署工具來建立部署套件。如需詳細資訊，請前往 [Packaging and Restoring a Web site](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>

建議您先於本機測試來源套件，之後再上傳至 Amazon Elastic Beanstalk。由於 Elastic Beanstalk 基本上使用命令列來擷取檔案，因此建議從命令列進行測試，而不要使用 GUI 工具。

請確認解壓縮的檔案與封存檔出現在相同的資料夾，而非在新的最上層資料夾或目錄。