Skip To Content

使用 webhook 事件自动执行笔记本工作流

Webhook 是一种允许应用程序为其他应用程序提供事件驱动型信息的机制。 Webhook 可以在组织服务级别下配置为在发生与组织或服务关联的事件时自动运行笔记本。

使用组织 webhook 自动化 notebook

作为 ArcGIS Enterprise 管理员或具有组织 webhook 权限的用户,您可以创建、管理和配置 webhook。 您可以将 webhook 配置为在与您的门户项目、群组或用户关联的事件发生时自动运行您拥有的笔记本。 ArcGIS Notebook Server将作为 webhook 负载的接收器。 触发 webhook 后,会向 ArcGIS Notebook Server发出 HTTP 请求以运行所选笔记本,无需任何用户交互。

注:

通过 webhook 同时运行的笔记本数量受限于 ArcGIS Notebook Server中的 maxExecuteNotebookContainersPerNode 系统属性。

创建组织 webhook

可以从组织设置页面管理 webhook。 使用以下步骤创建 webhook:

  1. 以默认管理员或具有组织 webhook 权限的自定义角色身份登录。
  2. 单击组织 > 设置 > Webhook
  3. 在组织 webhook 部分中,单击创建 webhook
  4. 指定 webhook 名称。
  5. 指定将触发 webhook 的事件类型。

    默认情况下,将考虑所有事件类型(项目、用户、群组和角色)。

    有关详细信息,请参阅支持的触发事件

  6. 选择 Notebook 作为负载类型。

    注:
    如果 Notebook 选项不可用,则表示未将 Notebook Server 配置到门户。 如果 Notebook 可用但是无法选择此项,则表示您没有任何可用于配置 webhook 的 Notebook。 您必须是将用于 webhook 的笔记本项目的所有者。

  7. 选择触发 webhook 时将运行的笔记本。
  8. 可以选择性地输入一个将包含在 webhook 负载中的密钥

    您也可以选择为密钥使用预先生成的随机值。

  9. 单击创建 webhook 以保存 webhook 设置并创建 webhook。

管理组织 webhook

可以从组织设置页面管理 webhook。 使用以下步骤管理现有 webhook:

  1. 以默认管理员或具有组织 webhook 权限的自定义角色身份登录。
  2. 单击组织 > 设置 > Webhook 以查看一系列由您和其他 webhook 管理员创建的组织 webhook。

可以通过以下操作管理您的现有 webhook。

  • 取消激活 webhook - 当 webhook 处于活动状态时,单击活动。 取消激活 webhook 后,将停止在触发 webhook 时传送负载。
  • 激活 webhook - 当 webhook 处于非活动状态时,单击非活动。 Webhook 被激活后将继续传送负载。
  • 编辑 webhook - 单击 webhook 上的选项按钮,然后单击编辑更新 webhook。
  • 删除 webhook - 单击 webhook 上的选项按钮,然后单击删除。 单击确认以删除 webhook。

修改高级组织 webhook 设置

使用高级 webhook 设置可更改多项属性,例如可以执行的传送尝试次数、已用时间通知和 webhook 的通知超时属性。 这些高级设置将应用于组织中的所有 webhook。 要修改高级 webhook 设置,请完成以下步骤:

  1. 以默认管理员或具有组织 webhook 权限的自定义角色身份登录。
  2. 单击组织 > 设置 > Webhook
  3. 在组织 webhook 部分中,单击高级设置以修改高级 webhook 属性的默认值。

组织 webhook 的负载

当通过 webhook 运行 notebook 时,webhook 的负载信息会自动加入到 notebook 的初始单元格中。 加入后,webhook 负载中提供的信息可以在 Notebook 中用于进一步自动化工作流。

包含在 Notebook 中的 Webhook 负载信息:


webhookPayload = {
    "properties": {
        "itemId": "<notebook_item_id>"
    },
    "events": [
        {
            "source": "<items | user | group | role>",
            "id": "<source_id>",
            "userId": "<user_id_of_member_triggered_webhook>",
            "when": 1742596800000,
            "operation": "<operation_triggered_webhook>",
            "properties": {"<operation_details>"},
            "username": "<username_of_member_triggered_webhook>"
        }
    ],
    "info": {
        "webhookId": "<webhook_id>",
        "portalURL": "<portal_url>",
        "webhookName": "<webhook_name>",
        "when": 1742596805000
    }
}

使用服务 webhook 自动化 notebook

webhook(包括用于异步地理处理服务、要素服务和其他通用 webhook)可以触发 notebook 运行以响应特定事件。 管理员可以将 webhook 接收器 URL 注册为这些 webhook 的 hook 或负载 URL。 当触发与 webhook 关联的特定事件时,将自动调用 Notebook Webhook 接收器 URL,启动相应 notebook 的运行。

以下部分介绍了如何在 ArcGIS Notebook Server中配置笔记本 webhook 接收器。

创建并复制 API 密钥

API 密钥是一种长期令牌,可授权服务 webhook 运行相关的 notebook 项目并安全地访问 notebook 运行所需的 ArcGIS Enterprise 功能。

API 密钥是使用 API 密钥凭据(一种托管在组织中的项目类型)生成的。 API 密钥凭据包含允许您生成 API 密钥并管理其权限和有效期等属性的设置。 创建 API 密钥凭证并在应用程序中使用 API 密钥的过程称为 API 密钥身份验证。

要创建并复制 API 密钥,请完成以下步骤:

  1. 以管理用户登录到门户。
  2. 单击 API 密钥项目的项目详细信息页面。
  3. 有关如何创建并复制 API 密钥的步骤,请参阅创建 API 密钥教程中的步骤。 授予创建和编辑笔记本、创建、更新和删除项目的权限,并可选择授予 ArcPy 的高级笔记本权限。

    在 notebook 中执行的工作流程,可能需要附加权限。

注册 notebook webhook 接收器

要注册 notebook webhook 接收器,请完成以下步骤:

  1. 以管理员身份登录门户。
  2. 单击组织 > 设置 > webhook > 创建 webhook 接收器
  3. 输入 webhook 接收器的名称。
  4. 选择 webhook 接收器将运行的笔记本。
  5. 输入 32 字符密钥以用于确保 webhook 的原点。
  6. 输入签名标头的逗号分隔列表以在其中检查是否存在已加密负载。
  7. 输入具有访问笔记本项目权限、“创建笔记本/创建高级笔记本”权限和笔记本中的任何其他 GIS 功能的 API 令牌。
  8. (可选)输入采用 JSON 格式的参数。
  9. 单击创建接收器

创建异步地理处理服务或要素服务 webhook

要创建异步地理处理服务或要素服务 webhook,请完成以下步骤:

  1. 使用 webhook 接收器 URL、标题密钥和签名标题创建服务 webhook
  2. 验证每次触发特定服务 webhook 事件时,与 notebook webhook 接收器关联的 notebook 是否运行。

服务 webhook 的负载

当通过 webhook 运行 notebook 时,webhook 的负载信息会自动加入到 notebook 的初始单元格中。 加入后,webhook 负载中提供的信息可以在 Notebook 中用于进一步自动化工作流。

要素服务 webhook

以下代码是要素服务 webhook 的负载示例。

webhookPayload = {
    "serviceType": "FeatureServer",
    "changesUrl": "<change_url>",
    "name": "<webhook_name>",
    "id": "<webhook_id>",
    "folderName": "<folder_name>",
    "serviceName": "<service_name>",
    "events": [
        {
            "eventType": "FeaturesCreated",
            "when": 1740436800000
        },
        {
            "eventType": "FeaturesDeleted",
            "when": 1740436810000
        },
        {
            "eventType": "FeaturesUpdated",
            "when": 1740436820000
        }
    ]
}

地理处理服务 webhook

以下代码是地理处理服务 webhook 的负载示例。

webhookPayload = {
    "serviceType": "GPServer",
    "jobId": "<job_id>",
    "statusURL": "<status_url>",
    "name": "<webhook_name>",
    "taskName": "<task_name>",
    "folderName": "<folder_name>",
    "serviceName": "<service_name>",
    "events": [
        {
            "eventType": "esriJobSucceeded",
            "when": 1742337000000
        }
    ]
}