Usando alvos universais no EventBridge Scheduler - EventBridge Agendador

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á.

Usando alvos universais no EventBridge Scheduler

Um alvo universal é um conjunto personalizável de parâmetros que permite invocar um conjunto mais amplo de API operações para muitos AWS serviços. Por exemplo, você pode usar um parâmetro de destino universal (UTP) para criar uma nova SQS fila da Amazon usando a CreateQueueoperação.

Para configurar uma meta universal para sua agenda usando o AWS CLI ou um dos EventBridge AgendadoresSDKs, você precisa especificar as seguintes informações:

  • RoleArn— ARN Para a função de execução que você deseja usar para o alvo. A função de execução especificada deve ter as permissões para chamar a API operação que você deseja que sua agenda vise.

  • Arn — O serviço completoARN, incluindo a API operação que você deseja atingir, no seguinte formato:arn:aws:scheduler:::aws-sdk:service:apiAction.

    Por exemplo, para a AmazonSQS, o nome do serviço que você especifica éarn:aws:scheduler:::aws-sdk:sqs:sendMessage.

  • Entrada — Uma entrada bem formada JSON que você especifica com os parâmetros de solicitação que o EventBridge Scheduler envia ao destino. API Os parâmetros e a forma do JSON que você configurou Input são determinados pelo serviço que API sua agenda invoca. Para encontrar essas informações, consulte a API referência do serviço que você deseja segmentar.

Ações não compatíveis

EventBridge O Scheduler não suporta API ações somente para leitura, como GET operações comuns, que começam com a seguinte lista de prefixos:

get describe list poll receive search scan query select read lookup discover validate batchGet batchDescribe batchRead transactGet adminGet adminList testMigration retrieve testConnection translateDocument isAuthorized invokeModel

Por exemplo, o serviço ARN para a GetQueueUrlAPIação seria o seguinte:arn:aws:scheduler:::aws-sdk:sqs:getQueueURL. Como a API ação começa com o get prefixo, o EventBridge Scheduler não suporta esse alvo. Da mesma forma, a ListBrokersação do Amazon MQ não é suportada como destino porque a operação começa com o prefixo. list

Exemplos usando o destino universal

Os parâmetros transmitidos no Input campo de agendamento dependem dos parâmetros de solicitação que o serviço que API você deseja invocar aceita. Por exemplo, para direcionar o Lambda Invoke, você pode definir os parâmetros listados em AWS Lambda API Referência. Isso inclui a JSON carga opcional que você pode passar para uma função Lambda.

Para determinar os parâmetros que você pode definir para diferentesAPIs, consulte a API referência desse serviço. Semelhante ao LambdaInvoke, alguns APIs aceitam URI parâmetros, bem como uma carga útil do corpo da solicitação. Nesses casos, você especifica os parâmetros do URI caminho, bem como a JSON carga útil em sua agendaInput.

Os exemplos a seguir mostram como usar o alvo universal para invocar API operações comuns com Lambda, SQS Amazon e Step Functions.

exemplo Lambda
$ aws scheduler create-schedule --name lambda-universal-schedule --schedule-expression 'rate(5 minutes)' \ --target '{"RoleArn": "ROLE_ARN", "Arn":"arn:aws:scheduler:::aws-sdk:lambda:invoke" "Input": "{\"FunctionName\":\"arn:aws:lambda:REGION:123456789012:function:HelloWorld\",\"InvocationType\":\"Event\",\"Payload\":\"{\\\"message\\\":\\\"testing function\\\"}\"}" }' \ --flexible-time-window '{ "Mode": "OFF"}'
exemplo Amazon SQS
import boto3 scheduler = boto3.client('scheduler') flex_window = { "Mode": "OFF" } sqs_universal= { "RoleArn": "<ROLE_ARN>", "Arn": "arn:aws:scheduler:::aws-sdk:sqs:sendMessage", "Input": "{\"MessageBody\":\"My message\",\"QueueUrl\":\"<QUEUE_URL>\"}"} } scheduler.create_schedule( Name="sqs-sdk-test", ScheduleExpression="rate(5 minutes)", Target=sqs_universal, FlexibleTimeWindow=flex_window)
exemplo Step Functions
package com.example; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.scheduler.SchedulerClient; import software.amazon.awssdk.services.scheduler.model.*; public class MySchedulerApp { public static void main(String[] args) { final SchedulerClient client = SchedulerClient.builder() .region(Region.US_WEST_2) .build(); Target stepFunctionsUniversalTarget = Target.builder() .roleArn("<ROLE_ARN>") .arn("arn:aws:scheduler:::aws-sdk:sfn:startExecution") .input("{\"Input\":\"{}\",\"StateMachineArn\":\"<STATE_MACHINE_ARN>\"}") .build(); CreateScheduleRequest createScheduleRequest = CreateScheduleRequest.builder() .name("<SCHEDULE_NAME>") .scheduleExpression("rate(10 minutes)") .target(stepFunctionsUniversalTarget) .flexibleTimeWindow(FlexibleTimeWindow.builder() .mode(FlexibleTimeWindowMode.OFF) .build()) .clientToken("<Token GUID>") .build(); client.createSchedule(createScheduleRequest); System.out.println("Created schedule with rate expression and Step Function universal target"); } }