使用 aws.sdk,如何知道 Elemental MediaConvert 何时完成作业?

use*_*947 6 amazon-web-services aws-sdk aws-elemental

我想为用户添加一个将视频上传到网站的选项。我想知道 AWS Elemental MediaConvert 是否可以处理必要的转码。

使用 aws sdk,我可以向 aws Elemental MediaConvert 提交作业以进行转码,如下所示...

const result = await new AWS.MediaConvert({apiVersion: '2017-08-29'}).createJob(params).promise()
Run Code Online (Sandbox Code Playgroud)

...但是这只会返回新创建的作业。我似乎看不到如何真正知道工作何时完成。我想知道:是否有一种简单的方法可以知道作业何时实际完成(或失败),以便我可以将响应发送回客户端?

小智 6

实现此目的的一种方法是使用 CloudWatch Events 和简单通知服务 ( SNS )。

你必须:

  1. 在 Web 服务器上设置 HTTP 端点来处理传入通知。
  2. 创建 SNS 主题并将您的 HTTP 端点订阅该主题。
  3. 按照 zolaemil 的描述设置 CloudWatch 事件规则,并将事件的目标设置为 SNS 主题。

当您的 MediaConvert 作业完成时,它将触发 CloudWatch 事件并将作业结果发送到 SNS,然后 SNS 将其转发到您的 Web 服务器。因此,您可以有效地从 MediaConvert 推送到您的 Web 服务器,而不是轮询。


小智 2

您可以根据 MediaConvert 事件设置Cloudwatch 规则。例如

{
  "source": [
    "aws.mediaconvert"
  ],
  "detail-type": [
    "MediaConvert Job State Change"
  ],
  "detail": {
    "status": [
      "COMPLETE"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

它可以针对很多东西,包括 Lambda 函数、SNS 主题等等。