本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 EventBridge 排程器中使用通用目標
通用目標是一組可自訂的參數,可讓您針對許多 AWS 服務叫用更廣泛的API作業集。例如,您可以使用通用目標參數 (UTP) 使用該CreateQueue
操作建立新的 Amazon SQS 佇列。
若要使用或其中一個排程器設定 AWS CLI EventBridge 排程的通用目標SDKs,您必須指定下列資訊:
-
RoleArn— 您要用ARN於目標的執行角色。您指定的執行角色必須具有呼叫您要排程鎖定之API作業的權限。
-
Arn — 完整的服務ARN,包括您要定位的API作業,格式如下:
arn:aws:scheduler:::aws-sdk:
service
:apiAction
例如,對於 AmazonSQS,您指定的服務名稱為
arn:aws:scheduler:::aws-sdk:
。sqs
:sendMessage
-
輸入 — JSON 您使用「 EventBridge 排程器」傳送至目標API的要求參數來指定格式良好。JSON您在中設定的參數和形狀
Input
由排程呼叫API的服務決定。若要尋找此資訊,請API參閱您要鎖定之服務的參考資料。
不支援動作
EventBridge 排程器不支援以下列首碼清單開頭的唯讀API動GET
作,例如一般作業:
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
例如,該GetQueueUrl
API操作ARN的服務將是以下內容:arn:aws:scheduler:::aws-sdk:sqs:
。由於API動作以getQueueURL
get
前置詞開始,因此「 EventBridge 排程器」不支援此目標。同樣地,Amazon MQ 動作不支援做為目標,因為作業ListBrokers
是從前置詞開始的。list
使用通用目標的範例
您在排程Input
欄位中傳遞的參數取決於您要叫用之服務所接受的API要求參數。例如,若要以 Lambda 為目標 Invoke
,您可以設定「參AWS Lambda API考」中列出的參數。這包括您可以傳遞給 Lambda 函數的選用JSON承載。
若要決定您可以為其他設定的參數APIs,請參閱該服務的參API考資料。類似於 LambdaInvoke
,一些APIs接受URI參數,以及請求主體有效載荷。在這種情況下,您可以在排程中指定URI路徑參數以及JSON有效負載Input
。
下列範例說明如何使用通用目標來叫用 Lambda SQS、Amazon 和 Step Functions 的常見API作業。
範例 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"}'
範例 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)
範例 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"); } }