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

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

CodeDeploy AppSpec 文件参考

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

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

注意

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

Amazon ECS 计算平台上的 AppSpec 文件

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

  • 您的 Amazon ECS 任务定义文件。此值由其 ARN 在TaskDefinition指 AppSpec。

  • 替换任务集中的容器和端口,或 Application Load Balancer 部署期间会在其中重新路由流量。这是使用LoadBalancerInfo指 AppSpec。

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

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

AppSpec 文件Amazon Lambda计算平台

适用于AmazonLambda 计算平台应用程序,CodeDeploy 使用 AppSpec 文件来确定:

  • 要部署哪个 Lambda 函数版本。

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

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

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

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

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

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

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

注意

Windows 服务器实例不支持 tar 和压缩 tar 归档文件格式(.tar 和 .tar.gz)。

有了捆绑的存档文件(在 CodeDeploy 中称为修订),则您可以将其上传至 Amazon S3 存储桶或 Git 存储库。然后使用 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 规范。