

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

# CodeDeploy 应用程序规范 (AppSpec) 文件
<a name="application-specification-files"></a>

应用程序规范文件（AppSpec 文件）是唯一的，是 [YAML](http://www.yaml.org) 格式或 [JSON](http://www.json.org) 格式的文件。 CodeDeploy该 AppSpec 文件用于将每个部署作为一系列生命周期事件挂钩进行管理，这些挂钩在文件中定义。

有关如何创建格式良好的 AppSpec 文件的信息，请参见[CodeDeploy AppSpec 文件引用](reference-appspec-file.md)。

**Topics**
+ [AppSpec 亚马逊 ECS 计算平台上的文件](#appspec-files-on-ecs-compute-platform)
+ [AppSpec AWS Lambda 计算平台上的文件](#appspec-files-on-lambda-compute-platform)
+ [AppSpec EC2/本地计算平台上的文件](#appspec-files-on-server-compute-platform)
+ [CodeDeploy 代理如何使用该 AppSpec 文件](#application-specification-files-agent-usage)

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

如果您的应用程序使用 Amazon ECS 计算平台，则可以使用 YAML 或 JSON 格式化 AppSpec 文件。它还可以直接键入到控制台中的编辑器内。该 AppSpec 文件用于指定：
+ 用于将流量定向到新任务集的 Amazon ECS 服务名称以及容器名称和端口。
+ 要用作验证测试的函数。

可以在部署生命周期事件后验证 Lambda 函数。有关更多信息，请参阅 [AppSpec 亚马逊 ECS 部署的 “挂钩” 部分](reference-appspec-file-structure-hooks.md#appspec-hooks-ecs)、[AppSpec Amazon ECS 部署的文件结构](reference-appspec-file-structure.md#ecs-appspec-structure) 和 [AppSpec Amazon ECS 部署的文件示例](reference-appspec-file-example.md#appspec-file-example-ecs)。

## AppSpec AWS Lambda 计算平台上的文件
<a name="appspec-files-on-lambda-compute-platform"></a>

如果您的应用程序使用 AWS Lambda 计算平台，则可以使用 YAML 或 JSON 格式化 AppSpec 文件。它还可以直接键入到控制台中的编辑器内。该 AppSpec 文件用于指定：
+ 要部署的 AWS Lambda 函数版本。
+ 要用作验证测试的函数。

可以在部署生命周期事件后验证 Lambda 函数。有关更多信息，请参阅 [AppSpec AWS Lambda 部署的 “挂钩” 部分](reference-appspec-file-structure-hooks.md#appspec-hooks-lambda)。

## AppSpec EC2/本地计算平台上的文件
<a name="appspec-files-on-server-compute-platform"></a>

如果您的应用程序使用 EC2/本地计算平台，则该 AppSpec 文件始终采用 YAML 格式。该 AppSpec 文件用于：
+ 将应用程序修订中的源文件映射到其在实例上的目的地。
+ 为部署的文件指定自定义权限。
+ 指定要在部署过程的各个阶段在每个实例上运行的脚本。

在多个单独的部署生命周期事件发生后，您可以在实例上运行脚本。 CodeDeploy 仅运行文件中指定的脚本，但这些脚本可以调用实例上的其他脚本。您可以运行任何类型的脚本，只要该脚本受实例上运行的操作系统支持即可。有关更多信息，请参阅 [AppSpec EC2/本地部署的 “挂钩” 部分](reference-appspec-file-structure-hooks.md#appspec-hooks-server)。

## CodeDeploy 代理如何使用该 AppSpec 文件
<a name="application-specification-files-agent-usage"></a>

部署期间， CodeDeploy 代理会在 AppSpec 文件的 **hooks** 部分中查找当前事件的名称。如果找不到该事件， CodeDeploy 代理将移到下一步。如果找到该事件， CodeDeploy 代理将检索要执行的脚本列表。脚本按其在文件中的出现顺序运行。每个脚本的状态都记录在实例的 CodeDeploy 代理日志文件中。

如果脚本运行成功，则返回退出代码 0（零）。

**注意**  
 在 AWS Lambda 或 Amazon ECS 部署中不使用该 CodeDeploy 代理。

在**安装**事件期间， CodeDeploy 代理使用**文件**部分中定义的映射来确定要将哪些文件夹或文件从修订版复制到实例。 AppSpec 

如果操作系统上安装的 CodeDeploy 代理与 AppSpec 文件中列出的代理不匹配，则部署将失败。

有关 CodeDeploy 代理日志文件的信息，请参见[与 CodeDeploy 代理合作](codedeploy-agent.md)。