

 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 Redshift CLI または API を使用して IAM ID のデータベース認証情報を生成する
<a name="generating-iam-credentials-cli-api"></a>

プログラムで一時的なデータベースユーザー認証情報を生成するため、Amazon Redshift では AWS Command Line Interface (AWS CLI) および [GetClusterCredentials](https://docs.aws.amazon.com/redshift/latest/APIReference/API_GetClusterCredentials.html) API オペレーション用の [get-cluster-credentials](https://docs.aws.amazon.com/cli/latest/reference/redshift/get-cluster-credentials.html) コマンドを利用できます。または、`GetClusterCredentials` オペレーションを呼び出し、データベースユーザー認証情報を取得して、SQL クライアントと Amazon Redshift データベース間の接続を確立するプロセスを管理する、Amazon Redshift JDBC または ODBC ドライバーを使用して SQL クライアントを設定できます。詳細については、[データベースユーザー認証情報を作成するための JDBC および ODBC のオプション](options-for-providing-iam-credentials.md#jdbc-and-odbc-options-for-database-credentials) を参照してください。

**注記**  
Amazon Redshift JDBC または ODBC ドライバを使用して、データベースユーザー認証情報を生成することをお勧めします。

このセクションでは、プログラムで `GetClusterCredentials` オペレーションまたは get-cluster-credentials コマンドを呼び出し、データベースのユーザー認証情報を取得して、データベースに接続する手順を示します。

**一時的データベース認証情報を生成して使用するには**

1. 必要なアクセス許可を使用してユーザーまたはロールを作成または変更します。IAM 許可の詳細については、「[ステップ 3: GetClusterCredentialsWithIAM または GetClusterCredentials を呼び出すアクセス許可を持つ IAM ロールを作成する](generating-iam-credentials-steps.md#generating-iam-credentials-role-permissions)」を参照してください。

1. 前のステップで認可したユーザーまたはロールとして、get-cluster-credentials CLI コマンドを実行するか、`GetClusterCredentials` API オペレーションを呼び出して以下の値を指定します。
   + **クラスター識別子** – データベースを含むクラスターの名前。
   + **データベースユーザー名** – 既存の、または新しいデータベースユーザーの名前。
     + ユーザーがデータベースに存在せず、AutoCreate が true の場合、PASSWORD を無効にして新しいユーザーが作成されます。
     +  ユーザーが存在せず、AutoCreate が false の場合、要求は失敗します。
     + この例では、データベースユーザー名は `temp_creds_user`です。
   +  **Autocreate** – (オプション) データベースユーザー名が存在しない場合は新しいユーザーを作成します。
   +  **データベース名** – (オプション) ユーザーがログオンする権限が付与されているデータベースの名前。データベース名を指定しない場合、ユーザーは任意のクラスターデータベースにログインできます。
   +  **データベースグループ** – (オプション) 既存のデータベースユーザーグループのリスト。正常にログインすると、データベースユーザーが、指定されたユーザーグループに追加されます。グループを指定しない場合、ユーザーは PUBLIC 許可のみを持ちます。ユーザーグループ名は、ユーザーまたはロールにアタッチされた IAM ポリシーに指定されている dbgroup リソース ARN と一致する必要があります。
   +  **有効期限** – (任意) 一時的認証情報が期限切れになるまでの時間 (秒単位)。900 秒 (15 分) と 3600 秒 (60 分間) の間の値を指定できます。デフォルト値は 900 秒です。

1. Amazon Redshift は、指定したリソースで `GetClusterCredentials` オペレーションを呼び出すアクセス許可をユーザーが持っていることを確認します。

1. Amazon Redshift は一時パスワードとデータベースユーザー名を返します。

   次の例は、Amazon Redshift CLI を使用して、`temp_creds_user`という既存のユーザー用に一時的データベース認証情報を生成します。

   ```
   aws redshift get-cluster-credentials --cluster-identifier examplecluster --db-user temp_creds_user --db-name exampledb --duration-seconds 3600
   ```

   結果は次のようになります。

   ```
   {
     "DbUser": "IAM:temp_creds_user", 
     "Expiration": "2016-12-08T21:12:53Z", 
     "DbPassword": "EXAMPLEjArE3hcnQj8zt4XQj9Xtma8oxYEM8OyxpDHwXVPyJYBDm/gqX2Eeaq6P3DgTzgPg=="
   }
   ```

   次の例では、Amazon Redshift CLI と autocreate を使用して、新しいユーザー用の一時的データベース認証情報を生成し、そのユーザーをグループ `example_group`に追加します。

   ```
   aws redshift get-cluster-credentials --cluster-identifier examplecluster --db-user temp_creds_user --auto-create --db-name exampledb --db-groups example_group --duration-seconds 3600
   ```

   結果は次のようになります。

   ```
   {
     "DbUser": "IAMA:temp_creds_user:example_group", 
     "Expiration": "2016-12-08T21:12:53Z", 
     "DbPassword": "EXAMPLEjArE3hcnQj8zt4XQj9Xtma8oxYEM8OyxpDHwXVPyJYBDm/gqX2Eeaq6P3DgTzgPg=="
   }
   ```

1. Amazon Redshift クラスターとの Secure Sockets Layer (SSL) 認証接続を確立し、`GetClusterCredentials`の応答からのユーザー名とパスワードとともにログイン要求を送信します。ユーザー名には `IAM:` または `IAMA:` というプレフィックスを含めます (例: `IAM:temp_creds_user` または `IAMA:temp_creds_user`)。
**重要**  
SSL を必要とするように SQL クライアントを設定します。それ以外の場合、SQL クライアントが自動的に SSL との接続を試みた場合、なんらかの失敗があると、非 SSL にフォールバックする可能性があります。その場合、最初の接続の試行は、認証情報が期限切れまたは無効なために失敗する可能性があり、2 番目の接続の試行は、接続が SSL でないために失敗します。その場合、最初のエラーメッセージは表示されない可能性があります。SSL を使用したクラスターへの接続の詳細については、[接続のセキュリティオプションを設定する](connecting-ssl-support.md)を参照してください。

1. 接続で SSL を使用しない場合、接続の試行は失敗します。

1. クラスターは `authentication` 要求を SQL クライアントに送信します。

1. 次に、SQL クライアントは一時パスワードをクラスターに送信します。

1. パスワードが有効で期限切れでない場合、クラスターは接続を完了します。