

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

# CodeDeploy AppSpec 文件引用
<a name="reference-appspec-file"></a>

本部分仅供参考。有关该 AppSpec 文件的概念性概述，请参见[CodeDeploy 应用程序规范 (AppSpec) 文件](application-specification-files.md)。

应用程序规范文件（AppSpec 文件）是 [YAML](http://www.yaml.org) 格式或 JSON 格式的文件，用于管理部署 CodeDeploy 。

**注意**  
除非您正在执行本地部署`appspec.yml`，否则必须命名 EC2/本地部署的 AppSpec 文件。有关更多信息，请参阅 [创建本地部署](deployments-local.md#deployments-local-deploy)。

**Topics**
+ [AppSpec 亚马逊 ECS 计算平台上的文件](#appspec-reference-ecs)
+ [AppSpec Amazon Lambda 计算平台上的文件](#appspec-reference-lambda)
+ [AppSpec EC2/本地计算平台上的文件](#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)

## AppSpec 亚马逊 ECS 计算平台上的文件
<a name="appspec-reference-ecs"></a>

对于 Amazon ECS 计算平台应用程序，该 AppSpec 文件 CodeDeploy 用于确定：
+  Amazon ECS 任务定义文件。这是在文件指`TaskDefinition`令中使用其 ARN 指定的。 AppSpec 
+  替换任务集中的容器和端口，应用程序负载均衡器或网络负载均衡器在部署期间会在其中重新路由流量。这是通过 AppSpec 文件中的`LoadBalancerInfo`指令指定的。
+  有关 Amazon ECS 服务的可选信息，例如运行它的平台版本、它的子网及其安全组。
+  可选的 Lambda 函数，在与 Amazon ECS 部署期间的生命周期事件对应的挂钩期间运行。有关更多信息，请参阅 [AppSpec 亚马逊 ECS 部署的 “挂钩” 部分](reference-appspec-file-structure-hooks.md#appspec-hooks-ecs)。

## AppSpec Amazon Lambda 计算平台上的文件
<a name="appspec-reference-lambda"></a>

对于 Amazon Lambda 计算平台应用程序，该 AppSpec 文件 CodeDeploy 用于确定：
+ 要部署的 Lambda 函数版本。
+ 要用作验证测试的 Lambda 函数。

 AppSpec 文件可以是 YAML 格式或 JSON 格式。创建部署时，您也可以将 AppSpec 文件内容直接输入 CodeDeploy 控制台。

## AppSpec EC2/本地计算平台上的文件
<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）。

获得捆绑的存档文件（称为*修订版*）后，将其上传到 Amazon S3 存储桶或 Git 存储库。 CodeDeploy 然后使用 CodeDeploy 来部署修订版。有关说明，请参阅[使用创建部署 CodeDeploy](deployments-create.md)。

EC2/本地计算平台部署的 appspec.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]`表示在项目之间插入四个空格。 CodeDeploy 如果 AppSpec 文件中的位置和空格数不正确，则会引发一个可能难以调试的错误。

```
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) 规范。