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

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

一般问题排查

一般问题排查核对清单

您可以使用以下核对清单来排查失败部署问题。

  1. 请参阅查看 CodeDeploy 部署详情 View Instance Details以确定部署失败的原因。如果您无法确定原因,请查看此核对清单中的项。

  2. 确保您已正确配置实例:

  3. 检查应用程序和部署组设置:

  4. 确认已正确配置应用程序修订:

  5. 确保已正确配置服务角色。有关信息,请参阅 步骤 2:为创建服务角色 CodeDeploy

  6. 确认您已执行入门 CodeDeploy中的步骤,以便:

    • 已为用户预置适当的权限。

    • 安装或升级并配置 Amazon CLI。

    • 创建 IAM 实例配置文件和服务角色。

    有关更多信息,请参阅 适用于 Amazon CodeDeploy的身份和访问管理

  7. 确认您使用的是 Amazon CLI 版本 1.6.1 或更高版本。要检查已安装的版本,请调用 aws --version

如果您仍无法排查失败部署的问题,请查看本主题中的其他问题。

CodeDeploy 只有某些 Amazon 区域支持部署资源

如果您在或 CodeDeploy 控制台中看不到或无法访问应用程序、部署组、实例或其他部署资源,请确保您引用的是区域和中终端节点Amazon Web Services 一般参考列出的其中一个 Amazon 区域。 Amazon CLI

CodeDeploy 部署中使用的 EC2 实例和 Amazon EC2 Auto Scaling 组必须在其中一个 Amazon 区域启动和创建。

如果您使用的是 Amazon CLI,请从中运行aws configure命令 Amazon CLI。然后,您可以查看和设置您的默认 Amazon 区域。

如果您使用的是 CodeDeploy 控制台,请在导航栏的区域选择器中选择一个支持的 Amazon 区域。

重要

要使用中国(北京)区域或中国(宁夏)区域中的服务,您必须拥有特定于这些区域的账户和凭证。其他 Amazon 区域的账户和凭证不适用于北京和宁夏区域,反之亦然。

有关中国区域某些资源的信息,例如 CodeDeploy 资源套件存储桶名称和 CodeDeploy 代理安装过程,未包含在本版本的《CodeDeploy 用户指南》中。

有关更多信息:

本指南中的步骤与 CodeDeploy 控制台不符

本指南中的过程在撰写时体现了新的控制台设计。如果您使用的是旧版本的控制台,本指南中的许多概念和基本步骤仍然适用。要访问新控制台中的帮助,请选择信息图标。

所需的 IAM 角色不可用

如果您依赖作为 Amazon CloudFormation 堆栈一部分创建的 IAM 实例配置文件或服务角色,那么如果您删除堆栈,则所有 IAM 角色也会被删除。这可能就是为什么 IAM 角色不再显示在 IAM 控制台中且 CodeDeploy 不再按预期工作的原因。要纠正此问题,您必须手动重新创建已删除的 IAM 角色。

使用某些文本编辑器创建 AppSpec文件和 shell 脚本可能会导致部署失败

某些文本编辑器会将非标准、非打印字符引入文件中。如果您使用文本编辑器创建或修改 AppSpec 文件或 shell 脚本文件以在 Amazon Linux、Ubuntu Server 或 RHEL 实例上运行,则依赖这些文件的任何部署都可能失败。在部署期间 CodeDeploy 使用这些文件时,这些字符的存在可能导致 hard-to-troubleshoot AppSpec 文件验证失败和脚本执行失败。

在 CodeDeploy 控制台中,在部署的事件详细信息页面上,选择查看日志。(或者你可以使用 Amazon CLI 来调用get-deployment-instance命令。) 查找类似于 invalid charactercommand not foundfile not found 的错误。

为了解决此问题,我们建议:

  • 不要使用在 AppSpec 文件和 shell 脚本文件中引入非打印^M字符(如回车符(字符)的文本编辑器。

  • 使用在 AppSpec 文件和 shell 脚本文件中显示非打印字符(例如回车符)的文本编辑器,这样您就可以查找和删除任何可能引入的字符。有关这些类型的文本编辑器的示例,请在 Internet 上搜索“显示回车的文本编辑器”。

  • 使用在 Amazon Linux、Ubuntu Server 或 RHEL 实例上运行的文本编辑器创建在 Amazon Linux、Ubuntu Server 或 RHEL 实例上运行的 shell 脚本文件。有关这些类型的文本编辑器的示例,请在 Internet 上搜索“Linux Shell 脚本编辑器”。

  • 如果您必须使用 Windows 或 macOS 中的文本编辑器来创建要在 Amazon Linux、Ubuntu Server 或 RHEL 实例上运行的 Shell 脚本文件,请使用可将 Windows 或 macOS 格式的文本转换为 Unix 格式的程序或实用工具。有关这些程序和实用工具的示例,请在 Internet 上搜索“DOS 到 UNIX”或“Mac 到 UNIX”。请确保在目标操作系统上测试转换后的 Shell 脚本文件。

使用 macOS 中的 Finder 捆绑应用程序修订可能会导致部署失败

如果您在 Mac 上使用 Finder 图形用户界面 (GUI) 应用程序将 AppSpec 文件及相关文件和脚本捆绑 (zip) 到应用程序修订存档 (.zip) 文件中,则部署可能会失败。这是因为,Finder 会在 .zip 文件中创建一个中间 __MACOSX 文件夹并将组件文件放入该文件夹中。 CodeDeploy 找不到组件文件,因此部署失败。

要解决此问题,我们建议您使用调用 p ush 命令,该命令会将组件文件压缩到预期的结构中。 Amazon CLI 或者,您可以使用 Terminal(而不是 GUI)来压缩组件文件。Terminal 不创建中间 __MACOSX 文件夹。