本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
作业的挂钩、事件和集成点
Deadline Cloud 提供了多个集成点,您可以在其中围绕作业运行自己的逻辑。集成点是作业生命周期中的一个地方,Deadline Cloud 在其中运行自定义代码或对您配置的服务(例如准备工作程序的脚本或对作业事件做出反应的规则)进行手动控制。您可以使用集成点来调整 Deadline Cloud 以适应您的生产管道:安装软件、设置环境变量、验证或更改作业、处理输出或触发下游自动化。
积分点在三个问题上有所不同:
-
代码在哪里运行 — 在您的工作站、工作器上或 AWS 云端。
-
何时运行 — 在提交时、工作之前或之后,或者为了响应事件。
-
在哪里进行配置 — 在工作站设置、任务捆绑包、队列或舰队属性或您自己的 AWS 账户中。
下图显示了每个集成点在作业生命周期中的运行位置。控制流程,从工作站提交,到工作人员执行,再到账户 AWS 中事件驱动的自动化。
工作站-提交者挂钩和主机配置脚本运行一次。
Worker — 队列、作业和步骤环境使用会话范围内的进入和退出操作。任务执行会运行您的工作。相关步骤在任务完成后运行。
AWS 账户 — EventBridge 事件、 CloudWatch指标和警报对状态变化进行异步响应。
下表汇总了积分点。根据前面问题的答案选择一个。表格之后的部分描述了每个选项并链接到详细说明。
| 集成点 | 继续运行 | 配置于 | 它何时运行 | 用于 |
|---|---|---|---|---|
提交者挂钩 |
工作站 |
工作站配置(所有作业)或任务捆绑包 |
在提交过程中,在创建作业之前 |
注入或覆盖环境变量,验证或重写任务包,在提交时与生产跟踪软件同步 |
主机配置脚本 |
工作线程 |
舰队财产(服务管理的舰队) |
每个工作器在启动时使用管理员权限执行一次 |
网络配置,安装需要提升权限的软件 |
队列环境 |
工作线程 |
队列属性 |
当会话进入或退出时,对于队列中的每个作业 |
Project-level 配置:非管理员软件安装、共享环境变量、许可证或守护程序设置 |
Job 环境 |
工作线程 |
Job 捆绑包或作业模板 |
工作前后 |
Per-job 设置和拆卸 |
步进环境 |
工作线程 |
Job 捆绑包或步骤模板 |
步骤之前和之后 |
Per-step 设置和拆卸 |
依赖步骤 |
工作线程 |
Job 捆绑包或步骤模板 ( |
在同一个作业中执行较早的步骤后,成功完成任务 |
Post-render 需要本地输出文件的工作,例如将帧编码成影片或生成缩略图 |
亚马逊 EventBridge (EventBridge) 活动 |
AWS 云 |
您的 AWS 账户(规则和目标) |
在作业、步骤、任务、队列或预算状态发生变化时 |
生产跟踪、通知、云端自动化、跨队列链接作业 |
Amazon CloudWatch (CloudWatch) 指标和警报 |
AWS 云 |
你的 AWS 账户 |
持续不断,超越阈值 |
没有事件的情况,例如许可证可用性 ( |
在工作站上运行自定义逻辑
提交者挂钩在提交期间运行,也就是作业到达服务之前。您可以为每个工作站配置它们,它们适用于从该工作站提交的所有作业,或者适用于该捆绑包的作业捆绑包中提交的所有作业。提交者挂钩可以在提交流程的不同时刻更改捆绑包。使用它们来注入环境变量、验证提交,或者在提交时与生产跟踪软件同步。
有关更多信息,请参阅 提交挂钩。
在工作器上运行自定义逻辑
以下集成点在渲染主机上运行。它们从最宽的范围到最窄的范围是嵌套的:
-
主机配置脚本以管理员权限在工作器启动时运行一次。主机配置脚本特定于服务托管队列 (SMF)。在客户管理的舰队 (CMF) 上,您可以改为自己制作镜像。使用主机配置脚本进行网络设置和管理员级软件安装。
-
队列、作业和步骤环境各自定义
onEnter和onExit操作。这些操作在工作程序的会话进入作用域时运行,并且按相反顺序在会话退出作用域时运行。队列环境是进行项目级配置的好地方,该配置适用于队列中的每个作业,例如共享软件、环境变量以及许可证或守护程序设置。Job 和 step 环境将范围缩小到单个作业或步骤。 -
依赖步骤添加第二个步骤,该步骤
dependsOn用于依赖于渲染步骤。例如,您可以对影片进行渲染然后对其进行编码,或者渲染然后生成缩略图。该步骤保持在同一任务中,因此输出已经是本地的。依赖步骤需要自定义提交者或手写作业包。 Job-to-job 依赖关系不是原生的。要链接单独的作业,请使用云中的事件,如下一节所述。
注意
环境是按会话范围划分的,而不是按任务划分的。onExit操作在会话拆解时运行,而不是在每个任务之后运行。如果要迁移 Deadline 10 任务后回调,请使用依赖步骤而不是环境onExit操作。
有关更多信息,请参阅下列内容:
-
在 GitHub 网站上@@ 打开 Job Description 模板架构
onEnter、范围界定onExit
响应云端事件
EventBridge CloudWatch 让您在不消耗农场容量的情况下对工作活动做出反应。当您的逻辑响应工作结果而不是作为作业的一部分运行时,请使用它们。
-
Deadline Cloud 将带有源的事件发送
aws.deadline到您 AWS 账户中的默认事件总线。事件包括作业、步骤和任务状态变更、舰队规模建议和预算阈值。规则、 AWS Lambda (Lambda) 函数和死信队列 (DLQ) 归您所有。将规则连接到 Lambda 函数以进行通知、资产注册或跨队列链接任务(事件到 Lambda 或 () 到)。CreateJob交付是尽力而为,事件可能会失序,因此请让您的消费者具有等性,并配置重试和 DLQ。 -
CloudWatch 指标和警报涵盖 EventBridge 不包括的情况,最重要的是许可证可用性和车队容量。不存在许可证可用性事件,因此您可以对
LicensesInUse指标和限制计数发出警报。该Fleet Size Recommendation Change事件和RecommendedFleetSize指标还推动了客户管理的车队自动扩展。
有关更多信息,请参阅下列内容:
-
EventBridge 服务参考中的@@ 截止日期云事件
-
Lambda 开发者指南中的@@ 异步调用
-
《用户指南》中的@@ 事件重试策略和使用死信队列 EventBridge
选择一个集成点
使用以下指导来选择满足常见需求的集成点:
-
要在提交作业之前对其进行更改,请使用提交者挂钩。
-
要在渲染主机上围绕工作运行逻辑,请使用主机配置脚本或队列、作业或步骤环境。选择最广泛的适用范围,并使用队列环境进行项目级配置。
-
要在作业输出仍处于本地状态时对其进行处理,请使用依赖步骤。
-
要在不消耗服务器场容量的情况下对工作结果做出反应,请使用带有 Lambda 函数的 EventBridge 规则。
-
对于没有事件的情况,例如许可证或容量限制,请使用 CloudWatch警报。
其他资源
有关相关概念和参考资料,请参阅以下内容: