当我在 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 规则,即可检测 CopyImage 或 CreateImage 事件何时完成。然后配置一个操作,以便在流程完成时通知您。例如,使用 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 事件历史记录,以确定 CopyImage 或 CreateImage 事件中的问题。检查错误消息、失败原因、超出服务配额以及访问问题。有关更多信息,请参阅使用 CloudTrail 记录 Amazon EC2 API 调用。
如果没有持续存在的问题,且在等待 5 到 10 分钟后仍然操作失败,请开立 AWS Support 工单。