微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel 中的 AWS SDK Media Convert 错误处理

如何解决Laravel 中的 AWS SDK Media Convert 错误处理

我有一个职位 ID 列表来检查它们的状态。因此,我只是简单地遍历所有作业 ID 以获取它们在 Media Convert 上的状态。

function get_aws_job_id_status($job_id)
{
    $result = [];
    $client = \App::make('aws')->createClient('MediaConvert',[

        // 'profile' => 'default',// 'version' => '2017-08-29','region'  => 'region','endpoint' => "endpoint"
    ]);
    try {
        $result = $client->getJob([
            'Id' => $job_id,]);
        return $result;
    } catch (AwsException $e) {
        return $result;
    }
}

我在循环内使用上述函数获取状态。 参考 AWS DocsStackoverflow,但是,当我没有找到给定作业 ID 的记录时,它返回“NotFoundException”错误,该错误不会进入 catch 块并打破循环。有什么方法可以处理该异常,以便我可以继续循环?

解决方法

我相信您需要调用 Aws\MediaConvert\Exception\MediaConvertException 并捕获 MediaConvert 特定的错误。我没有看到您的任何 use 语句,但我认为代码如下所示。

请注意,我正在捕获所有 MediaConvert 客户端错误,但我相信您可以通过执行 Aws\MediaConvert\Exception\MediaConvertException\NotFoundException

来明确调用 NotFoundException
use Aws\MediaConvert\MediaConvertClient;
use Aws\Exception\AwsException;
use Aws\MediaConvert\Exception\MediaConvertException as MediaConvertError;


function get_aws_job_id_status($job_id)
{
    $result = [];
    $client = \App::make('aws')->createClient('MediaConvert',[

        // 'profile' => 'default',// 'version' => '2017-08-29','region'  => 'region','endpoint' => "endpoint"
    ]);
    try {
        $result = $client->getJob([
            'Id' => $job_id,]);
        return $result;
    } catch (MediaConvertError $e) {
    
           /*Oh no,the job id provided ca not be found.
             Let us log the job id and the message and return it back up to the main application
             Note this assumes the main application is iterating through a list of JobIDs and 
             can handle this and log that job id was not found and will not have the normal Job
             JSON structure. 
           */
        $error = array("Id"=>$job_id,"Message"=>"Job Id Not found");
        $result = json_encode($error);
        return $result;
    }
}

另外请记住,如果您正在轮询工作状态,如果您的列表变得太大,您可能会受到限制。您需要捕获 TooManyRequestsException [1] 并尝试使用回退阈值 [2] 进行轮询。

最具扩展性的解决方案是使用 CloudWatch Events 并根据 STATUS_UPDATE、COMPLETE 和 ERROR 状态跟踪作业。 [3]

[1] https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.MediaConvert.Exception.MediaConvertException.html
[2] https://docs.aws.amazon.com/general/latest/gr/api-retries.html
[3] https://docs.aws.amazon.com/mediaconvert/latest/ug/monitoring-overview.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。