AWS CodeDeploy
用户指南 (API 版本 2014-10-06)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

CodeDeploy AppSpec File 参考

本部分仅供参考。有关 AppSpec file的概念性概述,请参阅应用程序规范文件

application specification file (AppSpec file) 是 YAML 格式或 JSON 格式文件,由 CodeDeploy 用来管理部署。

注意

EC2/本地 部署的 AppSpec file 的名称必须为 appspec.yml。Amazon ECS 或 AWS Lambda 部署的 AppSpec file 的名称必须为 appspec.yaml。

Amazon ECS 计算平台上的 AppSpec 文件

如果您的应用程序使用 Amazon ECS 计算平台,则 AppSpec file 的名称为 appspec.yaml。CodeDeploy 使用它来确定:

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

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

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

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

AWS Lambda 计算平台上的 AppSpec 文件

如果您的应用程序使用 AWS Lambda 计算平台,则 AppSpec file 的名称为 appspec.yaml。CodeDeploy 使用它来确定:

  • 要部署的 Lambda 函数版本。

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

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

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

如果您的应用程序使用 EC2/本地 计算平台,则 AppSpec file 的名称为 appspec.yml。CodeDeploy 使用它来确定:

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

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

AppSpec file必须是名为 appspec.yml 的 YAML 格式的文件,并且必须放在应用程序源代码目录结构的根目录中。否则,部署会失败。

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

注意

The tar and compressed tar archive file formats (.tar and .tar.gz) are not supported for Windows Server instances.

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

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

AppSpec File间距

下面是正确的 AppSpec file间距格式。方括号中的数字表示各项之间必须存在的空格数。例如,[4] 表示在各项之间插入四个空格。如果 AppSpec file 中的位置和空格数不正确,则 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 file的示例:

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