EventBridge 스케줄러에서 유니버설 타겟 사용 - EventBridge 스케줄러

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

EventBridge 스케줄러에서 유니버설 타겟 사용

유니버설 타겟은 사용자 지정 가능한 매개 변수 집합으로, 이를 통해 여러 서비스에 대해 더 광범위한 API 작업을 호출할 수 있습니다. AWS 예를 들어, 범용 대상 파라미터 (UTP) 를 사용하여 CreateQueue작업을 사용하여 새 Amazon SQS 대기열을 생성할 수 있습니다.

또는 EventBridge Scheduler SDKs 중 하나를 사용하여 일정에 맞는 범용 대상을 구성하려면 다음 정보를 지정해야 합니다. AWS CLI

  • RoleArn— 대상에 ARN 사용하려는 실행 역할에 대한 것입니다. 지정하는 실행 역할에는 스케줄에서 목표로 삼을 API 작업을 호출할 수 있는 권한이 있어야 합니다.

  • Arn — 대상으로 지정하려는 API 작업을 ARN 포함한 전체 서비스를 다음 arn:aws:scheduler:::aws-sdk:service:apiAction 형식으로 제공합니다.

    예를 SQS 들어 Amazon의 경우 지정한 서비스 이름은 입니다arn:aws:scheduler:::aws-sdk:sqs:sendMessage.

  • 입력 — EventBridge Scheduler가 대상에 보내는 요청 매개 변수를 사용하여 사용자가 지정하는 올바른 JSON 형식입니다. API 설정하는 매개 변수와 Input 모양은 일정이 호출하는 서비스에 API 따라 결정됩니다. JSON 이 정보를 찾으려면 타깃팅하려는 서비스의 API 참조를 참조하십시오.

지원되지 않는 옵션

EventBridge Scheduler는 일반적인 GET 작업과 같이 다음 접두사 목록으로 시작하는 읽기 전용 API 작업을 지원하지 않습니다.

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

예를 들어, GetQueueUrlAPI작업에 ARN 대한 서비스는 다음과 같습니다. arn:aws:scheduler:::aws-sdk:sqs:getQueueURL API작업은 get 접두사로 시작하므로 EventBridge Scheduler는 이 대상을 지원하지 않습니다. 마찬가지로 Amazon MQ ListBrokers작업은 접두사로 시작되므로 대상으로 지원되지 않습니다. list

범용 대상을 사용하는 예

스케줄 Input 필드에 전달하는 파라미터는 호출하려는 서비스가 API 수락하는 요청 파라미터에 따라 달라집니다. 예를 들어 InvokeLambda를 타겟팅하려면 Reference에 나열된 파라미터를 설정할 수 있습니다.AWS Lambda API 여기에는 Lambda 함수로 전달할 수 있는 선택적 JSON 페이로드가 포함됩니다.

다양한 APIs 파라미터에 대해 설정할 수 있는 파라미터를 결정하려면 해당 서비스의 API 참조를 참조하십시오. InvokeLambda와 마찬가지로 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"}'
예 아마존 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"); } }