Pipeline-Läufe planen - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Pipeline-Läufe planen

Sie können Ihre Amazon SageMaker Pipelines-Ausführungen mit Amazon planen. EventBridge Amazon SageMaker Pipelines wird in Amazon EventBridge als Ziel unterstützt. Auf diese Weise können Sie die Ausführung Ihrer Modellerstellungspipeline auf der Grundlage eines beliebigen Ereignisses in Ihrem Event-Bus einleiten. Mit EventBridge können Sie Ihre Pipeline-Ausführungen automatisieren und automatisch auf Ereignisse wie Änderungen des Trainingsjobs oder des Endpunktstatus reagieren. Zu den Ereignissen gehören das Hochladen einer neuen Datei in Ihren Amazon S3 S3-Bucket, eine Änderung des Status Ihres SageMaker Amazon-Endpunkts aufgrund von Drift und Themen zu Amazon Simple Notification Service (SNS).

Die folgenden Pipeline-Aktionen können automatisch initiiert werden: 

  • StartPipelineExecution

Weitere Informationen zur Planung von SageMaker Aufträgen finden Sie unter Automatisieren SageMaker mit Amazon EventBridge.

Planen Sie eine Pipeline mit Amazon EventBridge

Um eine Pipeline-Ausführung mit Amazon CloudWatch Events zu starten, müssen Sie eine EventBridge Regel erstellen. Wenn Sie eine Regel für Ereignisse erstellen, geben Sie eine Zielaktion an, die ausgeführt werden soll, wenn EventBridge ein Ereignis eintrifft, das der Regel entspricht. Wenn ein Ereignis der Regel entspricht, wird das Ereignis an das angegebene Ziel EventBridge gesendet und die in der Regel definierte Aktion eingeleitet.

Die folgenden Tutorials zeigen, wie Sie die Ausführung einer Pipeline EventBridge mithilfe der EventBridge Konsole oder der AWS CLI. 

Voraussetzungen

  • Eine Rolle, die mit der entsprechenden SageMaker::StartPipelineExecution Genehmigung übernommen werden EventBridge kann. Diese Rolle kann automatisch erstellt werden, wenn Sie eine Regel von der EventBridge Konsole aus erstellen. Andernfalls müssen Sie diese Rolle selbst erstellen. Informationen zum Erstellen einer SageMaker Rolle finden Sie unter SageMaker Rollen.

  • Eine SageMaker Amazon-Pipeline nach Zeitplan. Informationen zum Erstellen einer SageMaker Amazon-Pipeline finden Sie unter Definieren einer Pipeline.

Erstellen Sie eine EventBridge Regel mithilfe der EventBridge Konsole

Das folgende Verfahren zeigt, wie Sie eine EventBridge Regel mithilfe der EventBridge Konsole erstellen. 

  1. Navigieren Sie zur EventBridge Konsole.

  2. Wählen Sie auf der linken Seite Regeln aus.

  3. Wählen Sie Create Rule.

  4. Geben Sie für Ihre Regel einen Namen und eine Beschreibung ein.

  5. Wählen Sie aus, wie Sie diese Regel initiieren möchten. Sie haben folgende Möglichkeiten für Ihre Regel:

    • Ereignismuster: Ihre Regel wird ausgelöst, wenn ein Ereignis eintritt, das dem Muster entspricht. Sie können ein vordefiniertes Muster wählen, das einem bestimmten Ereignistyp entspricht, oder Sie können ein benutzerdefiniertes Muster erstellen. Wenn Sie ein vordefiniertes Muster auswählen, können Sie das Muster bearbeiten, um es anzupassen. Weitere Informationen zu Ereignismustern finden Sie unter Ereignismuster in CloudWatch Ereignissen.

    • Zeitplan: Ihre Regel wird regelmäßig nach einem bestimmten Zeitplan initiiert. Sie können einen festen Tarif verwenden, der regelmäßig für eine bestimmte Anzahl von Minuten, Stunden oder Wochen initiiert wird. Sie können auch einen Cron-Ausdruck verwenden, um einen detaillierteren Zeitplan zu erstellen, z. B. „jeden ersten Montag im Monat um 8 Uhr.“ Der Zeitplan wird für benutzerdefinierte Ereignisse oder Partner-Ereignisse nicht unterstützt.

  6. Wählen Sie den gewünschten Eventbus aus.

  7. Wählen Sie das/die Ziel/e aus, die aufgerufen werden sollen, wenn ein Ereignis Ihrem Ereignismuster entspricht oder wenn der Zeitplan initiiert wird. Sie können bis zu 5 Ziele pro Regel hinzufügen. Wählen Sie SageMaker Pipeline in der Dropdown-Liste für das Ziel aus.

  8. Wählen Sie die Pipeline, die Sie initiieren möchten, aus der Pipeline-Dropdown-Liste aus.

  9. Fügen Sie mithilfe eines Namens- und Wertepaars Parameter hinzu, die an Ihre Pipeline-Ausführung übergeben werden sollen. Die Parameterwerte können statisch oder dynamisch sein. Weitere Informationen zu Amazon SageMaker Pipeline-Parametern finden Sie unter AWS: :Events: SagemakerPipelineParameters :Rule.

    • Statische Werte werden jedes Mal, wenn die Pipeline initiiert wird, an die Pipeline-Ausführung übergeben. Wenn beispielsweise in der Parameterliste angegeben {"Name": "Instance_type", "Value": "ml.4xlarge"} ist, wird es bei StartPipelineExecutionRequest jeder EventBridge Initiierung der Pipeline als Parameter übergeben.

    • Dynamische Werte werden mithilfe eines JSON Pfads angegeben. EventBridge analysiert den Wert aus einer Ereignisnutzlast und übergibt ihn dann an die Pipeline-Ausführung. Zum Beispiel: $.detail.param.value

  10. Wählen Sie die Rolle aus, die für diese Regel verwendet werden soll. Sie können entweder eine bereits vorhandene Rolle verwenden oder eine neue Rolle erstellen.

  11. (Optional) Tags hinzufügen.

  12. Wählen Sie Create diese Option aus, um Ihre Regel fertigzustellen.

Ihre Regel ist jetzt gültig und bereit, Ihre Pipeline-Ausführungen zu initiieren.

Erstellen Sie eine EventBridge Regel mit dem AWS CLI

Das folgende Verfahren zeigt, wie Sie eine EventBridge Regel mit dem erstellen AWS CLI.

  1. Erstellen Sie eine Regel, die initiiert werden soll. Beim Erstellen einer EventBridge Regel mit dem AWS CLI, haben Sie zwei Optionen, wie Ihre Regel initiiert wird: Ereignismuster und Zeitplan.

    • Ereignismuster: Ihre Regel wird ausgelöst, wenn ein Ereignis eintritt, das dem Muster entspricht. Sie können ein vordefiniertes Muster wählen, das einem bestimmten Ereignistyp entspricht, oder Sie können ein benutzerdefiniertes Muster erstellen. Wenn Sie ein vordefiniertes Muster auswählen, können Sie das Muster bearbeiten, um es anzupassen.  Mit dem folgenden Befehl können Sie eine Regel mit einem Ereignismuster erstellen:

      aws events put-rule --name <RULE_NAME> ----event-pattern <YOUR_EVENT_PATTERN> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
    • Zeitplan: Ihre Regel wird regelmäßig nach einem bestimmten Zeitplan initiiert. Sie können einen festen Tarif verwenden, der regelmäßig für eine bestimmte Anzahl von Minuten, Stunden oder Wochen initiiert wird. Sie können auch einen Cron-Ausdruck verwenden, um einen detaillierteren Zeitplan zu erstellen, z. B. „jeden ersten Montag im Monat um 8 Uhr“. Der Zeitplan wird für benutzerdefinierte Ereignisse oder Partner-Ereignisse nicht unterstützt. Sie können eine Regel mit Zeitplan mit dem folgenden Befehl erstellen:

      aws events put-rule --name <RULE_NAME> --schedule-expression <YOUR_CRON_EXPRESSION> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
  2. Fügen Sie Ziele hinzu, die aufgerufen werden sollen, wenn ein Ereignis Ihrem Ereignismuster entspricht oder wenn der Zeitplan initiiert wird. Sie können bis zu 5 Ziele pro Regel hinzufügen.  Für jedes Ziel müssen Sie Folgendes angeben: 

    • ARN: Die Ressource ARN Ihrer Pipeline.

    • RolleARN: Die ARN Rolle, die die Ausführung der Pipeline übernehmen EventBridge soll.

    • Parameter: Zu übergebende SageMaker Amazon-Pipeline-Parameter.

  3. Führen Sie den folgenden Befehl aus, um mithilfe von put-targets eine SageMaker Amazon-Pipeline als Ziel an Ihre Regel zu übergeben:

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

Planen Sie eine Pipeline mit SageMaker Python SDK

In den folgenden Abschnitten erfahren Sie, wie Sie Berechtigungen für den Zugriff auf EventBridge Ressourcen einrichten und Ihren Pipeline-Zeitplan mithilfe von SageMaker Python erstellenSDK.

Erforderliche Berechtigungen

Sie benötigen die erforderlichen Berechtigungen, um den Pipeline-Scheduler verwenden zu können. Gehen Sie wie folgt vor, um Ihre Berechtigungen einzurichten:

  1. Fügen Sie der IAM Rolle, die zur Erstellung der Pipeline-Trigger verwendet wurde, die folgende Richtlinie für Mindestberechtigungen hinzu, oder verwenden Sie AWS verwaltete RichtlinieAmazonEventBridgeSchedulerFullAccess.

    { "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. Stellen Sie eine Vertrauensbeziehung mit her, EventBridge indem Sie den Dienstprinzipal scheduler.amazonaws.com zur Vertrauensrichtlinie dieser Rolle hinzufügen. Stellen Sie sicher, dass Sie der Ausführungsrolle die folgende Vertrauensrichtlinie zuordnen, wenn Sie das Notebook in SageMaker Studio starten.

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

Erstellen Sie einen Pipeline-Zeitplan

Mithilfe des PipelineSchedule Konstruktors können Sie eine Pipeline so planen, dass sie einmal oder in einem festgelegten Intervall ausgeführt wird. Ein Pipelineplan muss vom Typ atrate, oder cron sein. Dieser Satz von Planungstypen ist eine Erweiterung der EventBridge Planungsoptionen. Weitere Informationen zur Verwendung der PipelineSchedule Klasse finden Sie unter sagemaker.workflow.triggers. PipelineSchedule. Das folgende Beispiel zeigt, wie Sie jeden Planungstyp mit erstellenPipelineSchedule.

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" )
Anmerkung

Wenn Sie einen einmaligen Zeitplan erstellen und auf die aktuelle Uhrzeit zugreifen müssen, verwenden Sie datetime.utcnow() stattdatetime.now(). Letzteres speichert den aktuellen Zonenkontext nicht und führt dazu, dass eine falsche Uhrzeit übergeben wird EventBridge.

Hängen Sie den Trigger an Ihre Pipeline an

Um Ihren an Ihre PipelineSchedule Pipeline anzuhängen, rufen Sie den put_triggers Aufruf für Ihr erstelltes Pipeline-Objekt mit einer Liste von Triggern auf. Wenn Sie eine Antwort erhaltenARN, haben Sie den Zeitplan erfolgreich in Ihrem Konto erstellt und EventBridge beginnen, die Zielpipeline zum angegebenen Zeitpunkt oder mit der angegebenen Geschwindigkeit aufzurufen. Sie müssen eine Rolle mit den richtigen Berechtigungen angeben, um Trigger an eine übergeordnete Pipeline anzuhängen. Wenn Sie keine angeben, ruft Pipelines die Standardrolle, die zum Erstellen der Pipeline verwendet wurde, aus der Konfigurationsdatei ab.

Das folgende Beispiel zeigt, wie ein Zeitplan an eine Pipeline angehängt wird.

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>)

Beschreiben Sie die aktuellen Auslöser

Um Informationen über Ihre erstellten Pipeline-Trigger abzurufen, können Sie den describe_trigger() API mit dem Namen des Triggers aufrufen. Dieser Befehl gibt Details zum erstellten Zeitplanausdruck zurück, z. B. die Startzeit, den Aktivierungsstatus und andere nützliche Informationen. Das folgende Snippet zeigt einen Beispielaufruf:

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

Ressourcen für Cleanup-Trigger

Bevor Sie Ihre Pipeline löschen, sollten Sie vorhandene Auslöser bereinigen, um ein Ressourcenleck in Ihrem Konto zu vermeiden. Sie sollten die Trigger löschen, bevor Sie die übergeordnete Pipeline zerstören. Sie können Ihre Trigger löschen, indem Sie eine Liste mit Triggernamen an die übergeben delete_triggersAPI. Das folgende Snippet zeigt, wie Sie Trigger löschen.

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

Beachten Sie beim Löschen Ihrer Trigger die folgenden Einschränkungen:

  • Die Option zum Löschen der Trigger durch Angabe von Triggernamen ist nur in SageMaker Python verfügbarSDK. Wenn Sie die Pipeline in einem CLI oder einem DeletePipeline API Aufruf löschen, werden Ihre Trigger nicht gelöscht. Dadurch werden die Trigger verwaist und es wird SageMaker versucht, einen Run für eine nicht existierende Pipeline zu starten.

  • Wenn Sie eine andere Notebook-Sitzung verwenden oder das Pipeline-Ziel bereits gelöscht haben, sollten Sie außerdem verwaiste Zeitpläne über den Scheduler CLIoder die Konsole bereinigen. EventBridge