Programe los recorridos de las tuberías - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Programe los recorridos de las tuberías

Puedes programar tus ejecuciones de Amazon SageMaker Pipelines con Amazon EventBridge. Amazon admite Amazon SageMaker Pipelines como destino. EventBridge Esto le permite iniciar la ejecución de su canalización de creación de modelos en función de cualquier evento del bus de eventos. Con él EventBridge, puede automatizar las ejecuciones de sus canalizaciones y responder automáticamente a eventos como los cambios en el estado de los puntos finales, tareas o tareas de formación. Los eventos incluyen la carga de un nuevo archivo en tu bucket de Amazon S3, un cambio en el estado de tu SageMaker punto de conexión de Amazon debido a una desviación y temas relacionados con Amazon Simple Notification Service (SNS).

Las siguientes acciones de Pipelines se pueden iniciar automáticamente: 

  • StartPipelineExecution

Para obtener más información sobre la programación de SageMaker trabajos, consulta Automatizar SageMaker con Amazon EventBridge.

Programa una canalización con Amazon EventBridge

Para iniciar la ejecución de una canalización con Amazon CloudWatch Events, debe crear una EventBridge regla. Al crear una regla para los eventos, se especifica la acción objetivo que se debe realizar cuando se EventBridge recibe un evento que coincide con la regla. Cuando un evento coincide con la regla, EventBridge envía el evento al destino especificado e inicia la acción definida en la regla.

Los siguientes tutoriales muestran cómo programar la ejecución de una canalización EventBridge mediante la EventBridge consola o el AWS CLI. 

Requisitos previos

  • Un rol que EventBridge se puede asumir con el SageMaker::StartPipelineExecution permiso. Este rol se puede crear automáticamente si crea una regla desde la EventBridge consola; de lo contrario, tendrá que crear este rol usted mismo. Para obtener información sobre la creación de un SageMaker rol, consulte SageMaker Funciones.

  • Un Amazon SageMaker Pipeline según lo programado. Para crear una SageMaker canalización de Amazon, consulta Definir una canalización.

Cree una EventBridge regla mediante la EventBridge consola

El siguiente procedimiento muestra cómo crear una EventBridge regla mediante la EventBridge consola. 

  1. Navegue hasta la EventBridge consola.

  2. Seleccione Reglas en la parte izquierda.

  3. Seleccione Create Rule.

  4. Escriba un nombre y la descripción de la regla.

  5. Seleccione cómo desea iniciar esta regla. Para la regla, tiene las siguientes opciones:

    • Patrón de eventos: la regla se inicia cuando se produce un evento que coincide con el patrón. Puede elegir un patrón predefinido que coincida con un determinado tipo de evento o puede crear un patrón personalizado. Si selecciona un patrón predefinido, puede editarlo para personalizarlo. Para obtener más información sobre los patrones de eventos, consulte Patrones de CloudWatch eventos en eventos.

    • Programación: la regla se inicia periódicamente según una programación específica. Puede utilizar una programación de tasa fija que se inicie de forma periódica durante un número específico de minutos, horas o semanas. También puede usar una expresión cron para crear una programación más detallada, como “el primer lunes de cada mes a las 8 de la mañana”. No se admite la programación en un bus de eventos personalizado o de socio.

  6. Seleccione el bus de eventos que desee.

  7. Seleccione los objetivos que desee invocar cuando un evento coincida con su patrón de eventos o cuando se inicie la programación. Puede agregar hasta 5 objetivos por regla. Seleccione SageMaker Pipeline en la lista desplegable de objetivos.

  8. Seleccione la canalización que desea iniciar en la lista desplegable de canalizaciones.

  9. Agregue parámetros para pasarlos a la ejecución de la canalización mediante un par de nombre y valor. Los valores de parámetros pueden ser estáticos o dinámicos. Para obtener más información sobre los parámetros de Amazon SageMaker Pipeline, consulte AWS: :Events: SagemakerPipelineParameters :Rule.

    • Los valores estáticos se transfieren a la ejecución de la canalización cada vez que se inicia la canalización. Por ejemplo, si {"Name": "Instance_type", "Value": "ml.4xlarge"} se especifica en la lista de parámetros, se pasa como parámetro StartPipelineExecutionRequest cada vez que se EventBridge inicia la canalización.

    • Los valores dinámicos se especifican mediante una JSON ruta. EventBridge analiza el valor de la carga útil de un evento y, a continuación, lo pasa a la ejecución de la canalización. Por ejemplo: $.detail.param.value.

  10. Seleccione el rol que se va a usar para esta regla. Puede crear un nuevo rol o utilizar uno existente.

  11. De forma opcional, puede agregar una etiqueta.

  12. Seleccione Create para finalizar la regla.

La regla ya está en vigor y lista para iniciar las ejecuciones de la canalización.

Cree una EventBridge regla mediante el AWS CLI

En el siguiente procedimiento se muestra cómo crear una EventBridge regla mediante AWS CLI.

  1. Cree una regla para que se inicie. Al crear una EventBridge regla mediante el AWS CLI, tiene dos opciones para iniciar la regla: el patrón de eventos y la programación.

    • Patrón de eventos: la regla se inicia cuando se produce un evento que coincide con el patrón. Puede elegir un patrón predefinido que coincida con un determinado tipo de evento o puede crear un patrón personalizado. Si selecciona un patrón predefinido, puede editarlo para personalizarlo.  Puede crear una regla con un patrón de eventos mediante el siguiente comando:

      aws events put-rule --name <RULE_NAME> ----event-pattern <YOUR_EVENT_PATTERN> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
    • Programación: la regla se inicia periódicamente según una programación específica. Puede utilizar una programación de tasa fija que se inicie de forma periódica durante un número específico de minutos, horas o semanas. También puede usar una expresión cron para crear una programación más detallada, como “el primer lunes de cada mes a las 8 de la mañana”. No se admite la programación en un bus de eventos personalizado o de socio. Puede crear una regla con una programación mediante el siguiente comando:

      aws events put-rule --name <RULE_NAME> --schedule-expression <YOUR_CRON_EXPRESSION> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
  2. Agregue los objetivos que desee invocar cuando un evento coincida con su patrón de eventos o cuando se inicie la programación. Puede agregar hasta 5 objetivos por regla.  Para cada objetivo, debe especificar lo siguiente: 

    • ARN: El recurso ARN de tu canalización.

    • FunciónARN: La ARN función que EventBridge debe asumir la ejecución de la canalización.

    • Parámetros: parámetros de la SageMaker canalización de Amazon que se van a aprobar.

  3. Ejecuta el siguiente comando para pasar una SageMaker canalización de Amazon como destino a tu regla mediante put-targets:

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

Programa una canalización con SageMaker Python SDK

En las siguientes secciones, se muestra cómo configurar los permisos para acceder a EventBridge los recursos y crear el cronograma de canalización mediante SageMaker PythonSDK.

Permisos necesarios

Debes tener los permisos necesarios para usar el programador de canalizaciones. Complete los siguientes pasos para configurar sus permisos:

  1. Adjunta la siguiente política de privilegios mínimos a la IAM función utilizada para crear los activadores de la canalización o utiliza la política AWS gestionadaAmazonEventBridgeSchedulerFullAccess.

    { "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. Establezca una relación de confianza EventBridge añadiendo el director del servicio scheduler.amazonaws.com a la política de confianza de este rol. Asegúrese de adjuntar la siguiente política de confianza a la función de ejecución si lanza el bloc de notas en SageMaker Studio.

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

Cree un cronograma de canalización

Con el PipelineSchedule constructor, puedes programar una canalización para que se ejecute una vez o en un intervalo predeterminado. El cronograma de una canalización debe ser del tipo atrate, ocron. Este conjunto de tipos de programación es una extensión de las opciones de EventBridge programación. Para obtener más información sobre cómo usar la PipelineSchedule clase, consulte sagemaker.workflow.triggers. PipelineSchedule. El siguiente ejemplo muestra cómo crear cada tipo de programación conPipelineSchedule.

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

Si crea un horario único y necesita acceder a la hora actual, utilice datetime.utcnow() en lugar dedatetime.now(). Esta última opción no almacena el contexto de la zona actual y hace que se transfiera una hora incorrecta a EventBridge.

Conecta el disparador a tu canalización

Para adjuntarlo PipelineSchedule a tu canalización, invoca la put_triggers llamada en el objeto de canalización que hayas creado con una lista de factores desencadenantes. Si recibes una respuestaARN, habrás creado correctamente la programación en tu cuenta y EventBridge empezarás a invocar la canalización de destino a la hora o al ritmo especificados. Debes especificar un rol con los permisos correctos para adjuntar los activadores a una canalización principal. Si no lo proporcionas, Pipelines busca el rol predeterminado que se usa para crear la canalización desde el archivo de configuración.

En el siguiente ejemplo, se muestra cómo adjuntar un cronograma a una canalización.

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

Describa los desencadenantes actuales

Para obtener información sobre los activadores de canalización que has creado, puedes invocarlos describe_trigger() API con el nombre del activador. Este comando devuelve detalles sobre la expresión de programación creada, como la hora de inicio, el estado de activación y otra información útil. En el siguiente fragmento se muestra un ejemplo de invocación:

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

Recursos desencadenantes de limpieza

Antes de eliminar tu canalización, limpia los activadores existentes para evitar una pérdida de recursos en tu cuenta. Debes eliminar los activadores antes de destruir la canalización principal. Para eliminar los activadores, pase una lista de los nombres de los activadores al delete_triggersAPI. En el siguiente fragmento se muestra cómo eliminar los desencadenadores.

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

Tenga en cuenta las siguientes limitaciones al eliminar los desencadenadores:

  • La opción de eliminar los activadores especificando los nombres de los activadores solo está disponible en SageMaker PythonSDK. Al eliminar la canalización de una llamada CLI o de una DeletePipeline API llamada, no se eliminan los activadores. Como resultado, los activadores quedan huérfanos e SageMaker intentan iniciar una ejecución para una canalización inexistente.

  • Además, si estás usando otra sesión de bloc de notas o ya has eliminado el objetivo de la canalización, limpia los horarios huérfanos a través del programador CLIo la consola. EventBridge