一般问题排查 - 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

EC2 CodeDeploy 部署中使用的实例和 Amazon A EC2 uto 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 要在 Amazon Linux、Ubuntu Server 或RHEL实例上运行的文件或 shell 脚本文件,则依赖这些文件的任何部署都可能失败。在部署期间 CodeDeploy 使用这些文件时,这些字符的存在可能导致 hard-to-troubleshoot AppSpec 文件验证失败和脚本执行失败。

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

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

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

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

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

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

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

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

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