Utilisation de cibles universelles dans le EventBridge planificateur - EventBridge Planificateur

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation de cibles universelles dans le EventBridge planificateur

Une cible universelle est un ensemble personnalisable de paramètres qui vous permet d'invoquer un ensemble d'APIopérations plus large pour de nombreux AWS services. Par exemple, vous pouvez utiliser un paramètre cible universel (UTP) pour créer une nouvelle SQS file d'attente Amazon à l'aide de cette CreateQueueopération.

Pour configurer une cible universelle pour votre planning à l'aide du AWS CLI ou de l'un des EventBridge planificateursSDKs, vous devez spécifier les informations suivantes :

  • RoleArn— Le ARN rôle d'exécution que vous souhaitez utiliser pour la cible. Le rôle d'exécution que vous spécifiez doit disposer des autorisations nécessaires pour appeler l'APIopération que vous souhaitez cibler dans votre planning.

  • Arn — Le service completARN, y compris l'APIopération que vous souhaitez cibler, au format suivant :arn:aws:scheduler:::aws-sdk:service:apiAction.

    Par exemple, pour AmazonSQS, le nom du service que vous spécifiez estarn:aws:scheduler:::aws-sdk:sqs:sendMessage.

  • Entrée — Une entrée bien formée JSON que vous spécifiez avec les paramètres de demande que le EventBridge planificateur envoie à la cible. API Les paramètres et la forme des paramètres JSON que vous définissez Input sont déterminés par le service invoqué par API votre calendrier. Pour trouver ces informations, consultez la API référence du service que vous souhaitez cibler.

Actions non prises en charge

EventBridge Le planificateur ne prend pas en charge les API actions en lecture seule, telles que les GET opérations courantes, qui commencent par la liste de préfixes suivante :

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

Par exemple, le service ARN pour l'GetQueueUrlAPIaction serait le suivant :arn:aws:scheduler:::aws-sdk:sqs:getQueueURL. Comme l'APIaction commence par le get préfixe, EventBridge Scheduler ne prend pas en charge cette cible. De même, l'ListBrokersaction Amazon MQ n'est pas prise en charge en tant que cible car elle commence par le préfixe. list

Exemples d'utilisation de la cible universelle

Les paramètres que vous transmettez dans le Input champ de planification dépendent des paramètres de demande acceptés par le service que API vous souhaitez invoquer. Par exemple, pour cibler Lambda Invoke, vous pouvez définir les paramètres répertoriés dans AWS Lambda API Reference. Cela inclut la JSON charge utile optionnelle que vous pouvez transmettre à une fonction Lambda.

Pour déterminer les paramètres que vous pouvez définir pour différents servicesAPIs, consultez la API référence de ce service. À l'instar de LambdaInvoke, certains APIs acceptent des URI paramètres, ainsi qu'une charge utile du corps de la requête. Dans ce cas, vous spécifiez les paramètres du URI chemin ainsi que la JSON charge utile dans votre planningInput.

Les exemples suivants montrent comment utiliser la cible universelle pour appeler des API opérations courantes avec LambdaSQS, Amazon et Step Functions.

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