Verwendung universeller Ziele - EventBridge Scheduler

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwendung universeller Ziele

Ein universelles Ziel ist ein anpassbarer Satz von Parametern, mit dem Sie einen breiteren Satz von API-Vorgängen für viele AWS Dienste aufrufen können. Sie können beispielsweise einen Universal Target Parameter (UTP) verwenden, um mithilfe des Vorgangs eine neue Amazon SQS SQS-Warteschlange zu erstellen. CreateQueue

Um mithilfe des oder eines der AWS CLI EventBridge Scheduler-SDKs ein universelles Ziel für Ihren Zeitplan zu konfigurieren, müssen Sie die folgenden Informationen angeben:

  • RoleArn— Der ARN für die Ausführungsrolle, die Sie für das Ziel verwenden möchten. Die von Ihnen angegebene Ausführungsrolle muss über die Berechtigungen zum Aufrufen des API-Vorgangs verfügen, auf den Ihr Zeitplan abzielen soll.

  • ARN — Der komplette Service-ARN, einschließlich des API-Vorgangs, auf den Sie abzielen möchten, im folgenden Format:arn:aws:scheduler:::aws-sdk:service:apiAction.

    Für Amazon SQS lautet der von Ihnen angegebene Servicename beispielsweise. arn:aws:scheduler:::aws-sdk:sqs:sendMessage

  • Eingabe — Ein wohlgeformtes JSON, das Sie mit den Anforderungsparametern angeben, die EventBridge Scheduler an die Ziel-API sendet. Die Parameter und die Form des JSON, das Sie eingeben, Input werden durch die Service-API bestimmt, die Ihr Zeitplan aufruft. Diese Informationen finden Sie in der API-Referenz für den Service, auf den Sie abzielen möchten.

Nicht unterstützte Aktionen

EventBridge Scheduler unterstützt keine schreibgeschützten API-Aktionen, wie z. B. allgemeine GET Operationen, die mit der folgenden Liste von Präfixen beginnen:

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

Der Dienst-ARN für die GetQueueUrlAPI-Aktion wäre beispielsweise wie folgt:arn:aws:scheduler:::aws-sdk:sqs:getQueueURL. Da die API-Aktion mit dem get Präfix beginnt, unterstützt EventBridge Scheduler dieses Ziel nicht. Ebenso wird die Amazon MQ MQ-Aktion ListBrokersnicht als Ziel unterstützt, da der Vorgang mit dem Präfix beginnt. list

Beispiele für die Verwendung des universellen Ziels

Die Parameter, die Sie im Input Zeitplanfeld übergeben, hängen von den Anforderungsparametern ab, die die Service-API, die Sie aufrufen möchten, akzeptiert. Um beispielsweise Lambda als Ziel zu verwenden Invoke, können Sie die in AWS LambdaAPI-Referenz aufgeführten Parameter festlegen. Dazu gehört die optionale JSON-Nutzlast, die Sie an eine Lambda-Funktion übergeben können.

Informationen zu den Parametern, die Sie für verschiedene APIs festlegen können, finden Sie in der API-Referenz für diesen Dienst. Ähnlich wie bei Lambda Invoke akzeptieren einige APIs URI-Parameter sowie eine Payload für den Anforderungstext. In solchen Fällen geben Sie die URI-Pfadparameter sowie die JSON-Nutzlast in Ihrem Zeitplan an. Input

Die folgenden Beispiele zeigen, wie Sie das universelle Ziel verwenden, um allgemeine API-Operationen mit Lambda, Amazon SQS und Step Functions aufzurufen.

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