스케줄러에서 EventBridge 템플릿 대상 사용 - EventBridge 스케줄러

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

스케줄러에서 EventBridge 템플릿 대상 사용

템플릿 대상은 AmazonSQS, Lambda 및 Step Functions와 같은 핵심 AWS 서비스 그룹 전반에 걸친 공통 API 작업 집합입니다. 예를 들어 함수를 ARN 제공하여 Lambda의 Invoke작업을 타깃팅하거나 대기열을 사용하여 SQS Amazon의 SendMessage작업을 타깃팅할 수 있습니다. ARN 템플릿 기반 대상을 구성하려면 스케줄의 실행 역할에 대상 작업을 수행할 수 있는 권한도 부여해야 합니다. API

스케줄러 AWS CLI 또는 EventBridge 스케줄러 중 하나를 사용하여 템플릿 대상을 프로그래밍 방식으로 구성하려면 실행 역할SDKs, 대상 리소스의 실행 역할, EventBridge Scheduler가 대상에 전달할 선택적 입력, 일부 템플릿 대상의 경우 해당 대상에 대한 추가 구성 옵션이 포함된 고유한 매개 변수 세트를 지정해야 합니다. ARN ARN 템플릿이 지정된 대상 리소스에 를 지정하면 EventBridge Scheduler는 해당 서비스에 ARN 대해 지원되는 작업을 호출하려는 것으로 자동으로 가정합니다. API EventBridge Scheduler가 서비스에 대해 다른 API 작업을 대상으로 하도록 하려면 대상을 범용 대상으로 구성해야 합니다.

다음은 EventBridge 스케줄러가 지원하는 모든 템플릿 대상 및 해당하는 경우 각 대상의 고유한 관련 매개 변수 집합의 전체 목록입니다. 각 매개 변수 집합의 링크를 선택하면 EventBridge API스케줄러 참조의 필수 및 선택적 필드를 볼 수 있습니다.

다음 예제를 사용하여 다양한 템플릿 대상을 구성하는 방법과 설명된 각 대상에 필요한 IAM 권한을 알아보십시오.

아마존 SQS SendMessage

예 실행 역할에 대한 권한 정책
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sqs:SendMessage" ], "Effect": "Allow", "Resource": "*" } ] }
예 AWS CLI
$ aws scheduler create-schedule --name sqs-templated --schedule-expression 'rate(5 minutes)' \ --target '{"RoleArn": "ROLE_ARN", "Arn":"QUEUE_ARN", "Input": "Message for scheduleArn: '<aws.scheduler.schedule-arn>', scheduledTime: '<aws.scheduler.scheduled-time>'" }' \ --flexible-time-window '{ "Mode": "OFF"}'
예 Python SDK
import boto3 scheduler = boto3.client('scheduler') flex_window = { "Mode": "OFF" } sqs_templated = { "RoleArn": "<ROLE_ARN>", "Arn": "<QUEUE_ARN>", "Input": "Message for scheduleArn: '<aws.scheduler.schedule-arn>', scheduledTime: '<aws.scheduler.scheduled-time>'" } scheduler.create_schedule( Name="sqs-python-templated", ScheduleExpression="rate(5 minutes)", Target=sqs_templated, FlexibleTimeWindow=flex_window)
예 자바 SDK
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 sqsTarget = Target.builder() .roleArn("<ROLE_ARN>") .arn("<QUEUE_ARN>") .input("Message for scheduleArn: '<aws.scheduler.schedule-arn>', scheduledTime: '<aws.scheduler.scheduled-time>'") .build(); CreateScheduleRequest createScheduleRequest = CreateScheduleRequest.builder() .name("<SCHEDULE NAME>") .scheduleExpression("rate(10 minutes)") .target(sqsTarget) .flexibleTimeWindow(FlexibleTimeWindow.builder() .mode(FlexibleTimeWindowMode.OFF) .build()) .build(); client.createSchedule(createScheduleRequest); System.out.println("Created schedule with rate expression and an Amazon SQS templated target"); } }

Lambda Invoke

예 실행 역할에 대한 권한 정책
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Effect": "Allow", "Resource": "*" } ] }
예 AWS CLI
$ aws scheduler create-schedule --name lambda-templated-schedule --schedule-expression 'rate(5 minutes)' \ --target '{"RoleArn": "ROLE_ARN", "Arn":"FUNCTION_ARN", "Input": "{ \"Payload\": \"TEST_PAYLOAD\" }" }' \ --flexible-time-window '{ "Mode": "OFF"}'
예 Python SDK
import boto3 scheduler = boto3.client('scheduler') flex_window = { "Mode": "OFF" } lambda_templated = { "RoleArn": "<ROLE_ARN>", "Arn": "<LAMBDA_ARN>", "Input": "{ 'Payload': 'TEST_PAYLOAD' }"} } scheduler.create_schedule( Name="lambda-python-templated", ScheduleExpression="rate(5 minutes)", Target=lambda_templated, FlexibleTimeWindow=flex_window)
예 자바 SDK
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 lambdaTarget = Target.builder() .roleArn("<ROLE_ARN>") .arn("<Lambda ARN>") .input("{ 'Payload': 'TEST_PAYLOAD' }") .build(); CreateScheduleRequest createScheduleRequest = CreateScheduleRequest.builder() .name("<SCHEDULE_NAME>") .scheduleExpression("rate(10 minutes)") .target(lambdaTarget) .flexibleTimeWindow(FlexibleTimeWindow.builder() .mode(FlexibleTimeWindowMode.OFF) .build()) .clientToken("<Token GUID>") .build(); client.createSchedule(createScheduleRequest); System.out.println("Created schedule with rate expression and Lambda templated target"); } }

Step Functions StartExecution

예 실행 역할에 대한 권한 정책
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "states:StartExecution" ], "Effect": "Allow", "Resource": "*" } ] }
예 AWS CLI
$ aws scheduler create-schedule --name sfn-templated-schedule --schedule-expression 'rate(5 minutes)' \ --target '{"RoleArn": "ROLE_ARN", "Arn":"STATE_MACHINE_ARN", "Input": "{ \"Payload\": \"TEST_PAYLOAD\" }" }' \ --flexible-time-window '{ "Mode": "OFF"}'
예 Python SDK
import boto3 scheduler = boto3.client('scheduler') flex_window = { "Mode": "OFF" } sfn_templated= { "RoleArn": "<ROLE_ARN>", "Arn": "<STATE_MACHINE_ARN>", "Input": "{ 'Payload': 'TEST_PAYLOAD' }" } scheduler.create_schedule(Name="sfn-python-templated", ScheduleExpression="rate(5 minutes)", Target=sfn_templated, FlexibleTimeWindow=flex_window)
예 자바 SDK
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 stepFunctionsTarget = Target.builder() .roleArn("<ROLE_ARN>") .arn("<STATE_MACHINE_ARN>") .input("{ 'Payload': 'TEST_PAYLOAD' }") .build(); CreateScheduleRequest createScheduleRequest = CreateScheduleRequest.builder() .name("<SCHEDULE_NAME>") .scheduleExpression("rate(10 minutes)") .target(stepFunctionsTarget) .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 templated target"); } }