CodeDeploy AppSpec 文件参考 - Amazon CodeDeploy
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

CodeDeploy AppSpec 文件参考

本部分仅供参考。有关 AppSpec 文件的概念性概述,请参阅Application Specification Files

应用程序规范文件(AppSpec 文件)是 YAML 格式或 JSON 格式文件,由 CodeDeploy 用来管理部署。

注意

除非您正在执行本地部署,否则 EC2/本地部署的 AppSpec 文件必须名为 appspec.yml。有关更多信息,请参阅 创建本地部署

Amazon ECS 计算平台上的 AppSpec 文件

对于 Amazon ECS 计算平台应用程序,CodeDeploy 使用 AppSpec 文件来确定:

  • Amazon ECS 任务定义文件。这是在 AppSpec 文件中的 TaskDefinition 指令中随其 ARN 一起指定的。

  • 替换任务集中的容器和端口,应用程序负载均衡器或网络负载均衡器在部署期间会在其中重新路由流量。这是在 AppSpec 文件中随 LoadBalancerInfo 指令一起指定的。

  • 有关 Amazon ECS 服务的可选信息,例如运行它的平台版本、它的子网及其安全组。

  • 可选的 Lambda 函数,在与 Amazon ECS 部署期间的生命周期事件对应的挂钩期间运行。有关更多信息,请参阅 用于 Amazon ECS 部署的 AppSpec 的“hooks”部分

Amazon Lambda 计算平台上的 AppSpec 文件

对于 Amazon Lambda 计算平台应用程序,CodeDeploy 使用 AppSpec 文件来确定:

  • 要部署的 Lambda 函数版本。

  • 要用作验证测试的 Lambda 函数。

AppSpec 文件可以采用 YAML 格式或 JSON 格式。在创建部署时,您还可以将 AppSpec 文件内容直接输入到 CodeDeploy 控制台。

EC2/本地计算平台上的 AppSpec 文件

如果您的应用程序使用 EC2/本地计算平台,则 AppSpec 文件必须是名为 appspec.yml 的 YAML 格式的文件,并且必须将其放在应用程序源代码目录结构的根文件夹中。否则,部署会失败。CodeDeploy 使用它来确定:

  • 应从 Amazon S3 或 GitHub 中的应用程序修订安装到您的实例的内容。

  • 为响应部署生命周期事件而要运行的生命周期事件挂钩。

完成 AppSpec 文件之后,将此文件与要部署的内容一起捆绑到存档文件(zip、tar 或压缩的 tar)。有关更多信息,请参阅 使用 CodeDeploy 的应用程序修订

注意

Windows Server 实例不支持 tar 和压缩的 tar 存档文件格式(.tar 和.tar.gz)。

有了捆绑的存档文件(在 CodeDeploy 中称为修订)之后,您就可以将其上传到 Amazon S3 存储桶或 Git 存储库。然后使用 CodeDeploy 部署修订。有关说明,请参阅使用 CodeDeploy 创建部署

EC2/本地计算平台部署的 appspec.yml 保存在修订的根目录中。有关更多信息,请参阅为 EC2/本地部署添加 AppSpec 文件为 CodeDeploy 规划修订

AppSpec 文件间距

下面是正确的 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 规范。