

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 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 資料 API 操作
<a name="data-api-calling-event-bridge"></a>

您可以建立會比對所選事件並將其路由到目標以採取行動的規則。您也可以使用規則對預定的排程採取行動。如需詳細資訊，請參閱[「Amazon EventBridge 使用者指南」](https://docs.aws.amazon.com/eventbridge/latest/userguide/)。

若要使用 EventBridge 來排程資料 API 操作，相關聯的 IAM 角色必須信任 CloudWatch Events 的主體 (events.amazonaws.com)。此角色應該要有已附加之受管政策 `AmazonEventBridgeFullAccess` 的對等項目。其也應該要有由資料 API 管理的 `AmazonRedshiftDataFullAccess` 政策許可。您可以在 IAM 主控台上使用這些許可建立 IAM 角色。在 IAM 主控台上建立角色時，請選擇 CloudWatch Events AWS 的服務信任實體。在 EventBridge 目標的 `RoleArn` JSON 值中指定 IAM 角色。如需建立 IAM 角色的詳細資訊，請參閱《*IAM 使用者指南*》中的[為 AWS 服務建立角色 （主控台）](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 建立 EventBridge 規則，用於對 Amazon Redshift 叢集執行 SQL 陳述式。

```
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 建立 EventBridge 規則，用於針對 Amazon Redshift Serverless 工作群組執行 SQL 陳述式。

```
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 建立 EventBridge 規則，用於對 Amazon Redshift 叢集執行多個 SQL 陳述式。

```
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 建立 EventBridge 規則，用於對 Amazon Redshift Serverless 工作群組執行多個 SQL 陳述式。

```
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 
            } 
        } 
    ] 
}
```