本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
一般问题排查
主题
一般问题排查核对清单
您可以使用以下核对清单来排查失败部署问题。
-
请参阅查看 CodeDeploy 部署详情 和View Instance Details以确定部署失败的原因。如果您无法确定原因,请查看此核对清单中的项。
-
确保您已正确配置实例:
-
实例启动时是否指定了 EC2 key pair? 有关更多信息,请参阅 Amazon EC2 用户指南中的EC2密钥对。
-
是否将正确的IAM实例配置文件附加到该实例? 有关更多信息,请参阅配置要使用的 Amazon EC2 实例 CodeDeploy 和步骤 4:为您的 Amazon IAM 实例创建EC2实例配置文件。
-
是否已标记实例? 有关更多信息,请参阅 Amazon EC2 用户指南中的在控制台中使用标签。
-
是否已在实例上安装、更新和运行 CodeDeploy 代理? 有关更多信息,请参阅 管理 CodeDeploy 代理操作。要检查安装了哪个版本的代理,请参阅确定 CodeDeploy代理的版本。
-
-
检查应用程序和部署组设置:
-
要检查应用程序设置,请参阅使用查看应用程序详情 CodeDeploy。
-
要检查部署组设置,请参阅使用查看部署组的详细信息 CodeDeploy。
-
-
确认已正确配置应用程序修订:
-
检查您的 AppSpec 文件格式。有关更多信息,请参阅将应用程序规范文件添加到修订版中 CodeDeploy 和CodeDeploy AppSpec 文件参考。
-
检查您的 Amazon S3 存储桶或 GitHub 存储库,确认您的应用程序修订位于预期位置。
-
查看 CodeDeploy 应用程序修订版的详细信息,确保其注册正确。有关信息,请参阅使用查看应用程序修订详情 CodeDeploy。
-
如果您是从 Amazon S3 进行部署,请检查您的 Amazon S3 存储桶,确认是否 CodeDeploy 已被授予下载应用程序修订版的权限。有关桶策略的信息,请参阅部署先决条件。
-
如果您从中部署 GitHub,请检查您的 GitHub 存储库以确认是否 CodeDeploy已被授予下载应用程序修订版的权限。有关更多信息,请参阅使用创建部署 CodeDeploy 和GitHub 使用中的应用程序进行身份验证 CodeDeploy。
-
-
确保已正确配置服务角色。有关信息,请参阅步骤 2:为创建服务角色 CodeDeploy。
-
确认您已执行入门 CodeDeploy中的步骤,以便:
-
已为用户预置适当的权限。
-
安装或升级并配置 Amazon CLI。
-
创建IAM实例配置文件和服务角色。
有关更多信息,请参阅 适用于 Amazon CodeDeploy的身份和访问管理。
-
-
确认您使用的是 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
character
、command not found
或 file 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
文件夹。