

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 作业的挂钩、事件和集成点
<a name="integration-points"></a>

Deadline Cloud 提供了多个*集成点*，您可以在其中围绕作业运行自己的逻辑。集成点是作业生命周期中的一个地方，Deadline Cloud 在其中运行自定义代码或对您配置的服务（例如准备工作程序的脚本或对作业事件做出反应的规则）进行手动控制。您可以使用集成点来调整 Deadline Cloud 以适应您的生产管道：安装软件、设置环境变量、验证或更改作业、处理输出或触发下游自动化。

积分点在三个问题上有所不同：
+ **代码在哪里运行** — 在您的工作站、工作器上或 AWS 云端。
+ **何时运行** — 在提交时、工作之前或之后，或者为了响应事件。
+ **在哪里进行配置** — 在工作站设置、任务捆绑包、队列或舰队属性或您自己的 AWS 账户中。

下图显示了每个集成点在作业生命周期中的运行位置。控制流程，从工作站提交，到工作人员执行，再到账户 AWS 中事件驱动的自动化。
+ **工作站**-提交者挂钩和主机配置脚本运行一次。
+ **Worker** — 队列、作业和步骤环境使用会话范围内的进入和退出操作。任务执行会运行您的工作。相关步骤在任务完成后运行。
+ **AWS 账户** — EventBridge 事件、 CloudWatch指标和警报对状态变化进行异步响应。

![跨工作站、工作线程和云端的 Job 生命周期集成点。](http://docs.aws.amazon.com/zh_cn/deadline-cloud/latest/developerguide/images/integration-points-diagram.png)


下表汇总了积分点。根据前面问题的答案选择一个。表格之后的部分描述了每个选项并链接到详细说明。


| 集成点 | 继续运行 | 配置于 | 它何时运行 | 用于 | 
| --- | --- | --- | --- | --- | 
| 提交者挂钩 | 工作站 | 工作站配置（所有作业）或任务捆绑包 | 在提交过程中，在创建作业之前 | 注入或覆盖环境变量，验证或重写任务包，在提交时与生产跟踪软件同步 | 
| 主机配置脚本 | 工作线程 | 舰队财产（服务管理的舰队） | 每个工作器在启动时使用管理员权限执行一次 | 网络配置，安装需要提升权限的软件 | 
| 队列环境 | 工作线程 | 队列属性 | 当会话进入或退出时，对于队列中的每个作业 | Project-level 配置：非管理员软件安装、共享环境变量、许可证或守护程序设置 | 
| Job 环境 | 工作线程 | Job 捆绑包或作业模板 | 工作前后 | Per-job 设置和拆卸 | 
| 步进环境 | 工作线程 | Job 捆绑包或步骤模板 | 步骤之前和之后 | Per-step 设置和拆卸 | 
| 依赖步骤 | 工作线程 | Job 捆绑包或步骤模板 (`dependsOn`) | 在同一个作业中执行较早的步骤后，成功完成任务 | Post-render 需要本地输出文件的工作，例如将帧编码成影片或生成缩略图 | 
| 亚马逊 EventBridge (EventBridge) 活动 | AWS 云 | 您的 AWS 账户（规则和目标） | 在作业、步骤、任务、队列或预算状态发生变化时 | 生产跟踪、通知、云端自动化、跨队列链接作业 | 
| Amazon CloudWatch (CloudWatch) 指标和警报 | AWS 云 | 你的 AWS 账户 | 持续不断，超越阈值 | 没有事件的情况，例如许可证可用性 (`LicensesInUse`) 和车队容量 | 

## 在工作站上运行自定义逻辑
<a name="integration-points-workstation"></a>

提交者挂钩在提交期间运行，也就是作业到达服务之前。您可以为每个工作站配置它们，它们适用于从该工作站提交的所有作业，或者适用于该捆绑包的作业捆绑包中提交的所有作业。提交者挂钩可以在提交流程的不同时刻更改捆绑包。使用它们来注入环境变量、验证提交，或者在提交时与生产跟踪软件同步。

有关更多信息，请参阅 [提交挂钩](submission-hooks.md)。

## 在工作器上运行自定义逻辑
<a name="integration-points-worker"></a>

以下集成点在渲染主机上运行。它们从最宽的范围到最窄的范围是嵌套的：
+ **主机配置脚本**以管理员权限在工作器启动时运行一次。主机配置脚本特定于服务托管队列 (SMF)。在客户管理的舰队 (CMF) 上，您可以改为自己制作镜像。使用主机配置脚本进行网络设置和管理员级软件安装。
+ **队列、作业和步骤环境**各自定义`onEnter`和`onExit`操作。这些操作在工作程序的会话进入作用域时运行，并且按相反顺序在会话退出作用域时运行。队列环境是进行项目级配置的好地方，该配置适用于队列中的每个作业，例如共享软件、环境变量以及许可证或守护程序设置。Job 和 step 环境将范围缩小到单个作业或步骤。
+ **依赖步骤**添加第二个步骤，该步骤`dependsOn`用于依赖于渲染步骤。例如，您可以对影片进行渲染然后对其进行编码，或者渲染然后生成缩略图。该步骤保持在同一任务中，因此输出已经是本地的。依赖步骤需要自定义提交者或手写作业包。 Job-to-job 依赖关系不是原生的。要链接单独的作业，请使用云中的事件，如下一节所述。

**注意**  
环境是按会话范围划分的，而不是按任务划分的。`onExit`操作在会话拆解时运行，而不是在每个任务之后运行。如果要迁移 Deadline 10 任务后回调，请使用依赖步骤而不是环境`onExit`操作。

有关更多信息，请参阅下列内容：
+ [使用管理员权限运行主机配置脚本](smf-admin.md)
+ [创建队列环境](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue-environment.html)
+ [为您的工作提供申请](provide-applications.md)
+ [步骤依赖关系](build-jobs-scheduling.md#jobs-scheduling-dependencies)
+ 在 GitHub 网站上@@ [打开 Job Description 模板架构](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas)`onEnter`、范围界定 `onExit`

## 响应云端事件
<a name="integration-points-cloud"></a>

EventBridge CloudWatch 让您在不消耗农场容量的情况下对工作活动做出反应。当您的逻辑响应工作结果而不是作为作业的一部分运行时，请使用它们。
+ Deadline Cloud 将带有源的事件发送`aws.deadline`到您 AWS 账户中的默认事件总线。事件包括作业、步骤和任务状态变更、舰队规模建议和预算阈值。规则、 AWS Lambda (Lambda) 函数和死信队列 (DLQ) 归您所有。将规则连接到 Lambda 函数以进行通知、资产注册或跨队列链接任务（事件到 Lambda 或 () 到）。`CreateJob`交付是尽力而为，事件可能会失序，因此请让您的消费者具有等性，并配置重试和 DLQ。
+ CloudWatch 指标和警报涵盖 EventBridge 不包括的情况，最重要的是许可证可用性和车队容量。不存在许可证可用性事件，因此您可以对`LicensesInUse`指标和限制计数发出警报。该`Fleet Size Recommendation Change`事件和`RecommendedFleetSize`指标还推动了客户管理的车队自动扩展。

有关更多信息，请参阅下列内容：
+ [使用管理截止日期云事件 Amazon EventBridge](eventbridge-integration.md)
+ [截止日期云活动详情参考](events-detail-reference.md)
+ [CloudWatch 指标](cloudwatch-metrics.md)
+ [使用 Amazon EC2 Auto Scaling 组创建队列基础设施](create-auto-scaling.md)
+ *EventBridge 服务参考*中的@@ [截止日期云事件](https://docs.aws.amazon.com/eventbridge/latest/ref/events-ref-deadline.html)
+ *Lambda 开发*者指南中的@@ [异步调用](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html)
+ *《用户指南》中的@@ [事件重试策略和使用死信队列](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rule-retry-policy.html) EventBridge *

## 选择一个集成点
<a name="integration-points-choose"></a>

使用以下指导来选择满足常见需求的集成点：
+ 要在提交作业之前对其进行更改，请使用提交者挂钩。
+ 要在渲染主机上围绕工作运行逻辑，请使用主机配置脚本或队列、作业或步骤环境。选择最广泛的适用范围，并使用队列环境进行项目级配置。
+ 要在作业输出仍处于本地状态时对其进行处理，请使用依赖步骤。
+ 要在不消耗服务器场容量的情况下对工作结果做出反应，请使用带有 Lambda 函数的 EventBridge 规则。
+ 对于没有事件的情况，例如许可证或容量限制，请使用 CloudWatch警报。

## 其他资源
<a name="integration-points-resources"></a>

有关相关概念和参考资料，请参阅以下内容：
+ [创建要提交到截止日期云的作业](building-jobs.md)
+ [使用队列环境配置作业](configure-jobs.md)
+ [监控AWS截止日期云](monitoring-overview.md)