Amazon Redshift は、2025 年 11 月 1 日以降、新しい Python UDF の作成をサポートしなくなります。Python UDF を使用する場合は、その日付より前に UDF を作成してください。既存の Python UDF は引き続き通常どおり機能します。詳細については、ブログ記事
Amazon Redshift CLI または API を使用して IAM ID のデータベース認証情報を生成する
プログラムで一時的なデータベースユーザー認証情報を生成するため、Amazon Redshift では AWS Command Line Interface (AWS CLI) および GetClusterCredentials API オペレーション用の get-cluster-credentials コマンドを利用できます。または、GetClusterCredentials
オペレーションを呼び出し、データベースユーザー認証情報を取得して、SQL クライアントと Amazon Redshift データベース間の接続を確立するプロセスを管理する、Amazon Redshift JDBC または ODBC ドライバーを使用して SQL クライアントを設定できます。詳細については、「データベースユーザー認証情報を作成するための JDBC および ODBC のオプション」を参照してください。
注記
Amazon Redshift JDBC または ODBC ドライバを使用して、データベースユーザー認証情報を生成することをお勧めします。
このセクションでは、プログラムで GetClusterCredentials
オペレーションまたは get-cluster-credentials コマンドを呼び出し、データベースのユーザー認証情報を取得して、データベースに接続する手順を示します。
一時的データベース認証情報を生成して使用するには
-
必要なアクセス許可を使用してユーザーまたはロールを作成または変更します。IAM 許可の詳細については、「ステップ 3: GetClusterCredentials を呼び出すアクセス許可を持つ IAM ロールを作成する」を参照してください。
-
前のステップで認可したユーザーまたはロールとして、get-cluster-credentials CLI コマンドを実行するか、
GetClusterCredentials
API オペレーションを呼び出して以下の値を指定します。-
クラスター識別子 – データベースを含むクラスターの名前。
-
データベースユーザー名 – 既存の、または新しいデータベースユーザーの名前。
-
ユーザーがデータベースに存在せず、AutoCreate が true の場合、PASSWORD を無効にして新しいユーザーが作成されます。
-
ユーザーが存在せず、AutoCreate が false の場合、要求は失敗します。
-
この例では、データベースユーザー名は
temp_creds_user
です。
-
-
Autocreate – (オプション) データベースユーザー名が存在しない場合は新しいユーザーを作成します。
-
データベース名 – (オプション) ユーザーがログオンする権限が付与されているデータベースの名前。データベース名を指定しない場合、ユーザーは任意のクラスターデータベースにログインできます。
-
データベースグループ – (オプション) 既存のデータベースユーザーグループのリスト。正常にログインすると、データベースユーザーが、指定されたユーザーグループに追加されます。グループを指定しない場合、ユーザーは PUBLIC 許可のみを持ちます。ユーザーグループ名は、ユーザーまたはロールにアタッチされた IAM ポリシーに指定されている dbgroup リソース ARN と一致する必要があります。
-
有効期限 – (任意) 一時的認証情報が期限切れになるまでの時間 (秒単位)。900 秒 (15 分) と 3600 秒 (60 分間) の間の値を指定できます。デフォルト値は 900 秒です。
-
-
Amazon Redshift は、指定したリソースで
GetClusterCredentials
オペレーションを呼び出すアクセス許可をユーザーが持っていることを確認します。 -
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==" }
-
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 を使用したクラスターへの接続の詳細については、接続のセキュリティオプションを設定するを参照してください。
-
接続で SSL を使用しない場合、接続の試行は失敗します。
-
クラスターは
authentication
要求を SQL クライアントに送信します。 -
次に、SQL クライアントは一時パスワードをクラスターに送信します。
-
パスワードが有効で期限切れでない場合、クラスターは接続を完了します。