为何调用waitUntilInstanceTerminated会抛出含EC2实例原始JSON的错误?
EC2实例终止Waiter调用失败排查方案
先确认实例当前状态
调用waitUntilInstanceTerminated前,手动调用DescribeInstancesCommand查询实例状态,确认实例是否已经进入shutting-down或terminated流程。如果实例处于running、stopped这类非终止状态,waiter会直接触发FAILURE。调整Waiter的轮询配置
默认waiter的超时时间或轮询间隔可能不满足你的实例终止耗时,自定义配置参数延长等待时间:await waitUntilInstanceTerminated( { client: ec2Client, maxWaitTime: 180, // 最长等待3分钟 minDelay: 3, // 每3秒轮询一次状态 }, { InstanceIds: ['你的实例ID'] } );检查权限完整性
确保执行代码的IAM身份拥有ec2:DescribeInstances权限,waiter内部依赖该接口查询状态,权限缺失会导致状态查询失败,直接返回FAILURE。验证实例ID的正确性
确认传入waiter的InstanceIds和你调用TerminateInstancesCommand时传入的完全一致,避免因ID错误导致查询到不存在的实例,触发失败判定。解析错误中的实例状态
错误信息里的reason包含了DescribeInstancesCommand的输出,把具体内容展开,就能看到实例的真实状态,比如是否处于异常状态(如error),这会直接导致waiter判定FAILURE。
内容的提问来源于stack exchange,提问作者Corey
相关产品推荐
相关产品推荐

