【问题标题】:AWS SDK EC2 - "DescribeInstances" Exception, skip instance in listAWS SDK EC2 - “DescribeInstances”异常,跳过列表中的实例
【发布时间】:2017-06-20 01:57:15
【问题描述】:

我有一个保存在数据库中的实例 ID 列表。 定期检查会根据 AWS 验证这些 ID。 问题是,如果其中一个实例不存在,那么我得到异常并且整个请求失败(没有 ID 的返回)。

有没有办法跳过丢失的 ID 并取回除该特定 instanceID 之外的所有数据?

我的代码:

$requesltArray = ['Filters' => $this->_Filters, 'InstanceIds' => $this->_InstanceIDs];

try {
    $reservations = $this->_EC2Client->DescribeInstances($requesltArray)->toArray();
} catch (Ec2Exception $exc) {
    echo $exc;
    return [];
}

导致异常:

aws sdk 执行“DescribeInstances”时出错 InvalidInstanceID.NotFound

【问题讨论】:

    标签: php amazon-web-services exception amazon-ec2 aws-sdk


    【解决方案1】:

    根据您拥有的实例数量,您可以考虑为每个单独的 ID 执行 DescribeInstances 请求。

    $reservations = [];
    foreach($this->_InstanceIDs as $anInstance){
        try {
            $requesltArray = ['Filters' => $this->_Filters, 'InstanceIds' => $anInstance];
            $aReservation = $this->_EC2Client->DescribeInstances($requesltArray)->toArray();
            $reservations[] = $aReservation;
        } catch (Ec2Exception $exc) {
            // --> Delete the instance from your database?
            continue;
        }
    }
    
    dd($reservations);
    

    【讨论】:

    • 谢谢,但不可能....我想过这个解决方案,但在我的环境中它不是一个有效的解决方案
    • 你能告诉我为什么在你当前的环境下不可能吗?是因为实例的数量吗?
    • 是的,你明白了:)
    • @DannyValariola 如果您希望从记录中删除无效实例,那么一个不错的选择是保留您在帖子中输入的代码并从异常中检索实例 ID .我想有一种方法可以从异常中检索 ID?最坏的情况是通过处理错误消息“Client.InvalidInstanceID.NotFound: The instance ID 'i-XYZ' doesn't exist”。然后你循环。
    • 是的,这就是我最终要做的。顺便说一句,异常来自一个从未在 AWS 上的 ID(一个虚构的测试)并且没有过时的 ID
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    • 2019-04-20
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多