跳至内容

如何对创建或复制 AMI 时出现的 "Waiter ImageAvailable failed" 错误进行故障排除?

2 分钟阅读
0

当我在 Amazon Elastic Compute Cloud (Amazon EC2) 中创建或复制亚马逊机器映像 (AMI) 时,我收到 "Waiter ImageAvailable failed" 错误消息。

解决方法

对 "Max attempts exceeded" 错误进行故障排除

如果 AMI 创建或复制过程耗时超过默认的 10 分钟超时时间,您会收到以下错误消息:

"Waiter ImageAvailable failed: Max attempts exceeded"

要解决此问题,请实施带重试行为的指数回退,或使用 Amazon EventBridge 监控 AMI 创建或复制过程。

实施指数回退

指数回退会增加两次重试之间的时长。要实施指数回退,可使用脚本或代码,在每次尝试之间增加时间延迟来重试操作。

以下示例脚本使用适用于 Python 的 AWS SDK (Boto3) 来设置自定义 WaiterConfig 值:

import boto3
from botocore.exceptions import WaiterError

client = boto3.client('ec2')
waiter = client.get_waiter('image_available')

try:
    waiter.wait(
        ImageIds=['ami-abcdefghxyz'],
        WaiterConfig={
            'Delay': 15,
            'MaxAttempts': 50
        }
    )
except WaiterError as e:
    # Handle the WaiterError exception
    print(f"Error waiting for image availability: {e}")
    # Add additional logic here to handle the error, such as retrying the operation or logging the issue

**注意:**请将 ami-abcdefghxyz 替换为您的 AMI ID,将两次尝试之间的延迟(以秒为单位)替换为 15,并将最大重试次数替换为 50

使用 EventBridge 监控 AMI 进程

如果您使用 EventBridge,则无需主动监控您的 AMI 进程。而是创建 EventBridge 规则,即可检测 CopyImageCreateImage 事件何时完成。然后配置一个操作,以便在流程完成时通知您。例如,使用 Amazon Simple Notification Service (Amazon SNS) 向您发送电子邮件通知。有关更多信息,请参阅使用 EventBridge 监控 AMI 事件

对 "An error occurred waiting for the image to become available" 错误进行故障排除

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

您可能会收到以下错误消息:

"An error occurred waiting for the image to become available: Waiter ImageAvailable failed: Waiter encountered a terminal failure state"

出现此错误的原因如下:

  • 您缺少所需的 AWS Identity and Access Management (IAM) 权限。
  • 底层 AWS 基础设施出现临时问题。
  • 您复制或创建了一个大型或复杂的 AMI。
    注意:大型或复杂的 AMI 包含各种软件包和自定义设置,在复制或创建时可能会超过默认的 10 分钟超时时间。要解决此问题,请参阅对 "Max attempts exceeded" 错误进行故障排除

要对这些问题进行故障排除,请执行以下操作。

检查您的 IAM 权限

您附加到创建或复制 AMI 的角色或用户的 IAM 策略必须具有以下所需权限:

  • ec2:DescribeImages
  • ec2:CreateImage
  • ec2:CopyImage

更新 IAM 策略以包含上述权限,然后重试创建或复制流程。

检查 AWS 基础设施是否存在问题

要检查 AMI 的当前状态,请运行以下 describe-images AWS CLI 命令:

aws ec2 describe-images --image-ids AMI_ID

**注意:**请将 AMI_ID 替换为您的 AMI ID。

输出会显示 AMI 的当前状态。如果 State(状态)为 Pending(待处理),则 AMI 创建或复制流程仍在进行中。但是,如果 State(状态)为 Failed(失败),则可能存在底层基础设施问题。

创建或复制 AMI 时,高负载或硬件问题可能会导致临时问题。在这种情况下,请等待 5 到 10 分钟,然后重试创建或复制流程。要检查是否存在影响 AWS 区域或 AWS 服务的持续问题,请在 AWS Health Dashboard 上查看 Service health(服务运行状况)。

进一步排查问题

如果您仍然遇到问题,请查看 AWS CloudTrail 事件历史记录,以确定 CopyImageCreateImage 事件中的问题。检查错误消息、失败原因、超出服务配额以及访问问题。有关更多信息,请参阅使用 CloudTrail 记录 Amazon EC2 API 调用

如果没有持续存在的问题,且在等待 5 到 10 分钟后仍然操作失败,请开立 AWS Support 工单

AWS 官方已更新 10 个月前