Amazon EventBridge 集成 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon EventBridge 集成

您可以使用 Amazon EventBridge 计划 Amazon SageMaker 建模管线执行。Amazon EventBridge 支持将 Amazon SageMaker 建模管线作为目标。这样,您就可以根据事件总线中的任何事件启动建模管线的执行。使用 EventBridge,您可以自动执行管道,并自动响应诸如训练作业或端点状态更改之类的事件。事件包括上传到 Amazon S3 存储桶的新文件、由于偏差而导致的 Amazon SageMaker 端点状态更改,以及 Amazon Simple Notification Service (SNS) 主题。

可以自动启动以下 SageMaker Pipelines 操作: 

  • StartPipelineExecution

有关计划 SageMaker 作业的更多信息,请参阅使用 Amazon EventBridge 自动执行 SageMaker

使用 Amazon EventBridge 计划管道

要使用 Amazon CloudWatch Events 开始管道执行,您必须创建 EventBridge 规则。为事件创建一项规则时,您可以指定当 EventBridge 收到与该规则匹配的事件时要采取的目标操作。当某个事件与规则匹配时,EventBridge 会将该事件发送到指定的目标并启动规则中定义的操作。

以下教程介绍了如何通过 EventBridge 控制台或 Amazon CLI,使用 EventBridge 计划管道执行。 

先决条件

  • EventBridge 在获得 SageMaker::StartPipelineExecution 权限后可以代入的角色。如果您通过 EventBridge 控制台创建规则,则可以自动创建此角色;否则,您需要自己创建此角色。有关创建 SageMaker 角色的信息,请参阅 SageMaker 角色

  • 要计划的 Amazon SageMaker 管道。要创建 Amazon SageMaker 管道,请参阅定义管道

使用 EventBridge 控制台创建 EventBridge 规则

以下过程介绍了如何使用 EventBridge 控制台创建 EventBridge 规则。 

  1. 导航到 EventBridge 控制台

  2. 选择左侧的规则

  3. 选择 Create Rule

  4. 为您的规则输入名称和描述。

  5. 选择启动此规则的方式。您可以为规则提供以下选择:

    • 事件模式:当发生与模式匹配的事件时,您的规则会启动。您可以选择与特定类型事件相匹配的预定义模式,也可以创建自定义模式。如果选择预定义模式,则可以编辑该模式以对其进行自定义。有关事件模式的更多信息,请参阅 CloudWatch Events 中的事件模式

    • 计划:您的规则将按指定的计划定期启动。您可以使用固定速率的计划,该计划会定期启动并持续指定的分钟数、小时数或周数。您还可以使用 cron 表达式来创建更精细的计划,例如“每月第一个星期一上午 8 点”。自定义或合作伙伴事件总线不支持计划。

  6. 选择所需的事件总线。

  7. 选择当某个事件与您的事件模式匹配或当计划启动时要调用的目标。最多可为每项规则添加 5 个目标。在目标下拉列表中选择 SageMaker Pipeline

  8. 从管道下拉列表中选择要启动的管道。

  9. 使用名称和值对添加要传递给管道执行的参数。参数值可以是静态的,也可以是动态的。有关 Amazon SageMaker 管道参数的更多信息,请参阅 AWS::Events::Rule SagemakerPipelineParameters

    • 每次启动管道时,都会将静态值传递给管道执行。例如,如果在参数列表中指定 {"Name": "Instance_type", "Value": "ml.4xlarge"},则每次 EventBridge 启动管道时都会将其作为 StartPipelineExecutionRequest 中的参数传递。

    • 动态值是使用 JSON 路径指定的。EventBridge 解析事件负载中的值,然后将其传递给管道执行。例如:$.detail.param.value

  10. 选择要用于此规则的角色。您可以使用现有角色,也可以创建新的角色。

  11. (可选)添加标签。

  12. 选择 Create 以最终确定您的规则。

您的规则现已生效,可以启动管道执行了。

使用 Amazon CLI 创建 EventBridge 规则

以下过程介绍了如何使用 Amazon CLI 创建 EventBridge 规则。

  1. 创建要启动的规则。使用 Amazon CLI 创建 EventBridge 规则时,有两个选项可用来决定如何启动规则,即事件模式和计划。

    • 事件模式:当发生与模式匹配的事件时,您的规则会启动。您可以选择与特定类型事件相匹配的预定义模式,也可以创建自定义模式。如果选择预定义模式,则可以编辑该模式以对其进行自定义。  您可以使用以下命令创建具有事件模式的规则:

      aws events put-rule --name <RULE_NAME> ----event-pattern <YOUR_EVENT_PATTERN> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
    • 计划:您的规则将按指定的计划定期启动。您可以使用固定速率的计划,该计划会定期启动并持续指定的分钟数、小时数或周数。您还可以使用 cron 表达式来创建更精细的计划,例如“每月第一个星期一上午 8 点”。自定义或合作伙伴事件总线不支持计划。您可以使用以下命令创建具有计划的规则:

      aws events put-rule --name <RULE_NAME> --schedule-expression <YOUR_CRON_EXPRESSION> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
  2. 添加目标,以便在某个事件与您的事件模式匹配或当计划启动时调用。最多可为每项规则添加 5 个目标。  对于每个目标,您必须指定: 

    • ARN:管道的资源 ARN。

    • 角色 ARN:EventBridge 在执行管道时应代入的角色的 ARN。

    • 参数:要传递的 Amazon SageMaker 管道参数。

  3. 运行以下命令,使用 put-targets 将 Amazon SageMaker 管道作为目标传递给您的规则:

    aws events put-targets --rule <RULE_NAME> --event-bus-name <EVENT_BUS_NAME> --targets "[{\"Id\": <ID>, \"Arn\": <RESOURCE_ARN>, \"RoleArn\": <ROLE_ARN>, \"SageMakerPipelineParameter\": { \"SageMakerParameterList\": [{\"Name\": <NAME>, \"Value\": <VALUE>}]} }]"]