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 CreateQueue
opé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 est
arn: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'GetQueueUrl
APIaction serait le suivant :arn:aws:scheduler:::aws-sdk:sqs:
. Comme l'APIaction commence par le getQueueURL
get
préfixe, EventBridge Scheduler ne prend pas en charge cette cible. De même, l'ListBrokers
action 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"); } }