

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Programar execuções de pipeline
<a name="pipeline-eventbridge"></a>

[Você pode programar suas execuções do Amazon SageMaker Pipelines usando a Amazon. EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) O Amazon SageMaker Pipelines é suportado como alvo na [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html). Isso permite que você inicie a execução do seu pipeline de construção de modelos com base em qualquer evento em seu barramento de eventos. Com EventBridge, você pode automatizar suas execuções de pipeline e responder automaticamente a eventos, como tarefas de treinamento ou mudanças no status do endpoint. Os eventos incluem um novo arquivo sendo carregado para seu bucket do Amazon S3, uma alteração no status do seu endpoint do Amazon SageMaker AI devido à deriva e tópicos do *Amazon Simple Notification Service* (SNS).

As seguintes ações do Pipelines podem ser iniciadas automaticamente:  
+  `StartPipelineExecution` 

Para obter mais informações sobre o agendamento de trabalhos de SageMaker IA, consulte [Automatização da IA SageMaker com a Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/automating-sagemaker-with-eventbridge.html). EventBridge 

**Topics**
+ [Agende um pipeline com a Amazon EventBridge](#pipeline-eventbridge-schedule)
+ [Agende um pipeline com o SDK do SageMaker Python](#build-and-manage-scheduling)

## Agende um pipeline com a Amazon EventBridge
<a name="pipeline-eventbridge-schedule"></a>

Para iniciar a execução de um pipeline com o Amazon CloudWatch Events, você deve criar uma EventBridge [regra](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_Rule.html). Ao criar uma regra para eventos, você especifica uma ação de destino a ser tomada ao EventBridge receber um evento que corresponda à regra. Quando um evento corresponde à regra, EventBridge envia o evento para o destino especificado e inicia a ação definida na regra. 

 Os tutoriais a seguir mostram como agendar a execução de um pipeline EventBridge usando o EventBridge console ou o. AWS CLI  

### Pré-requisitos
<a name="pipeline-eventbridge-schedule-prerequisites"></a>
+ Uma função que EventBridge pode ser assumida com a `SageMaker::StartPipelineExecution` permissão. Essa função pode ser criada automaticamente se você criar uma regra no EventBridge console; caso contrário, você mesmo precisará criar essa função. Para obter informações sobre como criar uma função de SageMaker IA, consulte [SageMaker Funções](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html).
+ Um Amazon SageMaker AI Pipeline para programar. Para criar um pipeline de SageMaker IA da Amazon, consulte [Definir um pipeline](https://docs.aws.amazon.com/sagemaker/latest/dg/define-pipeline.html).

### Crie uma EventBridge regra usando o EventBridge console
<a name="pipeline-eventbridge-schedule-console"></a>

 O procedimento a seguir mostra como criar uma EventBridge regra usando o EventBridge console.  

1. Navegue até o [console do EventBridge ](https://console.aws.amazon.com/events). 

1. Selecione **Regras** no lado esquerdo. 

1.  Selecione `Create Rule`. 

1. Insira um nome e uma descrição para a regra.

1.  Selecione como deseja iniciar essa regra. Você tem as seguintes opções para sua regra: 
   + **Padrão de evento**: sua regra é iniciada quando ocorre um evento correspondente ao padrão. Você pode escolher um padrão predefinido que corresponda a um determinado tipo de evento ou criar um padrão personalizado. Se você selecionar um padrão predefinido, poderá editar o padrão para personalizá-lo. Para obter mais informações sobre padrões de eventos, consulte [Padrões de CloudWatch eventos em eventos](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEventsandEventPatterns.html). 
   + **Programação**: sua regra é iniciada regularmente em uma programação especificada. Você pode usar uma programação de taxa fixa que inicia regularmente por um número específico de minutos, horas ou semanas. Você também pode usar uma [expressão cron](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions) para criar uma programação mais refinada, como “a primeira segunda-feira de cada mês, às 8h”. A programação não é compatível com um barramento de eventos parceiro ou personalizado. 

1. Selecione o barramento de eventos desejado. 

1. Selecione as metas a serem invocadas quando um evento corresponder ao seu padrão de eventos ou quando a programação for iniciada. Você pode adicionar até cinco destinos por regra. Selecione `SageMaker Pipeline` na lista suspensa destino. 

1. Selecione o pipeline que você deseja iniciar na lista suspensa do pipeline. 

1. Adicione parâmetros para passar para a execução do pipeline usando um par de nome e valor. Os valores dos parâmetros podem ser estáticos ou dinâmicos. Para obter mais informações sobre os parâmetros do Amazon SageMaker AI Pipeline, consulte [AWS::Events::Rule SagemakerPipelineParameters](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-pipeline.html#aws-resource-sagemaker-pipeline-properties).
   + Valores estáticos são passados para a execução do pipeline toda vez que o pipeline é iniciado. Por exemplo, se `{"Name": "Instance_type", "Value": "ml.4xlarge"}` for especificado na lista de parâmetros, ele será passado como um parâmetro `StartPipelineExecutionRequest` sempre que EventBridge iniciar o pipeline. 
   + Os valores dinâmicos são especificados usando um caminho JSON. EventBridge analisa o valor da carga útil de um evento e o passa para a execução do pipeline. Por exemplo: *`$.detail.param.value`* 

1. Selecione a função a ser usada para essa regra. Você pode usar uma função existente ou criar uma nova. 

1. (Opcional) Adicionar tag. 

1. Selecione `Create` para finalizar sua regra. 

 Sua regra agora está em vigor e pronta para iniciar suas execuções de pipeline. 

### Crie uma EventBridge regra usando o [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/events/index.html)
<a name="pipeline-eventbridge-schedule-cli"></a>

 O procedimento a seguir mostra como criar uma EventBridge regra usando AWS CLI o. 

1. Crie uma regra a ser iniciada. Ao criar uma EventBridge regra usando o AWS CLI, você tem duas opções de como sua regra é iniciada: padrão de evento e programação.
   +  **Padrão de evento**: sua regra é iniciada quando ocorre um evento correspondente ao padrão. Você pode escolher um padrão predefinido que corresponda a um determinado tipo de evento ou criar um padrão personalizado. Se você selecionar um padrão predefinido, poderá editar o padrão para personalizá-lo.  Você pode criar uma regra com padrão de evento usando o seguinte comando: 

     ```
     aws events put-rule --name <RULE_NAME> ----event-pattern <YOUR_EVENT_PATTERN> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
     ```
   +  **Programação**: sua regra é iniciada regularmente em uma programação especificada. Você pode usar uma programação de taxa fixa que inicia regularmente por um número específico de minutos, horas ou semanas. Você também pode usar uma expressão cron para criar uma programação mais refinada, como “a primeira segunda-feira de cada mês, às 8h”. A programação não é compatível com um barramento de eventos parceiro ou personalizado. Você pode criar um cluster usando a programação com o seguinte comando: 

     ```
     aws events put-rule --name <RULE_NAME> --schedule-expression <YOUR_CRON_EXPRESSION> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
     ```

1. Adicione metas a serem invocadas quando um evento corresponder ao seu padrão de eventos ou quando a programação for iniciada. Você pode adicionar até cinco destinos por regra.  Para cada destino, você deve especificar:  
   +  ARN: o ARN do recurso do seu pipeline. 
   +  ARN da função: O ARN da função EventBridge deve ser assumido para executar o pipeline. 
   +  Parâmetros: parâmetros do pipeline de SageMaker IA da Amazon a serem transmitidos. 

1. Execute o comando a seguir para passar um pipeline de SageMaker IA da Amazon como alvo para sua regra usando [put-targets:](https://docs.aws.amazon.com/cli/latest/reference/events/put-targets.html) 

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

## Agende um pipeline com o SDK do SageMaker Python
<a name="build-and-manage-scheduling"></a>

As seções a seguir mostram como configurar permissões para acessar EventBridge recursos e criar seu cronograma de pipeline usando o SDK do SageMaker Python. 

### Permissões obrigatórias
<a name="build-and-manage-scheduling-permissions"></a>

Você precisa ter as permissões necessárias para usar o programador de pipeline. Conclua as seguintes etapas para configurar suas permissões:

1. Anexe a seguinte política de privilégios mínimos à função do IAM usada para criar os acionadores do pipeline ou use a AWS política gerenciada. `AmazonEventBridgeSchedulerFullAccess`

------
#### [ JSON ]

****  

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

------

1. Estabeleça uma relação de confiança EventBridge adicionando o diretor de serviço `scheduler.amazonaws.com` à política de confiança dessa função. Certifique-se de anexar a seguinte política de confiança à função de execução se você iniciar o notebook no SageMaker Studio.

------
#### [ JSON ]

****  

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

------

### Criar e programar um pipeline
<a name="build-and-manage-scheduling-create"></a>

Usando o construtor `PipelineSchedule`, você pode programar um pipeline para ser executado uma vez ou em um intervalo predeterminado. Um cronograma de pipeline deve ser do tipo `at`, `rate` ou `cron`. Esse conjunto de tipos de agendamento é uma extensão das opções de [EventBridge agendamento.](https://docs.aws.amazon.com/scheduler/latest/UserGuide/schedule-types.html) Para obter mais informações sobre como usar a `PipelineSchedule` classe, consulte [sagemaker.workflow.triggers. PipelineSchedule](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#pipeline-schedule). O exemplo a seguir demonstra como criar cada tipo de agendamento com `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"
)
```

**nota**  
Se você criar um agendamento único e precisar acessar a hora atual, use `datetime.utcnow()` em vez de `datetime.now()`. O último não armazena o contexto da zona atual e resulta em um tempo incorreto passado para EventBridge.

### Anexar o acionador ao seu pipeline
<a name="build-and-manage-scheduling-attach"></a>

Para anexar seu `PipelineSchedule` ao seu pipeline, invoque a chamada `put_triggers` no objeto de pipeline criado com uma lista de acionadores. Se você receber um ARN de resposta, você criou com sucesso o cronograma em sua conta e EventBridge começa a invocar o funil de destino no horário ou na taxa especificada. Você deve especificar uma função com as permissões corretas para anexar acionadores a um pipeline principal. Se você não fornecer nenhuma, o Pipelines busca a função padrão usada para criar o pipeline a partir do [arquivo de configuração](https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-decorator-config.html).

O exemplo a seguir demonstra como anexar um cronograma a um pipeline.

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

### Descrever os acionadores atuais
<a name="build-and-manage-scheduling-describe"></a>

Para recuperar informações sobre os acionadores do pipeline criado, você pode invocar a API `describe_trigger()` com o nome do acionador. Esse comando retorna detalhes sobre a expressão de agendamento criada, como horário de início, estado ativado e outras informações úteis. O trecho a seguir mostra um exemplo de invocação:

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

### Recursos de remoção de acionador
<a name="build-and-manage-scheduling-clean"></a>

Antes de excluir seu pipeline, limpe os acionadores existentes para evitar um vazamento de recursos em sua conta. Você deve excluir os acionadores antes de destruir o pipeline principal. Você pode excluir seus acionadores passando uma lista de nomes de acionadores para a API `delete_triggers`. O trecho a seguir demonstra como excluir acionadores.

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

**nota**  
Lembre-se das seguintes limitações ao excluir os acionadores:  
A opção de excluir os gatilhos especificando os nomes dos acionadores só está disponível no SDK do Python SageMaker . Excluir o pipeline na CLI ou em uma chamada de API `DeletePipeline` não exclui seus acionadores. Como resultado, os gatilhos ficam órfãos e a SageMaker IA tenta iniciar a execução de um pipeline inexistente.
[Além disso, se você estiver usando outra sessão do notebook ou já tiver excluído o destino do pipeline, limpe os agendamentos órfãos por meio da CLI ou do console do agendador.](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/scheduler/delete-schedule.html) EventBridge 