

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

# 管理 Elastic Beanstalk 應用程式
<a name="applications"></a>

本章說明如何管理和設定 Elastic Beanstalk 應用程式。使用 的第一步 AWS Elastic Beanstalk 是建立應用程式，其代表您的 Web 應用程式 AWS。在 Elastic Beanstalk 中，應用程式可做為容器，用於容納執行 Web 應用程式的環境、Web 應用程式原始碼版本、已儲存組態、日誌和其他您使用 Elastic Beanstalk 時建立的成品。

**建立應用程式**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇 **Applications** (應用程式)，然後選擇 **Create application** (建立應用程式)。

1. 使用螢幕上的表單提供應用程式名稱。

1. （選用） 提供描述，並新增標籤索引鍵和值。

1. 選擇**建立**。

建立應用程式後，主控台會提示您為其建立環境。如需所有可用選項的詳細資訊，請參閱[建立 Elastic Beanstalk 環境](using-features.environments.md)。

您不再需要某個應用程式，您可以刪除它。

**警告**  
刪除應用程式會終止所有相關聯的環境，而且會刪除屬於該應用程式的所有應用程式版本和已儲存組態。

**刪除 應用程式**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇 **Applications (應用程式)**，然後在清單中選取應用程式。

1. 選擇 **Actions (動作)**，然後選擇 **Delete application (刪除應用程式)**。

**Topics**
+ [Elastic Beanstalk 應用程式管理主控台](applications-console.md)
+ [管理應用程式版本](applications-versions.md)
+ [建立 Elastic Beanstalk 應用程式原始碼套件](applications-sourcebundle.md)
+ [搭配 使用 EB CLI AWS CodeBuild](eb-cli-codebuild.md)
+ [標記應用程式](applications-tagging.md)
+ [標記 Elastic Beanstalk 應用程式資源](applications-tagging-resources.md)

# Elastic Beanstalk 應用程式管理主控台
<a name="applications-console"></a>

本主題說明如何使用 AWS Elastic Beanstalk 主控台來管理應用程式、應用程式版本和已儲存的組態。

**若要使用應用程式管理主控台**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇 **Applications** (應用程式)，然後在清單上選取應用程式名稱。

   應用程式概觀頁面會顯示一份清單，其中包含與應用程式相關之所有環境的概觀。

1. 您有幾種方法可以繼續：

   1. 從**動作**下拉式功能表中，您可以選擇其中一個應用程式管理動作：**建立環境**、**刪除應用程式**、**檢視應用程式版本**、**檢視儲存的組態**、**還原終止的環境**。

      若要在此應用程式中啟動環境，您可以直接選擇**建立環境**。如需詳細資訊，請參閱[建立 Elastic Beanstalk 環境](using-features.environments.md)。

   1. 此頁面會列出部署到 環境之應用程式旁邊的環境名稱。選擇環境名稱，前往該環境的[環境管理主控台](environments-console.md)，您可在其中設定、監控或管理此環境。

   1. 當您從清單中選擇應用程式時，左側導覽窗格會列出應用程式。
      +  選擇導覽窗格中應用程式名稱後的 **Application versions (應用程式版本)**，以檢視和管理應用程式的應用程式版本。

        應用程式版本是您應用程式程式碼的上傳版本。您可上傳新版本、將現有的版本部署到應用程式的任何環境，或刪除舊版本。如需詳細資訊，請參閱[管理應用程式版本](applications-versions.md)。
      +  選擇導覽窗格中應用程式名稱後 **Saved configurations (已儲存的組態)**，以檢視和管理從執行環境儲存的組態。

        儲存的組態是一組設定，可用來將環境的設定恢復到之前的狀態，或建立具有相同設定的環境。如需更多資訊，請參閱[使用 Elastic Beanstalk 已儲存組態](environment-configuration-savedconfig.md)。

# 管理應用程式版本
<a name="applications-versions"></a>

本主題說明應用程式版本，以及如何建立和管理它們。

只要您上傳原始程式碼，Elastic Beanstalk 就會建立一個應用程式版本。當您使用[環境管理主控台](environments-console.md)或 [EB CLI](eb-cli3.md) 建立環境或上傳並部署程式碼時，通常就會建立應用程式版本。Elastic Beanstalk 會根據應用程式的生命週期政策並在您刪除應用程式時刪除這些應用程式版本。如需關於應用程式生命週期政策的詳細資訊，請參閱 [進行應用程式版本生命週期的設定](applications-lifecycle.md)。

您亦可上傳原始碼套件，且無須於[應用程式管理主控台](applications-console.md)或使用 EB CLI 命令 **[**eb appversion**](eb3-appversion.md)** 進行部署。Elastic Beanstalk 將原始碼套件存放於 Amazon Simple Storage Service (Amazon S3)，且不會自動刪除這些套件。

您可以在建立時，將標籤套用至應用程式版本，並編輯現有應用程式版本的標籤。如需詳細資訊，請參閱[標記應用程式版本](applications-versions-tagging.md)。

## 建立應用程式版本
<a name="applications-versions.creating"></a>

您也可以使用 EB CLI 建立新的應用程式版本。如需詳細資訊，請參閱 *EB CLI 命令*一章中的 [**eb appversion**](eb3-appversion.md)。

**注意**  
您的應用程式將隨時間累積許多應用程式版本。為了節省儲存空間並避免達到[應用程式版本配額](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_elastic_beanstalk)，建議您刪除不再需要的應用程式版本。

您在下列程序中指定的檔案與您的應用程式相關聯。您可將應用程式版本部署至新的或現有環境。

**建立新的應用程式版本**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇 **Applications** (應用程式)，然後在清單上選取應用程式名稱。

1. 在導覽窗格中，找到應用程式名稱並選擇 **Application versions (應用程式版本)**。

1. 選擇**上傳**。使用畫面顯示表單來上傳應用程式的[原始碼套件](applications-sourcebundle.md)。
**注意**  
原始碼套件的檔案大小上限為 500 MB。

1. 您可選擇性地提供簡短描述，並新增標籤索引鍵和值。

1. 選擇**上傳**。

## 刪除應用程式版本
<a name="applications-versions.deleting"></a>

您也可以使用 EB CLI 刪除應用程式版本。如需詳細資訊，請參閱 *EB CLI 命令*一章中的 [**eb appversion**](eb3-appversion.md)。

**注意**  
刪除應用程式版本不會影響目前執行該版本的環境。

您也可以設定應用程式版本生命週期設定，將 Elastic Beanstalk 設定為會自動刪除舊版本。如果您設定這些生命週期設定，將在您建立新的應用程式版本時套用。例如，若您設定應用程式版本的數量上限為 25 個，在您上傳第 26 個版本時，Elastic Beanstalk 會刪除最舊的版本。若您將最大期限設定為 90 天，當您上傳新版本時，即會刪除任何早於 90 天的版本。如需詳細資訊，請參閱[進行應用程式版本生命週期的設定](applications-lifecycle.md)。

**刪除應用程式版本**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇 **Applications** (應用程式)，然後在清單上選取應用程式名稱。

1. 在導覽窗格中，找到應用程式名稱並選擇 **Application versions (應用程式版本)**。

1. 選取您要刪除的一或多個應用程式版本。

1. 選擇**動作**，然後選擇**刪除**。

1. (選用) 若要在您的 Amazon Simple Storage Service (Amazon S3) 儲存貯體內保留這些應用程式版本的應用程式原始碼套件，請清除 **Delete versions from Amazon S3 (從 Amazon S3 刪除版本)** 方塊。

1. 選擇 **刪除**。

如果您不選擇從 Amazon S3 刪除原始碼套件，Elastic Beanstalk 仍會從其記錄中刪除該版本。不過，原始碼套件會留存在您的 [Elastic Beanstalk 儲存貯體](AWSHowTo.S3.md)中。應用程式版本配額僅適用於 Elastic Beanstalk 追蹤的版本。因此，您可以刪除版本以保持在配額內，但將所有原始碼套件保留於 Amazon S3 中。

**注意**  
應用程式版本配額不適用於原始碼套件，但您可能仍須支付 Amazon S3 的費用，並在使用完成後仍繼續保留個人資訊。Elastic Beanstalk 永遠不會自動刪除原始碼套件。您應該在不需要時刪除原始碼套件。

# 進行應用程式版本生命週期的設定
<a name="applications-lifecycle"></a>

本主題說明 Elastic Beanstalk 適用於特定環境中應用程式版本的政策和配額，包括應用程式版本在環境中保留的時間長度。

每當您使用 Elastic Beanstalk 主控台或 EB CLI 上傳應用程式的新版本時，Elastic Beanstalk 都會建立一個[應用程式版本](applications-versions.md)。如果不刪除不再使用的版本，最終將會達到[應用程式版本配額](https://docs.aws.amazon.com/general/latest/gr/elasticbeanstalk.html#limits_elastic_beanstalk)，而無法建立該應用程式的新版本。

您可在應用程式套用*應用程式版本生命週期政策*，藉此避免達到配額。生命週期政策會告知 Elastic Beanstalk，讓 Elastic Beanstalk 刪除舊的應用程式版本，或是在應用程式版本總數超過指定的數字時，刪除應用程式的版本。

每當您建立新的應用程式版本時，Elastic Beanstalk 都會套用應用程式的生命週期政策，並在每次套用生命週期政策時，刪除最多 100 個版本。Elastic Beanstalk 會先刪除舊版本再建立新版本，而且不會將新版本計入政策所定義的版本數上限。

Elastic Beanstalk 不會刪除環境目前正在使用的應用程式版本，也不會刪除部署到此政策觸發前 10 週內終止的環境的應用程式版本。

應用程式版本數的配額，適用於同一區域中的所有應用程式。如果您有多個應用程式、請針對每個應用程式設定適合的生命週期政策，以避免達到配額。例如，若您在一個區域有 10 個應用程式，而應用程式版本配額為 1,000，請考慮將所有應用程式的生命週期政策設定為 99 個應用程式版本配額，或者個別設定每個應用程式的限制值，只要應用程式版本總和不超過 1,000。只有在應用程式版本建立成功時，Elastic Beanstalk 才會套用政策，因此若已達到配額，務必先手動刪除一些版本，再建立新版本。

Elastic Beanstalk 預設會在 Amazon S3 中保留應用程式版本的[原始碼套件](applications-sourcebundle.md)，以防止資料遺失。您可以刪除原始碼套件來節省儲存空間。

您可以透過 Elastic Beanstalk CLI 和 API 來進行生命週期設定。如需詳細資訊，請參閱 [**eb appversion**](eb3-appversion.md)、[CreateApplication](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateApplication.html) (使用 `ResourceLifecycleConfig`參數) 和 [UpdateApplicationResourceLifecycle](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateApplicationResourceLifecycle.html)。

## 在主控台中進行應用程式生命週期設定
<a name="applications-lifecycle-console"></a>

您可以在 Elastic Beanstalk 主控台指定生命週期的設定。

**指定您的應用程式生命週期設定**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇 **Applications** (應用程式)，然後在清單上選取應用程式名稱。

1. 在導覽窗格中，找到應用程式名稱並選擇 **Application versions (應用程式版本)**。

1. 選擇**設定**。

1. 使用畫面顯示表單來設定應用程式生命週期設定。

1. 選擇**儲存**。

在此設定頁面上，您可以執行下列動作。
+ 根據應用程式版本總數或應用程式版本的期限來設定生命週期設定。
+ 指定是否要在刪除應用程式版本時同時刪除 S3 內的原始碼套件。
+ 指定要刪除所屬應用程式版本的服務角色。若要將所刪除版本需要的所有許可一併刪除，請選擇名為 `aws-elasticbeanstalk-service-role` 的預設 Elastic Beanstalk 服務角色，或者其他使用 Elastic Beanstalk 受管服務政策的服務角色。如需詳細資訊，請參閱[管理 Elastic Beanstalk 服務角色](iam-servicerole.md)。

# 標記應用程式版本
<a name="applications-versions-tagging"></a>

本主題說明標記 Elastic Beanstalk 應用程式版本的好處，以及如何管理標籤。

您可以將標籤套用至 AWS Elastic Beanstalk 應用程式版本。標籤是與 AWS 資源相關聯的鍵/值對。如需 Elastic Beanstalk 資源標記、使用案例、標籤索引鍵和值限制條件的相關資訊，以及支援的資源類型，請參閱[標記 Elastic Beanstalk 應用程式資源](applications-tagging-resources.md)。

您可以在建立應用程式版本時指定標籤。您可以在現有的應用程式版本中新增或移除標籤，以及更新現有標籤的值。您最多可以為每個應用程式版本新增 50 個標籤。

## 在應用程式版本建立期間新增標籤
<a name="applications-versions-tagging.create"></a>

當您使用 Elastic Beanstalk 主控台[建立環境](environments-create-wizard.md)，並選擇上傳您的應用程式碼版本時，您可以指定要與新的應用程式版本建立關聯的標籤金鑰和值。

您也可以使用 Elastic Beanstalk 主控台[上傳應用程式版本](applications-versions.md)，無須立即在環境中使用。在上傳應用程式版本時，您可以指定標籤索引鍵和值。

使用 AWS CLI 或其他 API 型用戶端，在 **[create-application-version](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/create-application-version.html)**命令上使用 `--tags` 參數來新增標籤。

```
$ aws elasticbeanstalk create-application-version \
      --tags Key=mytag1,Value=value1 Key=mytag2,Value=value2 \
      --application-name my-app --version-label v1
```

當您使用 EB CLI 來建立或更新環境時，系統會從您部署的程式碼建立應用程式版本。您無法在 EB CLI 建立應用程式版本期間直接標記應用程式版本。請參閱以下區段，了解如何將標籤新增至現有的應用程式版本。

## 管理現有應用程式版本的標籤
<a name="applications-versions-tagging.manage"></a>

您可以新增、更新和刪除現有 Elastic Beanstalk 應用程式版本中的標籤。

**若要使用 Elastic Beanstalk 主控台管理應用程式版本的標籤**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇 **Applications** (應用程式)，然後在清單上選取應用程式名稱。

1. 在導覽窗格中，找到應用程式名稱並選擇 **Application versions (應用程式版本)**。

1. 選取您要管理的應用程式版本。

1. 選擇 **Actions (動作)**，然後選擇 **Manage tags (管理標籤)**。

1. 使用畫面顯示表單來新增、更新或刪除標籤。

1. 若要儲存變更，請選擇頁面底部的**儲存變更**。

如果您使用 EB CLI 更新應用程式版本，請使用 **[eb tags](eb3-tags.md)** 新增、更新、刪除或列出標籤。

例如，以下命令會列出應用程式版本中的標籤。

```
~/workspace/my-app$ eb tags --list --resource "arn:aws:elasticbeanstalk:us-east-2:my-account-id:applicationversion/my-app/my-version"
```

下列命令會更新標籤 `mytag1` 並刪除標籤 `mytag2`。

```
~/workspace/my-app$ eb tags --update mytag1=newvalue --delete mytag2 \
      --resource "arn:aws:elasticbeanstalk:us-east-2:my-account-id:applicationversion/my-app/my-version"
```

如需完整選項清單和更多範例，請參閱 `eb tags`。

使用 AWS CLI 或其他 API 型用戶端時，請使用 **[list-tags-for-resource](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/list-tags-for-resource.html)**命令來列出應用程式版本的標籤。

```
$ aws elasticbeanstalk list-tags-for-resource --resource-arn "arn:aws:elasticbeanstalk:us-east-2:my-account-id:applicationversion/my-app/my-version"
```

使用 **[update-tags-for-resource](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-tags-for-resource.html)** 命令新增、更新或刪除應用程式版本中的標籤。

```
$ aws elasticbeanstalk update-tags-for-resource \
      --tags-to-add Key=mytag1,Value=newvalue --tags-to-remove mytag2 \
      --resource-arn "arn:aws:elasticbeanstalk:us-east-2:my-account-id:applicationversion/my-app/my-version"
```

在 `--tags-to-add` 的 **update-tags-for-resource** 參數中，同時指定欲新增和欲更新的標籤。如此將新增不存在的標籤，並更新現有標籤的值。

**注意**  
若要搭配 Elastic Beanstalk 應用程式版本使用某些 EB CLI 和 AWS CLI 命令，您需要應用程式版本的 ARN。您可使用下列命令來擷取 ARN。  

```
$ aws elasticbeanstalk describe-application-versions --application-name my-app --version-label my-version
```

# 建立 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 工具。

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

# 搭配 使用 EB CLI AWS CodeBuild
<a name="eb-cli-codebuild"></a>

[AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/) 可編譯來源碼、執行單位測試，並產生可立即部署的成品。您可以跟 EB CLI 一起使用 CodeBuild，以自動化從原始程式碼建置應用程式的作業。環境建立與每次部署之後便從建置步驟開始，然後部署產生的應用程式。

**注意**  
某些區域不提供 CodeBuild。Elastic Beanstalk 和 CodeBuild 之間的整合在這些區域中不會發生作用。  
如需每個區域中 AWS 提供的服務資訊，請參閱[區域表](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。

## 建立應用程式
<a name="eb-cli-codebuild-using"></a>

**建立使用 CodeBuild 的 Elastic Beanstalk 應用程式**

1. 將 CodeBuild 建置規格檔案 [https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html) 放入您的應用程式資料夾。

1. 將具有 Elastic Beanstalk 特定選項的 `eb_codebuild_settings` 項目加入至檔案。

1. 在資料夾中執行 [**eb init**](eb3-init.md)。
**注意**  
當您將 EB CLI 與 CodeBuild 搭配使用時，請勿在*應用程式名稱*中使用句號 (`.`) 或空格 (` `) 字元。

Elastic Beanstalk 會延伸 [CodeBuild 建置規格檔案格式](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html)，以包含下列其他設定：

```
eb_codebuild_settings:
  CodeBuildServiceRole: role-name
  ComputeType: size
  Image: image
  Timeout: minutes
```

`CodeBuildServiceRole`  
CodeBuild 可用來代表您與相依 AWS 服務互動的 AWS Identity and Access Management (IAM) 服務角色 ARN 或名稱。此值為必填。如果您省略此值，任何後續 **eb create** 或 **eb deploy** 命令都會失敗。  
若要進一步了解如何為 CodeBuild 建立服務角色，請參閱《*AWS CodeBuild 使用者指南*》中的[建立 CodeBuild 服務角色](https://docs.aws.amazon.com/codebuild/latest/userguide/setting-up.html#setting-up-service-role)。  
您也需要在 CodeBuild 中自行執行動作的許可。Elastic Beanstalk **AdministratorAccess-AWSElasticBeanstalk** 受管使用者政策包含所有必要的 CodeBuild 動作許可。如果您未使用受管政策，請務必在使用者政策中允許下列許可。  

```
  "codebuild:CreateProject",
  "codebuild:DeleteProject",
  "codebuild:BatchGetBuilds",
  "codebuild:StartBuild"
```
如需詳細資訊，請參閱[管理 Elastic Beanstalk 使用者政策](AWSHowTo.iam.managed-policies.md)。

`ComputeType`  
CodeBuild 建置環境中 Docker 容器使用的資源量。有效值為 BUILD\$1GENERAL1\$1SMALL、BUILD\$1GENERAL1\$1MEDIUM 及 BUILD\$1GENERAL1\$1LARGE。

`Image`  
CodeBuild 用於建置環境的 Docker Hub 或 Amazon ECR 映像名稱。此 Docker 影像應包含建置程式碼所需的各種工具和執行時間程式庫，且應符合應用程式的目標平台。CodeBuild 管理和維護一組專門用於 Elastic Beanstalk 的影像。建議您使用其中一個。如需詳細資訊，請參閱《*AWS CodeBuild 使用者指南*》中的 [CodeBuild 提供的 Docker 映像](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-available.html)。  
此 `Image` 值是選用的。如果您省略此值，**eb init** 命令會嘗試選取最符合您目標平台的映像。此外，如果您在互動式模式中執行 **eb init**，但卻沒有為您選擇映像，系統則會提示您選擇一個映像。在成功初始化結束時，**eb init** 會將選擇的映像寫入 `buildspec.yml` 檔案。

`Timeout`  
CodeBuild 組建版本逾時前可執行的持續時間 (分鐘)。此值是選用的。如需有效值和預設值的詳細資訊，請參閱[在 CodeBuild 中建立建置專案](https://docs.aws.amazon.com/codebuild/latest/userguide/create-project.html)。  
此逾時控制 CodeBuild 執行一次的最大持續時間，且 EB CLI 也會採用此逾時做為建立應用程式版本的第一個步驟。這不同於您使用 [**eb create**](eb3-create.md) 的 `--timeout` 選項或 [**eb deploy**](eb3-deploy.md) 命令指定的數值。後面的數值會控制供 EB CLI 等候環境建立或更新的最大持續時間。

## 建置和部署您的應用程式碼
<a name="eb-cli-codebuild-using"></a>

每次需要部署應用程式碼時，EB CLI 會使用 CodeBuild 執行建置，然後將產生的建置成品部署至您的環境。當您使用 [**eb create**](eb3-create.md) 命令建置應用程式的 Elastic Beanstalk 環境，以及之後每次使用 [**eb deploy**](eb3-deploy.md) 命令將程式碼變更部署至環境時，就會發生這種情況。

如果 CodeBuild 步驟失敗，則不會開始進行環境建立或部署。

# 標記應用程式
<a name="applications-tagging"></a>

本主題說明標記 Elastic Beanstalk 應用程式的優點。它也提供建立和管理應用程式標籤的說明。標籤是與 AWS 資源相關聯的鍵/值對。如需 Elastic Beanstalk 資源標記、使用案例、標籤索引鍵和值限制條件的相關資訊，以及支援的資源類型，請參閱[標記 Elastic Beanstalk 應用程式資源](applications-tagging-resources.md)。

您可以在建立應用程式時指定標籤。您可以在現有的應用程式中新增或移除標籤，以及更新現有標籤的值。您最多可以為每個應用程式新增 50 個標籤。

## 在應用程式建立期間新增標籤
<a name="applications-tagging.create"></a>

使用 Elastic Beanstalk 主控台來[建立應用程式](applications.md)時，您可以在**建立新的應用程式**對話方塊中指定標籤索引鍵和值。

若您使用 EB CLI 來建立應用程式，請使用帶有 `--tags` 的 **[eb init](eb3-init.md)** 選項來新增標籤。

```
~/workspace/my-app$ eb init --tags mytag1=value1,mytag2=value2
```

使用 AWS CLI 或其他 API 型用戶端，在 **[create-application](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/create-application.html)**命令上使用 `--tags` 參數來新增標籤。

```
$ aws elasticbeanstalk create-application \
      --tags Key=mytag1,Value=value1 Key=mytag2,Value=value2 \
      --application-name my-app --version-label v1
```

## 管理現有應用程式的標籤
<a name="applications-tagging.manage"></a>

您可以在現有的 Elastic Beanstalk 應用程式中新增、更新和刪除標籤。

**在 Elastic Beanstalk 主控台中管理應用程式的標籤**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇 **Applications** (應用程式)，然後在清單上選取應用程式名稱。

1. 選擇 **Actions (動作)**，然後選擇 **Manage tags (管理標籤)**。

1. 使用畫面顯示表單來新增、更新或刪除標籤。

1. 若要儲存變更，請選擇頁面底部的**儲存變更**。

如果您使用 EB CLI 更新應用程式，請使用 **[eb tags](eb3-tags.md)** 新增、更新、刪除或列出標籤。

例如，以下命令會列出應用程式中的標籤。

```
~/workspace/my-app$ eb tags --list --resource "arn:aws:elasticbeanstalk:us-east-2:my-account-id:application/my-app"
```

下列命令會更新標籤 `mytag1` 並刪除標籤 `mytag2`。

```
~/workspace/my-app$ eb tags --update mytag1=newvalue --delete mytag2 \
      --resource "arn:aws:elasticbeanstalk:us-east-2:my-account-id:application/my-app"
```

如需完整選項清單和更多範例，請參閱 `eb tags`。

使用 AWS CLI 或其他 API 型用戶端時，請使用 **[list-tags-for-resource](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/list-tags-for-resource.html)**命令來列出應用程式的標籤。

```
$ aws elasticbeanstalk list-tags-for-resource --resource-arn "arn:aws:elasticbeanstalk:us-east-2:my-account-id:application/my-app"
```

使用 **[update-tags-for-resource](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-tags-for-resource.html)** 命令新增、更新或刪除應用程式中的標籤。

```
$ aws elasticbeanstalk update-tags-for-resource \
      --tags-to-add Key=mytag1,Value=newvalue --tags-to-remove mytag2 \
      --resource-arn "arn:aws:elasticbeanstalk:us-east-2:my-account-id:application/my-app"
```

在 `--tags-to-add` 的 **update-tags-for-resource** 參數中，同時指定欲新增和欲更新的標籤。如此將新增不存在的標籤，並更新現有標籤的值。

**注意**  
若要搭配 Elastic Beanstalk 應用程式使用一些 EB CLI 和 AWS CLI 命令，您需要應用程式的 ARN。您可使用下列命令來擷取 ARN。  

```
$ aws elasticbeanstalk describe-applications --application-names my-app
```

# 標記 Elastic Beanstalk 應用程式資源
<a name="applications-tagging-resources"></a>

本主題說明將標籤與 Elastic Beanstalk 應用程式資源搭配使用的好處，以及這樣做的限制。它也說明如何建立和管理應用程式資源的標籤。

您可以將標籤套用至 AWS Elastic Beanstalk 應用程式的資源。標籤是與 AWS 資源相關聯的鍵/值對。標籤可協助您分類資源。如果您在多個 AWS 應用程式中管理許多資源，這些資源特別有用。

以下是使用標籤搭配 Elastic Beanstalk 資源的一些方法：
+ *部署階段* - 識別與應用程式的不同階段 (例如開發、試用版和生產) 相關聯的資源。
+ *成本分配* – 使用成本分配報告來追蹤與各種費用帳戶相關聯的 AWS 資源使用情況。此報告同時包含已標記和未標記的資源，並且會根據標籤彙總成本。如需成本分配報告使用標籤方式的資訊，請參閱《*AWS 帳單與成本管理使用者指南*》中的[針對自訂帳單報告使用成本分配標籤](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation.html)。
+ *存取控制* - 使用標籤來管理對於請求與資源的許可。例如，只能建立和管理 beta 環境的使用者，應該只能存取試用版階段資源。如需詳細資訊，請參閱[使用標籤來控制對 Elastic Beanstalk 資源的存取政策中的標籤條件範例](AWSHowTo.iam.policies.access-tags.md)。

每個 資源最多可新增 50 個標籤。環境稍有不同：Elastic Beanstalk 會新增三個預設系統標籤至環境，而且您無法編輯或刪除這些標籤。除了預設標籤，您至多可於每個環境新增其他 47 個標籤。

以下限制適用於標籤索引鍵和值：
+ 金鑰和值可包含字母、數字、空格和下列符號：`_ . : / = + - @`
+ 金鑰最多可包含 127 個字元。值最多可包含 255 個字元。
**注意**  
這些長度限制用於 UTF-8 格式的 Unicode 字元。對於其他多位元組編碼，限制可能較低。
+ 金鑰會區分大小寫。
+ 金鑰的開頭不可為 `aws:` 或 `elasticbeanstalk:`。

## 您可以標記的資源
<a name="applications-tagging-resources.supported"></a>

以下是您可以標記的 Elastic Beanstalk 資源的類型，以及有關為各個資源管理標籤的特定主題連結：
+ [應用程式](applications-tagging.md)
+ [環境](using-features.tagging.md)
+ [應用程式版本](applications-versions-tagging.md)
+ [已儲存的組態](environment-configuration-savedconfig-tagging.md)

# 對啟動範本的標籤傳輸
<a name="applications-tagging-resources.launch-templates"></a>

Elastic Beanstalk 提供了一個選項，可啟用對啟動範本的標籤傳輸。此選項延續了對啟動範本的標籤型存取控制 (TBAC) 的支援。

**注意**  
啟動組態已逐步淘汰，並由啟動範本取代。如需詳細資訊，請參閱《Amazon EC2 Auto Scaling 使用者指南》中的[啟動組態](https://docs.aws.amazon.com/autoscaling/ec2/userguide/launch-configurations.html)。

為了防止執行 EC2 執行個體的停機時間， CloudFormation 不會將標籤傳播到現有的啟動範本。如果有使用案例需要環境資源具備標籤，您可以啟用 Elastic Beanstalk，建立包含這些資源標籤的啟動範本。若要這麼做，請將 [aws:autoscaling:launchconfiguration](command-options-general.md#command-options-general-autoscalinglaunchconfiguration) 命名空間中的 `LaunchTemplateTagPropagationEnabled` 選項設定為 `true`。預設值為 `false`。

下列[組態檔案](ebextensions.md)範例可啟用對啟動範本的標籤傳輸。

```
option_settings:
  aws:autoscaling:launchconfiguration:
    LaunchTemplateTagPropagationEnabled: true
```

Elastic Beanstalk 只能將下列資源標籤傳播到啟動範本：
+ EBS 磁碟區
+ EC2 執行個體 
+ EC2 網路界面
+ CloudFormation 定義資源的啟動範本

存在此限制的原因是 CloudFormation 僅允許在建立範本時為資源設定標籤。如需詳細資訊，請參閱《AWS CloudFormation 使用者指南》**中的 [TagSpecification](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-tagspecification.html)。

**重要**  
將現有環境的此選項值從 `false` 變更為 `true` 可能導致現有標籤發生重大變更。
啟用此功能後，標籤的傳播會需要 EC2 替換，這可能會導致停機。您可以啟用*滾動式更新*，批次套用組態變更，從而避免在更新程序期間停機。如需詳細資訊，請參閱[組態變更](environments-updating.md)。

如需有關啟動範本的詳細資訊，請參閱以下內容：
+ *Amazon EC2 Auto Scaling User Guide* 中的 [Launch templates](https://docs.aws.amazon.com/autoscaling/ec2/userguide/launch-templates.html)。
+ 《AWS CloudFormation 使用者指南》**中的[使用範本](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html)
+ 《AWS CloudFormation 使用者指南》**中的 [Elastic Beanstalk 範本程式碼片段](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-elasticbeanstalk.html)