

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

# CodeDeploy AppSpec 檔案參考
<a name="reference-appspec-file"></a>

本節僅供參考。如需 AppSpec 檔案的概念概觀，請參閱 [CodeDeploy 應用程式規格 (AppSpec) 檔案](application-specification-files.md)。

應用程式規格檔案 (AppSpec 檔案） 是 CodeDeploy 用來管理部署的 [YAML](http://www.yaml.org) 格式或 JSON 格式檔案。

**注意**  
除非您執行本機部署`appspec.yml`，否則 EC2/現場部署的 AppSpec 檔案必須命名為 。如需詳細資訊，請參閱[建立本機部署](deployments-local.md#deployments-local-deploy)。

**Topics**
+ [Amazon ECS 運算平台上的 AppSpec 檔案](#appspec-reference-ecs)
+ [AWS Lambda 運算平台上的 AppSpec 檔案](#appspec-reference-lambda)
+ [EC2/內部部署運算平台上的 AppSpec 檔案](#appspec-reference-server)
+ [AppSpec 檔案結構](reference-appspec-file-structure.md)
+ [AppSpec 檔案範例](reference-appspec-file-example.md)
+ [AppSpec 檔案間距](#reference-appspec-file-spacing)
+ [驗證您的 AppSpec 檔案和檔案位置](reference-appspec-file-validate.md)

## Amazon ECS 運算平台上的 AppSpec 檔案
<a name="appspec-reference-ecs"></a>

對於 Amazon ECS 運算平台應用程式，CodeDeploy 會使用 AppSpec 檔案來判斷：
+  您的 Amazon ECS 任務定義檔案。這是在 AppSpec 檔案的 `TaskDefinition`指示中，以其 ARN 指定。
+  替換任務集中的容器和連接埠，您的 Application Load Balancer 或 Network Load Balancer 會在部署期間重新路由流量。這是使用 AppSpec 檔案中的 `LoadBalancerInfo`指示來指定。
+  Amazon ECS 服務的選用資訊，例如其執行所在的平台版本、子網路及其安全群組。
+  在與 Amazon ECS 部署期間生命週期事件對應的勾點期間執行的選用 Lambda 函數。如需詳細資訊，請參閱[Amazon ECS 部署的 AppSpec 'hooks' 區段](reference-appspec-file-structure-hooks.md#appspec-hooks-ecs)。

## AWS Lambda 運算平台上的 AppSpec 檔案
<a name="appspec-reference-lambda"></a>

對於 AWS Lambda 運算平台應用程式，CodeDeploy 會使用 AppSpec 檔案來判斷：
+ 要部署的 Lambda 函數版本。
+ 要使用哪些 Lambda 函數做為驗證測試。

AppSpec 檔案可以是 YAML 格式或 JSON 格式。您也可以在建立部署時，將 AppSpec 檔案的內容直接輸入 CodeDeploy 主控台。

## EC2/內部部署運算平台上的 AppSpec 檔案
<a name="appspec-reference-server"></a>

 如果您的應用程式使用 EC2/現場部署運算平台，AppSpec 檔案必須是名為 的 YAML 格式檔案，`appspec.yml`且必須放置在應用程式原始碼的目錄結構根目錄中。否則，部署會失敗。CodeDeploy 會使用它來判斷：
+ 它應該從 Amazon S3 或 GitHub 中的應用程式修訂版安裝到您的執行個體。
+ 為回應部署生命週期事件而執行的生命週期事件勾點。

完成 AppSpec 檔案後，您可以將它與要部署的內容綁定到封存檔案 (zip、tar 或壓縮的 tar)。如需詳細資訊，請參閱[使用 CodeDeploy 的應用程式修訂](application-revisions.md)。

**注意**  
Windows Server 執行個體不支援 tar 和壓縮 tar 封存檔案格式 (.tar 和 .tar.gz)。

在您擁有套件封存檔案 （在 CodeDeploy 中稱為*修訂版*) 之後，您可以將其上傳至 Amazon S3 儲存貯體或 Git 儲存庫。然後使用 CodeDeploy 部署修訂。如需說明，請參閱[使用 CodeDeploy 建立部署](deployments-create.md)。

EC2/現場部署運算平台部署的 apppec.yml 會儲存在修訂版的根目錄中。如需詳細資訊，請參閱[為 EC2/現場部署新增 AppSpec 檔案](application-revisions-appspec-file.md#add-appspec-file-server)及[規劃 CodeDeploy 的修訂](application-revisions-plan.md)。

## AppSpec 檔案間距
<a name="reference-appspec-file-spacing"></a>

以下是 AppSpec 檔案間距的正確格式。方格括弧中的數字表示在項目之間必需的空格數。例如， `[4]`表示在項目之間插入四個空格。如果 AppSpec 檔案中的位置和空間數不正確，CodeDeploy 可能會引發難以偵錯的錯誤。

```
version:[1]version-number
os:[1]operating-system-name
files:
[2]-[1]source:[1]source-files-location
[4]destination:[1]destination-files-location
permissions:
[2]-[1]object:[1]object-specification
[4]pattern:[1]pattern-specification
[4]except:[1]exception-specification
[4]owner:[1]owner-account-name
[4]group:[1]group-name
[4]mode:[1]mode-specification
[4]acls: 
[6]-[1]acls-specification 
[4]context:
[6]user:[1]user-specification
[6]type:[1]type-specification
[6]range:[1]range-specification
[4]type:
[6]-[1]object-type
hooks:
[2]deployment-lifecycle-event-name:
[4]-[1]location:[1]script-location
[6]timeout:[1]timeout-in-seconds
[6]runas:[1]user-name
```

以下是正確分隔 AppSpec 檔案的範例：

```
version: 0.0
os: linux
files:
  - source: /
    destination: /var/www/html/WordPress
hooks:
  BeforeInstall:
    - location: scripts/install_dependencies.sh
      timeout: 300
      runas: root
  AfterInstall:
    - location: scripts/change_permissions.sh
      timeout: 300
      runas: root
  ApplicationStart:
    - location: scripts/start_server.sh
    - location: scripts/create_test_db.sh
      timeout: 300
      runas: root
  ApplicationStop:
    - location: scripts/stop_server.sh
      timeout: 300
      runas: root
```

如需有關間距的詳細資訊，請參閱 [YAML](http://www.yaml.org) 規格。