

 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/)を参照してください。

# 信頼できる ID の伝播で Data API を使用する
<a name="data-api-trusted-identity-propagation"></a>

Amazon Redshift アカウント管理者は、Amazon Redshift クラスターまたはワークグループを AWS IAM アイデンティティセンター と統合できます。これにより、シングルサインオンで Amazon Redshift へのワークフォースアクセスを管理できます。詳細については、「[Amazon Redshift での AWS IAM アイデンティティセンターの統合の設定](redshift-iam-access-control-idp-connect-console.md)」を参照してください。Amazon Redshift Data API は、IAM アイデンティティセンターのユーザー ID を Amazon Redshift クラスターまたはワークグループ、および AWS Lake Formation などの他の サービスに連鎖的に伝播することをサポートしています。「[Access AWS services programmatically using trusted identity propagation](https://aws.amazon.com/blogs//security/access-aws-services-programmatically-using-trusted-identity-propagation/)」の手順に従って、Data API を使用した設定およびクエリを実行することができます。

ID 拡張 IAM ロールセッションから IAM アイデンティティセンターのユーザー ID を使用して Data API を呼び出す場合、結果のステートメントとステートメントの結果には、同じ IAM アイデンティティセンターユーザーを使用してのみアクセスできます。例えば、次の AWS CLI コマンドは `execute-statement` オペレーションを呼び出して、信頼できる ID の伝播で SQL コマンドを実行します。

```
aws redshift-data execute-statement 
--sql "select current_user;" 
--cluster-id mycluster
--database dev
```

次の AWS CLI コマンドは、`batch-execute-statement` オペレーションを呼び出して 2 つの SQL コマンドを実行します。

```
aws redshift-data batch-execute-statement 
--sqls  "select current_user;"  "select current_date;"
--cluster-id mycluster
--database dev
```

ID 拡張 IAM ロールセッションによって送信された `cancel-statement`、`describe-statement`、`get-statement-result`、および `get-statement-result-v2` のステートメントにアクセスするには、IAM アイデンティティセンターのユーザーと IAM ロールが、`execute-statment` または `batch-execute-statement` の実行に使用される認証情報と一致する必要があります。例えば、次の AWS CLI コマンドは SQL ステートメントの結果を取得します。

```
aws redshift-data get-statement-result 
--id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111
```

ステートメントを一覧表示するには、割り当てられている Amazon Redshift IAM アイデンティティセンターアプリケーションのみに IAM アイデンティティセンターのユーザーがアクセスできるように、`cluster-identifier` または `workgroup-name` パラメータを指定する必要があります。例えば、次の AWS CLI コマンドは、特定のクラスターのステートメントを一覧表示します。

```
aws redshift-data list-statements
--cluster-identifier mycluster
```

信頼できる ID の伝播を使用して、クラスターまたはワークグループ内のデータベースオブジェクトにアクセスする Data API オペレーションを呼び出すこともできます。これには `list-databases`、`list-schemas`、`list-tables`、および `describe-table` オペレーションが含まれます。

IAM アイデンティティセンターのユーザーによって行われた API コールは、AWS CloudTrail で追跡できます。CloudTrail イベントの `onBehalfOf` セクションには、IAM アイデンティティセンターのユーザー ID と ID ストア ARN が表示されます。次の例は、IAM アイデンティティセンターのユーザー ID `a1b2c3d4-5678-90ab-cdef-EXAMPLE11111` と ID ストア ARN `arn:aws:identitystore::123456789012:identitystore/d-9067bc44d2` を含む `onBehalfOf` セクションを表示している CloudTrail イベントのスニペットを示しています。

```
{
            "eventVersion":"1.10",
            "userIdentity":{
            "type":"AssumedRole",
            ...
            },
            "onBehalfOf":{
            "userId":"a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
            "identityStoreArn":"arn:aws:identitystore::123456789012:identitystore/d-9067bc44d2"
            }
            },
            "eventTime":"2025-01-13T04:46:27Z",
            "eventSource":"redshift-data.amazonaws.com",
            "eventName":"ExecuteStatement",
            "awsRegion":"us-east-1"
            }
```

次の SQL コマンドを実行して、IAM アイデンティティセンターのユーザーが送信したクエリを確認できます。この例では、アイデンティティセンターに登録されている E メールは `username@example.com` です。

```
SELECT
    h.query_id,
    h.database_name,
    h.status,
    h.query_text,
    u.usename,
    h.start_time,
    h.end_time
FROM
    sys_query_history h
LEFT JOIN
    pg_user u
ON
    h.user_id = u.usesysid
where u.usename='awsidc:username@example.com'    
ORDER BY
    h.start_time DESC;
```