

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

# EventBridge Scheduler에서 범용 대상 사용
<a name="managing-targets-universal"></a>

 *범용 대상*은 많은 AWS 서비스에 대해 더 광범위한 API 작업 세트를 호출할 수 있는 사용자 지정 가능한 파라미터 세트입니다. 예를 들어 범용 대상 파라미터(UTP)를 사용하면 [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue) 작업을 사용하여 새 Amazon SQS 대기열을 생성할 수 있습니다.

 AWS CLI또는 EventBridge 스케줄러 SDKs 중 하나를 사용하여 일정에 대한 범용 대상을 구성하려면 다음 정보를 지정해야 합니다.
+  **RoleArn** - 대상에 사용할 실행 역할의 ARN입니다. 지정하는 실행 역할에는 일정에서 대상으로 지정할 API 작업을 직접적으로 호출할 수 있는 권한이 있어야 합니다.
+  **Arn** - 대상으로 지정하려는 API 작업을 포함한 전체 서비스 ARN으로 형식은 `arn:aws:scheduler:::aws-sdk:service:apiAction`과 같습니다.

   예를 들어, Amazon SQS의 경우 지정한 서비스 이름은 `arn:aws:scheduler:::aws-sdk:sqs:sendMessage`입니다.
**참고**  
 범용 대상 ARN의 *서비스* 값은 대상 서비스의 AWS SDK 서비스 식별자와 일치해야 합니다. 이 식별자는 서비스의 엔드포인트 접두사와 다를 수 있습니다. 예를 들어 Amazon Cognito 자격 증명 공급자의 경우 `cognitoidentityprovider` (가 아님)를 사용합니다`cognito-idp`. 올바른 서비스 식별자를 찾으려면 대상으로 지정할 서비스에 대한 AWS SDK 설명서를 참조하세요.
+  **입력** - EventBridge 스케줄러가 대상 API로 전송하는 요청 파라미터를 사용하여 사용자가 지정하는 올바른 형식의 JSON입니다. `Input`에서 설정하는 JSON의 파라미터와 모양은 일정이 간접적으로 호출하는 서비스 API에 따라 결정됩니다. 이 정보를 찾으려면 대상으로 지정하려는 서비스에 대한 API 참조를 참조하세요.

## 지원되지 않는 옵션
<a name="unsupported-api-actions"></a>

 EventBridge 스케줄러는 일반적인 `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
```

 예를 들어 [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueUrl.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueUrl.html) API 작업에 대한 서비스 ARN은 `arn:aws:scheduler:::aws-sdk:sqs:getQueueURL`과 같습니다. API 작업은 `get` 접두사로 시작하므로 EventBridge 스케줄러는 이 대상을 지원하지 않습니다. 마찬가지로 작업이 `list` 접두사로 시작하기 때문에 Amazon MQ 작업 [https://docs.aws.amazon.com/amazon-mq/latest/api-reference/brokers.html#ListBrokers](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/brokers.html#ListBrokers)는 대상으로 지원되지 않습니다.

## 범용 대상을 사용하는 예
<a name="managing-targets-universal-examples"></a>

 일정 `Input` 필드에 전달하는 파라미터는 간접적으로 호출하려는 서비스 API가 수락하는 요청 파라미터에 따라 달라집니다. 예를 들어, Lambda [https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html)를 대상으로 지정하려면 [AWS Lambda API 참조](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_RequestParameters)에 나열된 파라미터를 설정할 수 있습니다. 여기에는 Lambda 함수로 전달할 수 있는 선택적 JSON [페이로드](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_RequestBody)가 포함됩니다.

 다양한 API에 설정할 수 있는 파라미터를 결정하려면 해당 서비스의 API 참조를 참조하세요. Lambda `Invoke`와 마찬가지로 일부 API는 요청 본문 페이로드뿐만 아니라 URI 파라미터도 허용합니다. 이러한 경우 일정 `Input`에 URI 경로 파라미터와 JSON 페이로드를 지정합니다.

 다음 예는 범용 대상을 사용하여 Lambda, Amazon SQS 및 Step Functions에서 일반적인 API 작업을 간접적으로 호출하는 방법을 보여줍니다.

**Example 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"}'
```

**Example 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)
```

**Example 단계 함수**  

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