

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# Amazon EventBridge로 Amazon Redshift Data API 작업 예약
<a name="data-api-calling-event-bridge"></a>

선택된 이벤트와 일치할 경우 대상으로 라우팅하여 작업을 실행하는 규칙을 생성할 수 있습니다. 규칙을 사용하여 미리 결정된 일정에 따라 조치를 취할 수도 있습니다. 자세한 내용은 [Amazon EventBridge 사용 가이드](https://docs.aws.amazon.com/eventbridge/latest/userguide/)를 참조하세요.

EventBridge로 Data API 작업을 예약하려면 연결된 IAM 역할이 CloudWatch Events(events.amazonaws.com)의 보안 주체를 신뢰해야 합니다. 이 역할에는 관리형 정책 `AmazonEventBridgeFullAccess`에 해당하는 정책이 연결되어 있어야 합니다. Data API에 의해 관리되는 `AmazonRedshiftDataFullAccess` 정책 권한도 있어야 합니다. IAM 콘솔에서 이러한 권한으로 IAM 역할을 생성할 수 있습니다. IAM 콘솔에서 역할을 생성할 때 CloudWatch Events에 대해 AWS 서비스 신뢰할 수 있는 엔터티를 선택합니다. EventBridge 대상의 `RoleArn` JSON 값에 IAM 역할을 지정합니다. 서비스 역할 생성에 대한 자세한 내용은 *IAM User Guide*의 [Creating a Role for an AWS Service (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console)를 참조하세요.

Amazon EventBridge에서 생성하는 규칙의 `name`은 `RedshiftDataParameters`의 `StatementName`과 일치해야 합니다.

다음 예제는 한 개 또는 여러 개의 SQL 문을 사용하고 Amazon Redshift 클러스터 또는 Amazon Redshift Serverless 작업 그룹을 데이터 웨어하우스로 사용하여 EventBridge 규칙을 생성하는 변형을 보여줍니다.

## 단일 SQL 문 및 클러스터를 사용한 호출
<a name="data-api-calling-event-bridge-sql-cluster"></a>

다음 예에서는 AWS CLI를 사용하여 Amazon Redshift 클러스터에 대해 SQL 문을 실행하는 데 사용되는 EventBridge 규칙을 생성합니다.

```
aws events put-rule 
--name test-redshift-cluster-data 
--schedule-expression "rate(1 minute)"
```

그런 다음 규칙에 지정된 일정에 따라 실행되도록 EventBridge 대상이 생성됩니다.

```
aws events put-targets 
--cli-input-json file://data.json
```

입력 data.json 파일은 다음과 같습니다. `Sql` JSON 키는 단일 SQL 문이 있음을 나타냅니다. `Arn` JSON 값에는 클러스터 식별자가 포함됩니다. `RoleArn` JSON 값에는 앞서 설명한 대로 SQL을 실행하는 데 사용되는 IAM 역할이 포함됩니다.

```
{
    "Rule": "test-redshift-cluster-data",
    "EventBusName": "default",
    "Targets": [
        {
            "Id": "2",
            "Arn": "arn:aws:redshift:us-east-1:123456789012:cluster:mycluster",
            "RoleArn": "arn:aws:iam::123456789012:role/Administrator",
            "RedshiftDataParameters": {
                "Database": "dev",
                "DbUser": "root",
                "Sql": "select 1;",
                "StatementName": "test-redshift-cluster-data",
                "WithEvent": true
            }
        }
    ]
}
```

## 단일 SQL 문 및 작업 그룹을 사용한 호출
<a name="data-api-calling-event-bridge-sql-workgroup"></a>

다음 예에서는 AWS CLI를 사용하여 Amazon Redshift Serverless 작업 그룹에 대해 SQL 문을 실행하는 데 사용되는 EventBridge 규칙을 생성합니다.

```
aws events put-rule 
--name  test-redshift-serverless-workgroup-data 
--schedule-expression "rate(1 minute)"
```

그런 다음 규칙에 지정된 일정에 따라 실행되도록 EventBridge 대상이 생성됩니다.

```
aws events put-targets 
--cli-input-json file://data.json
```

입력 data.json 파일은 다음과 같습니다. `Sql` JSON 키는 단일 SQL 문이 있음을 나타냅니다. `Arn` JSON 값에는 작업 그룹 이름이 포함됩니다. `RoleArn` JSON 값에는 앞서 설명한 대로 SQL을 실행하는 데 사용되는 IAM 역할이 포함됩니다.

```
{
    "Rule": "test-redshift-serverless-workgroup-data", 
    "EventBusName": "default", 
    "Targets": [ 
        {
            "Id": "2",
            "Arn": "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
            "RoleArn": "arn:aws:iam::123456789012:role/Administrator", 
            "RedshiftDataParameters": {
                "Database": "dev",
                "Sql": "select 1;",
                "StatementName": "test-redshift-serverless-workgroup-data", 
                "WithEvent": true 
            } 
        } 
    ] 
}
```

## 여러 SQL 문 및 클러스터를 사용한 호출
<a name="data-api-calling-event-bridge-sqls-cluster"></a>

다음 예에서는 AWS CLI를 사용하여 Amazon Redshift 클러스터에 대해 여러 SQL 문을 실행하는 데 사용되는 EventBridge 규칙을 생성합니다.

```
aws events put-rule 
--name  test-redshift-cluster-data 
--schedule-expression "rate(1 minute)"
```

그런 다음 규칙에 지정된 일정에 따라 실행되도록 EventBridge 대상이 생성됩니다.

```
aws events put-targets 
--cli-input-json file://data.json
```

입력 data.json 파일은 다음과 같습니다. `Sqls` JSON 키는 여러 SQL 문이 있음을 나타냅니다. `Arn` JSON 값에는 클러스터 식별자가 포함됩니다. `RoleArn` JSON 값에는 앞서 설명한 대로 SQL을 실행하는 데 사용되는 IAM 역할이 포함됩니다.

```
{
    "Rule": "test-redshift-cluster-data", 
    "EventBusName": "default", 
    "Targets": [ 
        {
            "Id": "2",
            "Arn": "arn:aws:redshift:us-east-1:123456789012:cluster:mycluster",
            "RoleArn": "arn:aws:iam::123456789012:role/Administrator", 
            "RedshiftDataParameters": {
                "Database": "dev",
                "Sqls": ["select 1;", "select 2;", "select 3;"],
                "StatementName": "test-redshift-cluster-data", 
                "WithEvent": true 
            } 
        } 
    ] 
}
```

## 여러 SQL 문 및 작업 그룹을 사용한 호출
<a name="data-api-calling-event-bridge-sqls-workgroup"></a>

다음 예에서는 AWS CLI를 사용하여 Amazon Redshift Serverless 작업 그룹에 대해 여러 SQL 문을 실행하는 데 사용되는 EventBridge 규칙을 생성합니다.

```
aws events put-rule 
--name  test-redshift-serverless-workgroup-data 
--schedule-expression "rate(1 minute)"
```

그런 다음 규칙에 지정된 일정에 따라 실행되도록 EventBridge 대상이 생성됩니다.

```
aws events put-targets 
--cli-input-json file://data.json
```

입력 data.json 파일은 다음과 같습니다. `Sqls` JSON 키는 여러 SQL 문이 있음을 나타냅니다. `Arn` JSON 값에는 작업 그룹 이름이 포함됩니다. `RoleArn` JSON 값에는 앞서 설명한 대로 SQL을 실행하는 데 사용되는 IAM 역할이 포함됩니다.

```
{
    "Rule": "test-redshift-serverless-workgroup-data", 
    "EventBusName": "default", 
    "Targets": [ 
        {
            "Id": "2",
            "Arn": "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
            "RoleArn": "arn:aws:iam::123456789012:role/Administrator", 
            "RedshiftDataParameters": {
                "Database": "dev",
                "Sqls": ["select 1;", "select 2;", "select 3;"],
                "StatementName": "test-redshift-serverless-workgroup-data", 
                "WithEvent": true 
            } 
        } 
    ] 
}
```