我的一个由 AWS OpsWorks Stacks 托管的 Amazon Elastic Compute Cloud (Amazon EC2) 实例卡在“start_failed”状态。为什么我的 OpsWorks Stacks 实例无法进入“在线”状态,我该如何对此问题进行故障排除?
多种原因可以导致 OpsWorks Stacks 实例进入 start_failed 状态并且在设置生命周期事件期间无法启动。但是,此问题通常由联网故障导致。
要对此问题进行故障排除,请首先验证您的 EC2 实例是否可以连接到 OpsWorks Stacks 服务。如果未连接到服务,请参阅本文的如果您的 EC2 实例无法连接到 OpsWorks Stacks 服务部分。如果已连接到服务,请参阅本文的如果您的 EC2 实例可以连接到 OpsWorks Stacks 服务部分。
注意: 对于状态卡在 setup_failed 的实例,请参阅为什么我的 AWS OpsWorks Stacks 实例没有启动并卡在“setup_failed”状态?
1. 登录到您的 Amazon EC2 实例。
2. 通过使用 Linux 命令行界面 (CLI) 运行以下 netcat (nc) 命令,向与实例关联的 OpsWorks 终端节点发送测试请求:
重要提示: 将 opsworks.us-east-1.amazonaws.com 替换为您正在使用的 OpsWorks Stacks 终端节点。
nc -vz opsworks.us-east-1.amazonaws.com 443
如果您的 EC2 实例可以连接到 OpsWorks Stacks 服务,则命令输出类似于以下内容:
Ncat: Connected to <ipaddress>
注意: 如果您的 EC2 实例上未安装 netcat,请通过运行以下命令手动将 netcat 软件包安装在实例上:
sudo yum install -y nc
如果 NAT 网关提供对您的 EC2 实例的互联网访问
遵循为什么我的 EC2 实例无法使用 NAT 网关访问互联网?中的说明
如果互联网网关提供对您的 EC2 实例的互联网访问
遵循为什么我的 EC2 实例无法使用互联网网关连接到互联网?中的说明
如果 NAT 实例提供对您的 EC2 实例的互联网访问
打开 EC2 控制台并验证以下内容:
有关更多信息,请参阅查看状态检查。
如果 VPC 终端节点提供对您的 EC2 实例的互联网访问
检查 EC2 实例的 IAM 权限
验证实例配置文件的 AWS Identity and Access Management (IAM) 角色是否存在并且包含所有必需的权限。
如果实例配置文件没有 IAM 角色,请执行以下操作:
1. 停止该实例。
2. 通过执行以下操作将实例配置文件角色与 EC2 实例分离: 在 EC2 控制台中,选择实例。然后,选择您的 EC2 实例。 依次选择操作选项卡、安全和 修改 IAM 角色。 选择无 IAM 角色。然后选择保存。
3. 使用现有 EC2 实例替换实例配置文件。 – 或者 – 替换 OpsWorks Stacks 中的 EC2 实例。
注意: 有关如何替换 OpsWorks Stacks 中 EC2 实例的更多信息,请参阅将实例添加到层。
对于由 Amazon Elastic Block Store (Amazon EBS) 支持的 EC2 实例,请验证实例的根设备卷是否已满
有关说明,请参阅查看 Linux 的可用磁盘空间或查看 Windows 的可用磁盘空间。
验证 EC2 实例是否使用 IMDSv1
要检查您的实例使用的元数据服务并在需要时重新配置实例,请参阅配置实例元数据选项。
注意: OpsWorks Stacks 仅支持实例元数据服务版本 1 (IMDSv1),不支持 IMDSv2。
对于由自定义 AMI 支持的 EC2 实例,验证 AMI 的配置是否正确
有关更多信息,请参阅从 AWS OpsWorks Stacks 实例创建自定义 Linux Amazon Machine Image (AMI)。
验证 EC2 实例上安装的 OpsWorks Stacks 代理是否正在运行
2. 通过在 Linux CLI 上运行以下命令,验证 EC2 实例上安装的 OpsWorks Stacks 代理是否正在运行:
sudo service opsworks-agent status
如果 OpsWorks Stacks 代理正在运行,则命令输出类似于以下内容:
Active: active (running)
如果 OpsWorks Stacks 代理未运行,则命令输出将类似于以下内容:
Active: inactive (dead)
如果 OpsWorks Stacks 代理未运行,请运行以下命令启动代理:
sudo service opsworks-agent start
检查 EC2 实例的 CloudTrail 日志中是否存在“Client.UnauthorizedOperation”错误
查看 AWS CloudTrail 中记录的 OpsWorks Stacks 实例的 API 调用。查找返回以下错误消息的 EC2 **运行实例**事件: Client.UnauthorizedOperation。
如果实例的 CloudTrail 中显示错误消息,请参阅以下文章: 当我尝试使用 AWS Backup 还原 Amazon EC2 实例时,如何对编码的授权失败消息进行故障排除?
如果您的 EC2 实例被分配到多个层,请确保每个层的网络设置相同
有关更多信息,请参阅将实例添加到层。