選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

排程管道執行

焦點模式
排程管道執行 - Amazon SageMaker AI

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

您可以使用 Amazon EventBridge 排程 Amazon SageMaker 管道執行。 EventBridge Amazon EventBridge 中支援 Amazon SageMaker 管道做為目標。 EventBridge 這可讓您根據事件匯流排中的任何事件,啟動模型建置管道執行。使用 EventBridge,您可以自動執行管道,並自動回應訓練工作或端點狀態變更等事件。事件包括要上傳至 Amazon S3 儲存貯體的新檔案、因偏離而變更 Amazon SageMaker AI 端點的狀態,以及 Amazon Simple Notification Service (SNS) 主題。

可自動啟動下列管道動作: 

  • StartPipelineExecution

如需排程 SageMaker AI 任務的詳細資訊,請參閱使用 Amazon EventBridge 自動化 SageMaker AI。

使用 Amazon EventBridge 為管道排程

若要使用 Amazon CloudWatch Events 開始管道執行,您必須建立 EventBridge 規則。當您為事件建立規則時,您可以指定當 EventBridge 收到符合規則的事件時要採取的目標動作。當事件符合規則時,EventBridge 會將事件傳送到指定目標並啟動規則中定義的動作。

下列教學課程示範如何使用 EventBridge 主控台或 AWS CLI為管道執行排程。 

必要條件

  • EventBridge 在 SageMaker::StartPipelineExecution 許可下可以擔任的角色。如果您從 EventBridge 主控台建立規則,可以自動建立此角色;否則,您需要自行建立此角色。如需建立 SageMaker AI 角色的資訊,請參閱 SageMaker 角色

  • 要排程的 Amazon SageMaker AI 管道。若要建立 Amazon SageMaker AI 管道,請參閱定義管道

使用 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 AI Pipeline 參數的詳細資訊,請參閱AWS::Events::Rule SagemakerPipelineParameters

    • 每次啟動管道時,靜態值都會傳遞給管道執行。例如,如果已在參數清單中指定 {"Name": "Instance_type", "Value": "ml.4xlarge"},則每次 EventBridge 啟動管道時,它都會作為參數在 StartPipelineExecutionRequest 中傳遞。

    • 動態值是使用 JSON 路徑指定的。EventBridge 會剖析事件承載中的值,然後將其傳遞至管道執行。例如:$.detail.param.value

  10. 選取要用於此規則的角色。您可使用現有的角色或建立新角色。

  11. (可選) 新增標籤。

  12. 選取 Create 以完成規則。

您的規則現已生效,可用於啟動管道執行了。

使用 AWS CLI 建立 EventBridge 規則

下列程序示範如何使用 AWS CLI建立 EventBridge 規則。

  1. 建立要啟動的規則。使用 建立 EventBridge 規則時 AWS CLI,您有兩個啟動規則的選項:事件模式和排程。

    • 事件模式:當符合模式的事件發生時,您的規則就會啟動。您可以選擇符合特定事件類型的預先定義模式,也可以建立自訂模式。如果您選取預先定義的模式,可以編輯模式以對其進行自訂。  您可以使用下列命令建立具有事件模式的規則:

      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 AI 管道參數。

  3. 執行下列命令,使用 put-targets 將 Amazon SageMaker AI 管道做為目標傳遞至您的規則:

    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>}]} }]"] 

使用 SageMaker Python SDK 排程管道

下列各節說明如何設定存取 EventBridge 資源的許可,並使用 SageMaker Python SDK 建立管道排程。

所需的許可

您需要具有使用管道排程器的必要許可。完成下列步驟以設定您的許可:

  1. 將下列最低權限政策連接至用於建立管道觸發條件的 IAM 角色,或使用 AWS 受管政策 AmazonEventBridgeSchedulerFullAccess

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "scheduler:ListSchedules", "scheduler:GetSchedule", "scheduler:CreateSchedule", "scheduler:UpdateSchedule", "scheduler:DeleteSchedule" ], "Effect": "Allow", "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/*", "Condition": { "StringLike": { "iam:PassedToService": "scheduler.amazonaws.com" } } } ] }
  2. 將服務主體新增至此角色的信任政策scheduler.amazonaws.com,以建立與 EventBridge 的信任關係。如果您在 SageMaker Studio 中啟動筆記本,請務必將下列信任政策連接至執行角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "scheduler.amazonaws.com", "sagemaker.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

建立管道排程

使用PipelineSchedule建構器,您可以將管道排程為執行一次或按預定間隔執行。管道排程的類型必須是 atratecron。這組排程類型是 EventBridge 排程選項的延伸。如需如何使用 PipelineSchedule類別的詳細資訊,請參閱 sagemaker.workflow.triggers.PipelineSchedule。下列範例示範如何使用 建立每個排程類型PipelineSchedule

from sagemaker.workflow.triggers import PipelineSchedule # schedules a pipeline run for 12/13/2023 at time 10:15:20 UTC my_datetime_schedule = PipelineSchedule( name="<schedule-name>", at=datetime(2023, 12, 13, 10, 15, 20) ) # schedules a pipeline run every 5 minutes my_rate_schedule = PipelineSchedule( name="<schedule-name>", rate=(5, "minutes") ) # schedules a pipeline run at 10:15am UTC on the last Friday of each month during the years 2022 to 2023 my_cron_schedule = PipelineSchedule( name="<schedule-name>", cron="15 10 ? * 6L 2022-2023" )
注意

如果您建立一次性排程,且需要存取目前的時間,請使用 datetime.utcnow()而非 datetime.now()。後者不會存放目前的區域內容,並導致不正確的時間傳遞至 EventBridge。

將觸發條件連接至您的管道

若要將 PipelineSchedule 連接至您的管道,請使用觸發條件清單,在建立的管道物件上叫用 put_triggers呼叫。如果您收到回應 ARN,則已成功在帳戶中建立排程,且 EventBridge 開始在指定的時間或速率叫用目標管道。您必須指定具有正確許可的角色,才能將觸發條件連接至父管道。如果您不提供,管道會擷取用於從組態檔案建立管道的預設角色。

下列範例示範如何將排程連接至管道。

scheduled_pipeline = Pipeline( name="<pipeline-name>", steps=[...], sagemaker_session=<sagemaker-session>, ) custom_schedule = PipelineSchedule( name="<schedule-name>", at=datetime(year=2023, month=12, date=25, hour=10, minute=30, second=30) ) scheduled_pipeline.put_triggers(triggers=[custom_schedule], role_arn=<role>)

描述目前的觸發條件

若要擷取所建立管道觸發程序的相關資訊,您可以使用觸發程序名稱叫用 describe_trigger() API。此命令會傳回所建立排程表達式的詳細資訊,例如其開始時間、啟用狀態和其他實用資訊。以下程式碼片段顯示範例調用:

scheduled_pipeline.describe_trigger(name="<schedule-name>")

清除觸發程序資源

刪除管道之前,請先清除現有的觸發條件,以避免帳戶中的資源洩漏。您應該先刪除觸發條件,再銷毀父管道。您可以透過將觸發條件名稱清單傳遞至 delete_triggers API 來刪除觸發條件。下列程式碼片段示範如何刪除觸發。

pipeline.delete_triggers(trigger_names=["<schedule-name>"])
注意

刪除觸發條件時,請注意下列限制:

  • 只有在 SageMaker Python SDK 中才能使用透過指定觸發名稱刪除觸發的選項。在 CLI 或 DeletePipeline API 呼叫中刪除管道並不會刪除您的觸發。因此,觸發會變得孤立,而 SageMaker AI 會嘗試為不存在的管道啟動執行。

  • 此外,如果您使用另一個筆記本工作階段或已刪除管道目標,請透過排程器 CLI 或 EventBridge 主控台清除孤立排程。

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。