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

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

CodeDeploy AppSpec 文件参考

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

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

注意

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

AppSpec 亚马逊 ECS 计算平台上的文件

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

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

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

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

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

AppSpec Amazon Lambda计算平台上的文件

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

  • 要部署的 Lambda 函数版本。

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

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

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

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

  • 它应该从 Amazon S3 中的应用程序修订版中安装到您的实例上的内容,或者 GitHub。

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

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

注意

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

获得捆绑的存档文件(称为修订版)后,将其上传到 Amazon S3 存储桶或 Git 存储库。 CodeDeploy 然后使用 CodeDeploy 来部署修订版。有关说明,请参阅使用创建部署 CodeDeploy

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

AppSpec 文件间距

以下是 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 规范。