

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

# 使用 CodeDeploy 代理程式來驗證本機電腦上的部署套件
<a name="deployments-local"></a>

您可以使用 CodeDeploy 代理程式，在您登入的執行個體上部署內容。這可讓您測試您要在部署中使用的應用程式規格檔案 (AppSpec 檔案） 的完整性，以及您打算部署的內容。

您不需要建立應用程式以及部署群組。如果您想要部署儲存在本機執行個體上的內容，您甚至不需要 AWS 帳戶。對於最簡單的測試，您可以在包含 AppSpec 檔案和要部署內容的目錄中執行 **codedeploy-local**命令，而無需指定任何選項。工具中有其他測試案例的選項。

您可以在本機上驗證部屬包裹。
+ 測試應用程式修訂版的完整性。
+ 測試 AppSpec 檔案的內容。
+ 第一次使用您現有的應用程式碼試用 CodeDeploy。
+ 當您已經登入執行個體，快速部署內容。

您可以使用存放在本機執行個體或支援的遠端儲存庫類型 (Amazon S3 儲存貯體或公有 GitHub 儲存庫） 中的部署內容。

## 先決條件
<a name="deployments-local-prerequisites"></a>

您開始就地部署之前，請完成下列步驟：
+ 建立或使用 CodeDeploy 代理程式支援的執行個體類型。如需相關資訊，請參閱[CodeDeploy 代理程式支援的作業系統](codedeploy-agent.md#codedeploy-agent-supported-operating-systems)。
+ 安裝 CodeDeploy 代理程式的 1.0.1.1352 版或更新版本。如需相關資訊，請參閱[安裝 CodeDeploy 代理程式](codedeploy-agent-operations-install.md)。
+ 如果您要從 Amazon S3 儲存貯體或 GitHub 儲存庫部署內容，請佈建使用者以搭配 CodeDeploy 使用。如需相關資訊，請參閱[步驟 1：設定](getting-started-setting-up.md)。
+ 如果您要從 Amazon S3 儲存貯體部署應用程式修訂版，請在您工作所在的區域中建立 Amazon S3 儲存貯體，並將 Amazon S3 儲存貯體政策套用至儲存貯體。此政策會將下載應用程式修訂所需的許可授予您的執行個體。

  例如，下列 Amazon S3 儲存貯體政策允許任何連接 IAM 執行個體描述檔的 Amazon EC2 執行個體從名為 的 Amazon S3 儲存貯體中的任何位置`arn:aws:iam::444455556666:role/CodeDeployDemo`下載`amzn-s3-demo-bucket`：

  ```
  {
      "Statement": [
          {
              "Action": [
                  "s3:Get*",
                  "s3:List*"
              ],
              "Effect": "Allow",
              "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
              "Principal": {
                  "AWS": [
                      "arn:aws:iam::444455556666:role/CodeDeployDemo"
                  ]
              }
          }
      ]
  }
  ```

  下列 Amazon S3 儲存貯體政策允許具有包含 ARN 之相關聯 IAM 使用者的任何現場部署執行個體從名為 的 Amazon S3 儲存貯體中的任何位置`arn:aws:iam::444455556666:user/CodeDeployUser`下載`amzn-s3-demo-bucket`：

  ```
  {
      "Statement": [
          {
              "Action": [
                  "s3:Get*",
                  "s3:List*"
              ],
              "Effect": "Allow",
              "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
              "Principal": {
                  "AWS": [
                      "arn:aws:iam::444455556666:user/CodeDeployUser"
                  ]
              }
          }
      ]
  }
  ```

  如需有關如何產生和連接 Amazon S3 儲存貯體政策的資訊，請參閱[儲存貯體政策範例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html)。
+ 如果您要從 Amazon S3 儲存貯體或 GitHub 儲存庫部署應用程式修訂版，請設定 IAM 執行個體描述檔並將其連接至執行個體。如需詳細資訊，請參閱 [步驟 4：為您的 Amazon EC2 執行個體建立 IAM 執行個體描述檔](getting-started-create-iam-instance-profile.md)、[為 CodeDeploy (AWS CLI 或 Amazon EC2 主控台） 建立 Amazon EC2 執行個體](instances-ec2-create.md) 及 [為 CodeDeploy 建立 Amazon EC2 執行個體 (CloudFormation 範本）](instances-ec2-create-cloudformation-template.md)。
+ 如果您從 GitHub 部署您的內容，請建立一個 GitHub 帳戶以及公開的儲存庫。若要建立 GitHub 帳戶，請參閱[​加入GitHub](https://github.com/join)。若要建立 GitHub 儲存庫，請參閱[建立儲存庫](https://help.github.com/articles/create-a-repo/)。
**注意**  
 目前不支援私人儲存庫。如果您的內容儲存於私人 GitHub 儲存庫中，您可以將其下載到執行個體並使用 `--bundle-location` 選項指定路徑位置。
+ 準備您要部署到執行個體的內容 （包括 AppSpec 檔案），並將其放置在本機執行個體、Amazon S3 儲存貯體或 GitHub 儲存庫中。如需相關資訊，請參閱[使用 CodeDeploy 的應用程式修訂](application-revisions.md)。
+ 如果您想要將預設值以外的值用於其他組態選項，請建立組態檔案並將其放置在執行個體 (`/etc/codedeploy-agent/conf/codedeployagent.yml`適用於 Amazon Linux、RHEL 或 Ubuntu Server 執行個體，或`C:\ProgramData\Amazon\CodeDeploy\conf.yml`適用於 Windows Server 執行個體）。如需相關資訊，請參閱[CodeDeploy 代理程式組態參考](reference-agent-configuration.md)。
**注意**  
如果您在 Amazon Linux、RHEL 或 Ubuntu Server 執行個體上使用組態檔案，您必須：  
使用 `:root_dir:`​ 和 `:log_dir:` ​變數指定部署根以及紀錄目錄資料夾預設以外的地點。
使用 `sudo`執行 CodeDeploy 代理程式命令。

## 建立本機部署
<a name="deployments-local-deploy"></a>

在您要建立本機部署的執行個體上，開啟終端機工作階段 (Amazon Linux、RHEL 或 Ubuntu Server 執行個體） 或命令提示字元 (Windows Server) 來執行工具命令。

**注意**  
 **codedeploy-local** 命令安裝於以下位置：  
 在 Amazon Linux、RHEL 或 Ubuntu Server 上：`/opt/codedeploy-agent/bin`。
 在 Windows Server 上：`C:\ProgramData\Amazon\CodeDeploy\bin`。

**基本命令語法**

```
codedeploy-local [options]
```

**概要**

```
codedeploy-local
[--bundle-location <value>]
[--type <value>]
[--file-exists-behavior <value>]
[--deployment-group <value>]
[--events <comma-separated values>]
[--agent-configuration-file <value>]
[--appspec-filename <value>]
```

**選項**

** - l **，** - 配套位置**

應用程式修訂版配套位置。如果您不指定一個位置，則該工具以您目前作業的預設使用目錄。如果您指定一個值給 `--bundle-location`，則您必須也指定一個值給 `--type`。

配套位置格式化範例：
+ 本機 Amazon Linux、RHEL 或 Ubuntu Server 執行個體： `/path/to/local/bundle.tgz`
+ 本機 Windows Server 執行個體： `C:/path/to/local/bundle`
+ Amazon S3 儲存貯體： `s3://amzn-s3-demo-bucket/bundle.tar`
+ GitHub 儲存庫：`https://github.com/account-name/repository-name/`

** - t **、** - 類型**

應用程式修訂版配套格式。支援的類型包括 `tgz`、​`tar`、​`zip` 和​`directory`。如果您未指定一個形式，工具會使用 `directory` 作為預設。如果您指定一個值給 `--type`，則您必須也指定一個值給 `--bundle-location`。

** - b **、** - 檔案存在 - 行為**

指出檔案如何處理已經存在部署標的位置裡，但不是成功部署上一步的一部分。選項包含不允許、覆寫、保留。如需詳細資訊，請參閱 *[AWS CodeDeploy API 參考](https://docs.aws.amazon.com/codedeploy/latest/APIReference/)*中的 [fileExistsBehavior](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_CreateDeployment.html#CodeDeploy-CreateDeployment-request-fileExistsBehavior)。

** -g​**、**- 部署群組​**

目標位置的資料夾路徑為待部署的內容。如果您不指定資料夾，該工具會在您的部署根目錄裡建立一個 *​default-local-deployment-group*。​ 針對每一個您建立的區域部署，該工具會在子目錄裡建立名稱如 *d-98761234-local​* 的資料夾。

**​ -e**、** - 事件​**

您想要依序執行的一組覆寫生命週期事件關聯，而不是您在 AppSpec 檔案中列出的事件。多個關聯可以被指定，以逗號分隔。您可以使用這個選項，如果：
+ 您想要執行一組不同的事件，而不必更新 AppSpec 檔案。
+ 您想要執行單一事件掛鉤，做為 AppSpec 檔案中內容的例外狀況，例如 `ApplicationStop`。

如果您不指定 **DownloadBundle​** 和覆寫清單中的**安裝** 事件，他們將在您指定所有事件關聯前執行。如果您將 **DownloadBundle** 和 **Install** 包含在`--events`選項清單中，則它們前面必須只有通常在 CodeDeploy 部署中執行的事件。如需相關資訊，請參閱[AppSpec 'hooks' 區段](reference-appspec-file-structure-hooks.md)。

**-c​**、** - 代理程式組態檔案​**

如果您將它存放至預設位置以外的地方，本機將使用於部署的設定檔案。設定檔案指定替代到其他預設值以及部署表現方式。

根據預設，組態檔案存放在 `/etc/codedeploy-agent/conf/codedeployagent.yml`(Amazon Linux、RHEL 或 Ubuntu Server 執行個體） 或 `C:/ProgramData/Amazon/CodeDeploy/conf.yml`(Windows Server) 中。如需詳細資訊，請參閱[CodeDeploy 代理程式組態參考](reference-agent-configuration.md)。

**-A**、**--appspec-filename**

AppSpec 檔案的名稱。對於本機部署，接受的值為 `appspec.yml`和 `appspec.yaml`。根據預設，AppSpec 檔案稱為 `appspec.yml`。

** -h​**、** -求助​**

顯示協助內容的摘要。

**-v​**、** - ​版本**

顯示工具版本編號。

## 範例
<a name="deployments-local-examples"></a>

以下是有效命令格式的範例。

```
codedeploy-local
```

```
codedeploy-local --bundle-location /path/to/local/bundle/directory
```

```
codedeploy-local --bundle-location C:/path/to/local/bundle.zip --type zip --deployment-group my-deployment-group
```

```
codedeploy-local --bundle-location /path/to/local/directory --type directory --deployment-group my-deployment-group
```

從 Amazon S3 部署套件：

```
codedeploy-local --bundle-location s3://amzn-s3-demo-bucket/bundle.tgz --type tgz
```

```
codedeploy-local --bundle-location s3://amzn-s3-demo-bucket/bundle.zip?versionId=1234&etag=47e8 --type zip --deployment-group my-deployment-group
```

從公有 GitHub 儲存庫部署一個配套：

```
codedeploy-local --bundle-location https://github.com/awslabs/aws-codedeploy-sample-tomcat --type zip
```

```
codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/master --type zip
```

```
codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/HEAD --type zip
```

```
codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/1a2b3c4d --type zip
```

部署一個配套指定多個生命週期事件：

```
codedeploy-local --bundle-location /path/to/local/bundle.tar --type tar --application-folder my-deployment --events DownloadBundle,Install,ApplicationStart,HealthCheck
```

使用 ApplicationStop 生命週期事件停止先前的部署應用程式。

```
codedeploy-local --bundle-location /path/to/local/bundle.tgz --type tgz --deployment-group --events ApplicationStop
```

一個指定部署群組 ID 進行部署：

```
codedeploy-local --bundle-location C:/path/to/local/bundle/directory --deployment-group 1234abcd-5dd1-4774-89c6-30b107ac5dca
```

```
codedeploy-local --bundle-location C:/path/to/local/bundle.zip --type zip --deployment-group 1234abcd-5dd1-4774-89c6-30b107ac5dca
```