Uso de destinos universales en el Programador de EventBridge - Programador de EventBridge

Uso de destinos universales en el Programador de EventBridge

Un destino universal es un conjunto de parámetros personalizables que le permiten invocar un conjunto más amplio de operaciones de API para muchos servicios de AWS. Por ejemplo, puede utilizar el parámetro de destino universal (UTP) para crear una nueva cola de Amazon SQS mediante la operación CreateQueue.

Para configurar un destino universal para su programación mediante la AWS CLI o uno de los SDK de el Programador de EventBridge, debe especificar la siguiente información:

  • RoleArn: el ARN del rol de ejecución que desea usar para el destino. La función de ejecución que especifique debe tener los permisos para llamar a la operación de API a la que desea que se dirija su programación.

  • Arn: el ARN del servicio completo, incluida la operación de API a la que desea dirigirse, en el siguiente formato: arn:aws:scheduler:::aws-sdk:service:apiAction.

    Por ejemplo, para Amazon SQS, el nombre del servicio que especifique es arn:aws:scheduler:::aws-sdk:sqs:sendMessage.

  • Entrada: un JSON bien formado que se especifica con los parámetros de solicitud que el Programador de EventBridge envía a la API de destino. Los parámetros y la forma del JSON que establezca en Input vienen determinados por la API de servicio que invoque su programación. Para encontrar esta información, consulte la referencia de la API del servicio al que quiere dirigirse.

Acciones no admitidas

El Programador de EventBridge no admite acciones de API de solo lectura, como las operaciones GET comunes, que comiencen con la siguiente lista de prefijos:

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 ejemplo, el ARN del servicio para la acción de la API GetQueueUrl sería el siguiente: arn:aws:scheduler:::aws-sdk:sqs:getQueueURL. Como la acción de la API comienza con el prefijo get, el Programador de EventBridge no admite este destino. Del mismo modo, la acción ListBrokers de Amazon MQ no se admite como destino porque la operación comienza con el prefijo list.

Ejemplos que utilizan el destino universal

Los parámetros que pase en el campo Input de programación dependen de los parámetros de solicitud que acepte la API de servicio que desea invocar. Por ejemplo, para apuntar a Lambda Invoke, puede configurar los parámetros que se enumeran en la Referencia de la API AWS Lambda. Esto incluye la carga JSON opcional que puede pasar a una función de Lambda.

Para determinar los parámetros que puede configurar para las distintas API, consulte la referencia de API de ese servicio. Al igual que Lambda Invoke, algunas API aceptan parámetros de URI, así como una carga del cuerpo de la solicitud. En esos casos, debe especificar los parámetros de la ruta del URI y la carga de JSON en su programación Input.

Los siguientes ejemplos muestran cómo utilizar el destino universal para invocar operaciones de API comunes con Lambda, Amazon SQS y Step Functions.

ejemplo 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"}'
ejemplo 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)
ejemplo 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"); } }