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 规则。
导航到 EventBridge 控制台
。 -
选择左侧的规则。
-
选择
Create Rule
。 -
为您的规则输入名称和描述。
-
选择启动此规则的方式。您可以为规则提供以下选择:
-
事件模式:当发生与模式匹配的事件时,您的规则会启动。您可以选择与特定类型事件相匹配的预定义模式,也可以创建自定义模式。如果选择预定义模式,则可以编辑该模式以对其进行自定义。有关事件模式的更多信息,请参阅 CloudWatch Events 中的事件模式。
-
计划:您的规则将按指定的计划定期启动。您可以使用固定速率的计划,该计划会定期启动并持续指定的分钟数、小时数或周数。您还可以使用 cron 表达式来创建更精细的计划,例如“每月第一个星期一上午 8 点”。自定义或合作伙伴事件总线不支持计划。
-
-
选择所需的事件总线。
-
选择当某个事件与您的事件模式匹配或当计划启动时要调用的目标。最多可为每项规则添加 5 个目标。在目标下拉列表中选择
SageMaker Pipeline
。 -
从管道下拉列表中选择要启动的管道。
-
使用名称和值对添加要传递给管道执行的参数。参数值可以是静态的,也可以是动态的。有关 Amazon SageMaker 管道参数的更多信息,请参阅 AWS::Events::Rule SagemakerPipelineParameters。
-
每次启动管道时,都会将静态值传递给管道执行。例如,如果在参数列表中指定
{"Name": "Instance_type", "Value": "ml.4xlarge"}
,则每次 EventBridge 启动管道时都会将其作为StartPipelineExecutionRequest
中的参数传递。 -
动态值是使用 JSON 路径指定的。EventBridge 解析事件负载中的值,然后将其传递给管道执行。例如:
$.detail.param.value
-
-
选择要用于此规则的角色。您可以使用现有角色,也可以创建新的角色。
-
(可选)添加标签。
-
选择
Create
以最终确定您的规则。
您的规则现已生效,可以启动管道执行了。
使用 Amazon CLI 创建 EventBridge 规则
以下过程介绍了如何使用 Amazon CLI 创建 EventBridge 规则。
-
创建要启动的规则。使用 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>
-
-
添加目标,以便在某个事件与您的事件模式匹配或当计划启动时调用。最多可为每项规则添加 5 个目标。 对于每个目标,您必须指定:
-
ARN:管道的资源 ARN。
-
角色 ARN:EventBridge 在执行管道时应代入的角色的 ARN。
-
参数:要传递的 Amazon SageMaker 管道参数。
-
-
运行以下命令,使用 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>
}]} }]"]