

 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 Python コネクタ
<a name="python-redshift-driver"></a>

Python 用 Amazon Redshift コネクタを使用することで、[AWSSDK for Python (Boto3)](https://github.com/boto/boto3)、pandasとNumerical Python (NumPy) との連携作業が可能になります。pandas の詳細については、[pandas GitHub のレポジトリ](https://github.com/pandas-dev/pandas)を参照してください。NumPy の詳細については、[NumPy GitHub のレポジトリ](https://github.com/numpy/numpy)を参照してください。

Amazon Redshift Python コネクタは、オープンソースのソリューションを提供します。ソースコードの閲覧、機能拡張のリクエスト、問題の報告、およびコントリビューションを行うことができます。

Amazon Redshift Python コネクタを使用するには、Python バージョン 3.6 以降が必要です。詳細については、[[Amazon Redshift Python ドライバーライセンス契約](https://github.com/aws/amazon-redshift-python-driver/blob/master/LICENSE)]を参照してください。

Amazon Redshift Python コネクタには、以下の機能があります。
+ AWS Identity and Access Management(IAM) 認証。詳細については、「[Amazon Redshift での Identity and Access Management](redshift-iam-authentication-access-control.md)」を参照してください。
+ フェデレーション API アクセスを使用した、アイデンティティプロバイダー認証 フェデレーション API アクセスは、次のような企業のアイデンティティプロバイダーに対応しています。
  + Azure AD 詳細については、AWSビッグデータブログ投稿[[Amazon Redshift アクセスをMicrosoft Azure AD シングルサインオンでフェデレーションする](https://aws.amazon.com/blogs/big-data/federate-amazon-redshift-access-with-microsoft-azure-ad-single-sign-on/)]を参照してください。
  + アクティブディレクトリフェデレーションサービス 詳細については、AWS ビッグデータブログ投稿「[Active Directory フェデレーションサービス (AD FS) を使用した Amazon Redshift クラスターへのアクセスをフェデレーションする: パート 1](https://aws.amazon.com/blogs/big-data/federate-access-to-your-amazon-redshift-cluster-with-active-directory-federation-services-ad-fs-part-1/)」を参照してください。
  + Okta 詳細については、AWS ビッグデータブログ投稿「[ID プロバイダーとして Okta を使用して Amazon Redshift アクセスをフェデレーションする](https://aws.amazon.com/blogs/big-data/federate-amazon-redshift-access-with-okta-as-an-identity-provider/)」を参照してください。
  + PingFederate 詳細については、[[PingFederate サイト](https://www.pingidentity.com/en/software/pingfederate.html)]を参照してください。
  + JumpCloud 詳細については、[[JumpCloud のサイト](https://jumpcloud.com/)]を参照してください。
+ Amazon Redshift のデータ型

Amazon Redshift Python コネクタは、Python データベース API 仕様 2.0 を実装しています。詳細については、Pythonのウェブサイトの[[PEP 249-Python データベース API 仕様 v2.0](https://www.python.org/dev/peps/pep-0249/)]を参照してください。

**Topics**
+ [Amazon Redshift Python コネクタのインストール](python-driver-install.md)
+ [Amazon Redshift Python コネクタの設定オプション](python-configuration-options.md)
+ [Python コネクタのインポート](python-start-import.md)
+ [Python コネクタと NumPy の連携](python-connect-integrate-numpy.md)
+ [Python コネクタとpandasの連携](python-connect-integrate-pandas.md)
+ [アイデンティティプロバイダープラグインの使用](python-connect-identity-provider-plugins.md)
+ [Amazon Redshift Python コネクタの使用例](python-connect-examples.md)
+ [Amazon Redshift Python コネクタの API リファレンス](python-api-reference.md)

# Amazon Redshift Python コネクタのインストール
<a name="python-driver-install"></a>

以下のいずれかの方法で、Amazon Redshift Python コネクタをインストールすることができます。
+ Python パッケージインデックス (PyPI)
+ Conda
+ GitHub リポジトリのクローン作成

## PyPI からの Python コネクタのインストール
<a name="python-pip-install-pypi"></a>

Python パッケージインデックス (PyPI) から Python コネクタをインストールするには、pip を使用します。これを行うには、以下のコマンドを実行します。

```
>>> pip install redshift_connector
```

コネクタは、仮想環境内にインストールできます。これを行うには、以下のコマンドを実行します。

```
>>> pip install redshift_connector
```

オプションとして、コネクタと一緒に pandas と NumPy をインストールすることができます。

```
>>> pip install 'redshift_connector[full]'
```

pip の詳細については、[[pip site](https://pip.pypa.io/en/stable/)]を参照してください。

## Conda からの Python コネクタのインストール
<a name="python-pip-install-from-conda"></a>

Python コネクタは Anaconda.org からインストールできます。

```
>>>conda install -c conda-forge redshift_connector
```

## AWSから GitHub リポジトリをクローンして Python コネクターをインストールします。
<a name="python-pip-install-from-source"></a>

Python コネクタをソースからインストールするには、AWSから GitHub リポジトリをクローンします。Python と virtualenv をインストールしたら、環境を設定し、次のコマンドを実行して必要な依存関係をインストールします。

```
$ git clone https://github.com/aws/amazon-redshift-python-driver.git
$ cd amazon-redshift-python-driver
$ virtualenv venv
$ . venv/bin/activate
$ python -m pip install -r requirements.txt
$ python -m pip install -e .
$ python -m pip install redshift_connector
```

# Amazon Redshift Python コネクタの設定オプション
<a name="python-configuration-options"></a>

以下に、Amazon Redshift Python コネクタに指定できるオプションの説明を示します。以下のオプションは、特に指定がない限り、利用可能な最新のコネクタバージョンに適用されます。

## access\$1key\$1id
<a name="python-access-key-id-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

IAM データベース認証用に設定された IAM ロールまたはユーザーのアクセスキー。

このパラメータはオプションです。

## allow\$1db\$1user\$1override
<a name="python-allow-db-user-override-option"></a>
+ **デフォルト値** – false
+ **データ型** – ブール型

正  
コネクタが、`DbUser`Security Assertion Markup Language (SAML) アサーションの値を使用することを指定します。

誤  
`DbUser`接続パラメータの値を使用することを指定します。

このパラメータはオプションです。

## app\$1name
<a name="python-app-name-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

認証に使用する アイデンティティ プロバイダー (IdP) アプリケーションの名前。

このパラメータはオプションです。

## application\$1name
<a name="python-application_name-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

監査目的のために Amazon Redshift に渡すクライアントアプリケーションの名前。指定したアプリケーション名は、[SYS\$1CONNECTION\$1LOG](https://docs.aws.amazon.com/redshift/latest/dg/SYS_CONNECTION_LOG.html) テーブルの「application\$1name」列に表示されます。これにより、問題をデバッグするときに接続ソースを追跡およびトラブルシューティングできます。

このパラメータはオプションです。

## auth\$1profile
<a name="python-auth-profile-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

JSON としての接続プロパティを持つ Amazon Redshift 認証プロファイルの名前。接続パラメータの名前付けの詳細については、`RedshiftProperty`クラスを参照してください。`RedshiftProperty`クラスは、エンドユーザーから提供された接続パラメータや、必要に応じてIAM 認証プロセスで生成された接続パラメータ (一時的な IAM 認証情報など）を格納します。詳細については、[[RedShiftProperty クラス](https://github.com/aws/amazon-redshift-python-driver/blob/master/redshift_connector/redshift_property.py#L9)]を参照してください。

このパラメータはオプションです。

## auto\$1create
<a name="python-auto-create-option"></a>
+ **デフォルト値** – false
+ **データ型** – ブール型

ユーザーが存在しない場合にユーザーを作成するかどうかを示す値。

このパラメータはオプションです。

## client\$1id
<a name="python-client-id-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

Azure IdP からのクライアント ID。

このパラメータはオプションです。

## client\$1secret
<a name="python-client-secret-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

Azure IdP からのクライアントシークレット。

このパラメータはオプションです。

## cluster\$1identifier
<a name="python-cluster-identifier-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

Amazon Redshift クラスターのクラスター識別子。

このパラメータはオプションです。

## credentials\$1provider
<a name="python-credential-provider-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

Amazon Redshift での認証に使用される IdP。以下の値が有効です。
+ `AdfsCredentialsProvider`
+ `AzureCredentialsProvider`
+ `BrowserAzureCredentialsProvider`
+ `BrowserAzureOAuth2CredentialsProvider`
+ `BrowserIdcAuthPlugin` - AWS IAM アイデンティティセンターを使用する認可プラグイン。
+ `BrowserSamlCredentialsProvider`
+ `IdpTokenAuthPlugin` - AWS IAM アイデンティティセンターのトークン、または AWS IAM アイデンティティセンターにリンクされているウェブ ID プロバイダーからの OpenID Connect (OIDC) JSON ベースの ID トークン (JWT) を受け入れる認可プラグイン。
+ `PingCredentialsProvider`
+ `OktaCredentialsProvider`

このパラメータはオプションです。

## データベース
<a name="python-database-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

接続先のデータベースの名前。

このパラメータは必須です。

## database\$1metadata\$1current\$1db\$1only
<a name="python-database-metadata-current-db-only-option"></a>
+ **デフォルト値** – true
+ **データ型** – ブール型

アプリケーションがマルチデータベースデータ共有カタログをサポートしているかどうかを示す値。デフォルト値の True は、下位互換性のためにアプリケーションがマルチデータベースデータ共有カタログをサポートしていないことを示します。

このパラメータはオプションです。

## db\$1groups
<a name="python-db-groups-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

DbUser で示されるユーザーが現在のセッションで参加している既存のデータベースグループ名のコンマ区切りのリスト。

このパラメータはオプションです。

## db\$1user
<a name="python-db-user-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

Amazon Redshift で使用するユーザー ID。

このパラメータはオプションです。

## endpoint\$1url
<a name="python-endpoint-url-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

Amazon Redshift エンドポイント URL。このオプションは、AWS内部使用の場合にのみ利用できます。

このパラメータはオプションです。

## group\$1federation
<a name="python-group-federation-option"></a>
+ **デフォルト値** – false
+ **データ型** – ブール型

このオプションは、Amazon Redshift IDP グループを使用するかどうかを指定します。

このパラメータはオプションです。

**true**  
Amazon Redshift アイデンティティプロバイダー (IDP) グループを使用します。

**false**  
ユーザーフェデレーションに STS API と GetClusterCredentials を使用して、接続に **db\$1groups** を指定します。

## ホスト
<a name="python-host-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

Amazon Redshift クラスターのホスト名。

このパラメータはオプションです。

## iam
<a name="python-iam-option"></a>
+ **デフォルト値** – false
+ **データ型** – ブール型

IAM 認証が有効になっています。

このパラメータは必須です。

## iam\$1disable\$1cache
<a name="python-iam-disable-cache-option"></a>
+ **デフォルト値** – false
+ **データ型** – ブール型

このオプションは、IAM 認証情報をキャッシュするかどうかを指定します。デフォルトでIAM 認証情報はキャッシュされます。これにより、API gateway へのリクエストがスロットルされた場合のパフォーマンスが向上します。

このパラメータはオプションです。

## idc\$1client\$1display\$1name
<a name="python-idc_client_display_name-option"></a>
+ **デフォルト値** — Amazon Redshift Python コネクタ
+ **データ型** - 文字列

BrowserIdcAuthPlugin を使用しているクライアントに使用される表示名。

このパラメータはオプションです。

## idc\$1region
<a name="python-idc_region"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

AWS IAM アイデンティティセンターインスタンスが配置されている AWS リージョン。

このパラメータは、credentials\$1provider 設定オプションで `BrowserIdcAuthPlugin` を使用して認証する場合にのみ必要です。

## idp\$1partition
<a name="python-idp_partition-option"></a>
+ **デフォルト値** - なし
+ **データ型** – 文字列

ID プロバイダー (IdP) が設定されているクラウドパーティションを指定します。これにより、ドライバーが接続する IdP 認証エンドポイントが決まります。

このパラメータを空白のままにすると、ドライバーはデフォルトで商用パーティションを使用します。可能な値は以下のとおりです。
+  `us-gov`: IdP が Azure Government で設定されている場合は、この値を使用します。例えば、Azure AD Government はエンドポイント `login.microsoftonline.us` を使用します。
+  `cn`: IdP が中国のクラウドパーティションで設定されている場合は、この値を使用します。例えば、Azure AD China はエンドポイント `login.chinacloudapi.cn` を使用します。

このパラメータはオプションです。

## idpPort
<a name="python-idp-port-option"></a>
+ **デフォルト値**— 7890
+ **データ型** – 整数

IdP が SAML アサーションを送信する先のリッスンポートです。

このパラメータは必須です。

## idp\$1response\$1timeout
<a name="python-idp-response-timeout-option"></a>
+ **デフォルト値** – 120
+ **データ型** – 整数

IdP から SAML アサーションを取得する際のタイムアウトです。

このパラメータは必須です。

## idp\$1tenant
<a name="python-idp-tenant-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

IdP テナント。

このパラメータはオプションです。

## issuer\$1url
<a name="python-issuer_url"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

 AWS IAM アイデンティティセンターサーバーのインスタンスエンドポイントを指します。

このパラメータは、credentials\$1provider 設定オプションで `BrowserIdcAuthPlugin` を使用して認証する場合にのみ必要です。

## listen\$1port
<a name="python-listen-port-option"></a>
+ **デフォルト値**— 7890
+ **データ型** – 整数

ブラウザのプラグインを介して SAML、Azure AD または AWS IAM アイデンティティセンターのサービスを使用する場合に、ID プロバイダーから SAML レスポンスを受信するためにドライバーが使用するポートです。

このパラメータはオプションです。

## login\$1url
<a name="python-login-url-option"></a>
+ **デフォルト値** - なし
+ **データ型** – 文字列

IdP のシングルサインオン URL。

このパラメータはオプションです。

## max\$1prepared\$1statements
<a name="python-max-prepared-statements-option"></a>
+ **デフォルト値** – 1000
+ **データ型** – 整数

接続ごとにキャッシュされる準備済みステートメントの最大数です。このパラメータを 0 に設定すると、キャッシュメカニズムが無効になります。このパラメータに負の数を入力すると、デフォルト値に設定されます。

このパラメータはオプションです。

## numeric\$1to\$1float
<a name="python-numeric-to-float-option"></a>
+ **デフォルト値** – false
+ **データ型** – ブール型

このオプションは、コネクタが数値データ型の値を decimal.Decimal から float に変換するかどうかを指定します。デフォルトでは、コネクタは数値データ型の値を decimal.Decimal で受け取り、変換しません。

精度が求められるユースケースでは、結果が丸められる場合もあるため、numeric\$1to\$1float を有効にすることは推奨されません。

decimal.Decimal および decimal.Decimal と float 間のトレードオフの詳細については、Python ウェブサイトの「[decimal — Decimal fixed point and floating point arithmetic](https://docs.python.org/3/library/decimal.html)」(10 進数 — 固定小数点数と浮動小数点数の演算) を参照してください。

このパラメータはオプションです。

## partner\$1sp\$1id
<a name="python-partner-sp-id-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

Ping による認証に使用されるパートナー SP IDです。

このパラメータはオプションです。

## password
<a name="python-password-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

認証に使用されるパスワード。

このパラメータはオプションです。

## ポート
<a name="python-port-option"></a>
+ **デフォルト値** — 5439
+ **データ型** – 整数

Amazon Redshift クラスターのポートナンバー。

このパラメータは必須です。

## preferred\$1role
<a name="python-preferred-role-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

現在の接続に優先される IAM ロール。

このパラメータはオプションです。

## principal\$1arn
<a name="python-principal-arn-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

ポリシーを生成する対象のユーザーまたは IAM ロールの Amazon リソースネーム (ARN)。ロールにポリシーをアタッチし、そのロールをユーザーに割り当ててアクセスを許可することをお勧めします。

このパラメータはオプションです。

## profile
<a name="python-profile-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

AWS認証情報を含むAWS認証情報ファイル内のプロファイルの名前。

このパラメータはオプションです。

## provider\$1name
<a name="python-provider_name-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

Redshift ネイティブ認証プロバイダの名前です。

このパラメータはオプションです。

## リージョン
<a name="python-region-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

クラスターが配置されているAWS リージョン。

このパラメータはオプションです。

## role\$1arn
<a name="python-role-arn-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

発信者が想定しているロールの Amazon リソースネーム (ARN)です。このパラメーターは、`JwtCredentialsProvider`で示されるプロバイダーが使用します。

`JwtCredentialsProvider`プロバイダーの場合、このパラメータは必須です。それ以外の場合、このパラメータはオプションです。

## role\$1session\$1name
<a name="python-role-session-name-option"></a>
+ **デフォルト値** – jwt\$1redshift\$1session
+ **データ型** - 文字列

引き受けたロールセッションの識別子。通常は、アプリケーションを使用するユーザーに関連付けられている名前または識別子を渡します。アプリケーションが使用する一時的なセキュリティ認証情報は、そのユーザーに関連付けられます。このパラメータは、`JwtCredentialsProvider`で示されるプロバイダーが使用します。

このパラメータはオプションです。

## scope
<a name="python-scope-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

ユーザーが同意可能なスコープをスペースで区切ったリストです。このパラメータを指定すると、アプリケーションが呼び出す API の同意を得られるようになります。credentials\$1provider オプションに BrowserAzureOAuth2CredentialsProvider を指定する場合、このパラメータを指定できます。

このパラメータは、BrowserAzureOAuth2CredentialsProvider プラグインでは必須です。

## secret\$1access\$1key\$1id
<a name="python-secret-access-key-id-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

IAM データベース認証用に設定された IAM ロールまたはユーザーのシークレットアクセスキー。

このパラメータはオプションです。

## session\$1token
<a name="python-session-token-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

IAM データベース認証用に設定された IAM ロールまたはユーザーのアクセスキー。このパラメータは、一時的なAWS認証情報を使用している場合に必要です。

このパラメータはオプションです。

## serverless\$1acct\$1id
<a name="python-serverless-acct-id-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

Amazon Redshift Serverless アカウント ID。

このパラメータはオプションです。

## serverless\$1work\$1group
<a name="python-serverless-work-group-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

Amazon Redshift Serverless ワークグループ名。

このパラメータはオプションです。

## ssl
<a name="python-ssl-option"></a>
+ **デフォルト値** – true
+ **データ型** – ブール型

Secure Sockets Layer (SSL) が有効になっています。

このパラメータは必須です。

## ssl\$1insecure
<a name="python-ssl-insecure-option"></a>
+ **デフォルト値** – false
+ **データ型** – ブール型

IdP ホストのサーバー SSL 証明書の検証を無効にするかどうかを指定する値。このパラメータを True に設定すると、IdP ホストのサーバー SSL 証明書の検証が無効になります。本番環境では、デフォルト値の False のままにしておくことを推奨します。

このパラメータはオプションです。

## sslmode
<a name="python-sslmode-option"></a>
+ **デフォルト値** – verify-ca
+ **データ型** - 文字列

Amazon Redshift への接続のセキュリティ。次の値のいずれかを指定できます。
+ verify-ca
+ verify-full

このパラメータは必須です。

## tcp\$1keepalive
<a name="python-tcp_keepalive-option"></a>
+ **デフォルト値** – true
+ **データ型** – ブール型

TCP キープアライブを使用して接続がタイムアウトしないようにするかどうか。次の値を指定できます。
+ True: ドライバーは、TCP キープアライブを使用して、接続がタイムアウトしないようにします。
+ False: ドライバーは TCP キープアライブを使用しません。

このパラメータはオプションです。

## tcp\$1keepalive\$1count
<a name="python-tcp_keepalive_count-option"></a>
+ **デフォルト値** - なし
+ **データ型** – 整数

接続を非アクティブと見なす前に送信する認知されていないプローブ数。例えば、値を 3 に設定すると、ドライバーは接続がアクティブでないと判断する前に、未応答のキープアライブパケットを 3 つ送信します。

このパラメータを指定しない場合、Amazon Redshift はシステムのデフォルト値を使用します。

このパラメータはオプションです。

## tcp\$1keepalive\$1interval
<a name="python-tcp_keepalive_interval-option"></a>
+ **デフォルト値** - なし
+ **データ型** – 整数

ドライバーがプローブの確認応答を受信しなかった場合の、後続のキープアライブプローブの秒単位の間隔。このパラメータを指定する場合、正の整数である必要があります。

このパラメータを指定しない場合、Amazon Redshift はシステムのデフォルト値を使用します。

このパラメータはオプションです。

## tcp\$1keepalive\$1idle
<a name="python-tcp_keepalive_idle-option"></a>
+ **デフォルト値** - なし
+ **データ型** – 整数

ドライバーが最初のキープアライブプローブを送信した後の非アクティブ時間 (秒単位)。例えば、値を 120 に設定すると、ドライバーは最初のキープアライブパケットを送信する前に 2 分間の非アクティブ状態を維持します。このパラメータを指定する場合、正の整数である必要があります。

このパラメータを指定しない場合、Amazon Redshift はシステムのデフォルト値を使用します。

このパラメータはオプションです。

## タイムアウト
<a name="python-timeout-option"></a>
+ **デフォルト値** - なし
+ **データ型** – 整数

サーバーへの接続がタイムアウトするまで待つ秒数。

このパラメータはオプションです。

## トークン
<a name="python-token-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

AWS IAM アイデンティティセンターが提供するアクセストークン、または AWS IAM アイデンティティセンターにリンクされているウェブ ID プロバイダーが提供する OpenID Connect (OIDC) JSON ウェブトークン (JWT)。アプリケーションは、このトークンを生成するために、AWS IAM アイデンティティセンターまたは AWS IAM アイデンティティセンターにリンクされている ID プロバイダーにより、アプリケーションのユーザーを認証する必要があります。

このパラメータは `IdpTokenAuthPlugin` で機能します。

## token\$1type
<a name="python-token_type-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

`IdpTokenAuthPlugin` で使用しているトークンのタイプ。

次の値を指定できます。

**ACCESS\$1TOKEN**  
AWS IAM アイデンティティセンターが提供するアクセストークンを使用する場合は、これを入力します。

**EXT\$1JWT**  
AWS IAM アイデンティティセンターと統合されているウェブベースの ID プロバイダーが提供する OpenID Connect (OIDC) JSON ウェブトークン (JWT) を使用する場合は、これを入力します。

このパラメータは `IdpTokenAuthPlugin` で機能します。

## ユーザー
<a name="python-user-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

認証に使用するユーザー名。

このパラメータはオプションです。

## web\$1identity\$1token
<a name="python-web-identity-token-option"></a>
+ **デフォルト値** - なし
+ **データ型** - 文字列

ID プロバイダによって提供される OAuth 2.0 アクセストークンまたは OpenID Connect ID トークン。アプリケーションを使用しているユーザーをウェブアイデンティティプロバイダーで認証することで、アプリケーションがこのトークンを取得するようにします。`JwtCredentialsProvider`で示されるプロバイダーはこのパラメータを使用します。

`JwtCredentialsProvider`プロバイダーの場合、このパラメータは必須です。それ以外の場合、このパラメータはオプションです。

# Python コネクタのインポート
<a name="python-start-import"></a>

Python コネクタをインポートするには、次のコマンドを実行します。

```
>>> import redshift_connector
```

AWS認証情報を使用して Amazon Redshift クラスターに接続するには、以下のコマンドを実行します。

```
conn = redshift_connector.connect(
    host='examplecluster.abc123xyz789.us-west-1.redshift.amazonaws.com',
    port=5439,
    database='dev',
    user='awsuser',
    password='my_password'
 )
```

# Python コネクタと NumPy の連携
<a name="python-connect-integrate-numpy"></a>

以下は、Python コネクタと NumPy を連携する例です。

```
>>>  import numpy
#Connect to the cluster
>>> import redshift_connector
>>> conn = redshift_connector.connect(
     host='examplecluster.abc123xyz789.us-west-1.redshift.amazonaws.com',
     port=5439,
     database='dev',
     user='awsuser',
     password='my_password'
  )
  
# Create a Cursor object
>>> cursor = conn.cursor()

# Query and receive result set            
cursor.execute("select * from book")

result: numpy.ndarray = cursor.fetch_numpy_array()
print(result)
```

結果は、以下のとおりです。

```
[['One Hundred Years of Solitude' 'Gabriel García Márquez']
['A Brief History of Time' 'Stephen Hawking']]
```

# Python コネクタとpandasの連携
<a name="python-connect-integrate-pandas"></a>

以下は、Python コネクタとpandasを統合する例です。

```
>>> import pandas

#Connect to the cluster
>>> import redshift_connector
>>> conn = redshift_connector.connect(
     host='examplecluster.abc123xyz789.us-west-1.redshift.amazonaws.com',
     port=5439,
     database='dev',
     user='awsuser',
     password='my_password'
  )
  
# Create a Cursor object
>>> cursor = conn.cursor()

# Query and receive result set
cursor.execute("select * from book")
result: pandas.DataFrame = cursor.fetch_dataframe()
print(result)
```

# アイデンティティプロバイダープラグインの使用
<a name="python-connect-identity-provider-plugins"></a>

ID プロバイダープラグインの使用方法については、「[IAM 認証情報の提供オプション](options-for-providing-iam-credentials.md)」を参照してください。IAM ロールのベストプラクティスを含む IAM ID の管理の詳細については、「[Amazon Redshift での Identity and Access Management](redshift-iam-authentication-access-control.md)」を参照してください。

## ADFS アイデンティティプロバイダープラグインを使用した認証
<a name="python-connect-identity-provider-active-dir"></a>

次に、アクティブディレクトリフェデレーションサービス (ADFS) アイデンティティプロバイダープラグインを使用して、Amazon Redshift データベースに接続するユーザーを認証する例を示します。

```
>>> con = redshift_connector.connect(
    iam=True,
    database='dev',
    host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
    cluster_identifier='my-testing-cluster',
    credentials_provider='AdfsCredentialsProvider',
    user='brooke@myadfshostname.com',
    password='Hunter2',
    idp_host='myadfshostname.com'
)
```

## Azure アイデンティティプロバイダープラグインを使用した認証
<a name="python-connect-identity-provider-azure"></a>

以下は、Azure のアイデンティティプロバイダプラグインを使用した認証の例です。以下のように、Azure エンタープライズアプリケーションの`client_id`および`client_secret`の値を作成することができます。

```
>>>  con = redshift_connector.connect(
    iam=True,
    database='dev',
    host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
    cluster_identifier='my-testing-cluster',
    credentials_provider='AzureCredentialsProvider',
    user='brooke@myazure.org',
    password='Hunter2',
    idp_tenant='my_idp_tenant',
    client_id='my_client_id',
    client_secret='my_client_secret',
    preferred_role='arn:aws:iam:123:role/DataScientist'
)
```

## AWS IAM アイデンティティセンターのプロバイダープラグインを使用した認証
<a name="python-connect-identity-provider-aws-idc"></a>

 以下は、AWS IAM アイデンティティセンターのプロバイダープラグインを使用した認証の例です。

```
with redshift_connector.connect(
credentials_provider='BrowserIdcAuthPlugin',
host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
database='dev',
idc_region='us-east-1',
issuer_url='https://identitycenter.amazonaws.com/ssoins-790723ebe09c86f9',
idp_response_timeout=60,
listen_port=8100,
idc_client_display_name='Test Display Name',
# port value of 5439 is specified by default
)
```

## Azure ブラウザのアイデンティティプロバイダープラグインを使用した認証
<a name="python-connect-identity-provider-azure-browser"></a>

次に、Azure ブラウザアイデンティティプロバイダープラグインを使用して、Amazon Redshift データベースに接続するユーザーを認証する例を示します。

多要素認証は、ユーザーから提供されたサインイン認証情報を使用して、ブラウザで行われます。

```
>>>con = redshift_connector.connect(
    iam=True,
    database='dev',
    host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
    cluster_identifier='my-testing-cluster',
    credentials_provider='BrowserAzureCredentialsProvider',
    idp_tenant='my_idp_tenant',
    client_id='my_client_id',
)
```

## Okta アイデンティティプロバイダープラグインを使用した認証
<a name="python-connect-identity-provider-okta"></a>

以下は、Oktaのアイデンティティプロバイダプラグインを使用した認証の例です。Okta アプリケーションを使用して`idp_host`、`app_id`および`app_name`の値を取得できます。

```
>>> con = redshift_connector.connect(
    iam=True,
    database='dev',
    host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
    cluster_identifier='my-testing-cluster',
    credentials_provider='OktaCredentialsProvider',
    user='brooke@myazure.org',
    password='hunter2',
    idp_host='my_idp_host',
    app_id='my_first_appetizer',
    app_name='dinner_party'
)
```

## 汎用 SAML ブラウザ アイデンティティプロバイダープラグインで JumpCloud を使用した認証
<a name="python-connect-identity-provider-jumpcloud"></a>

以下に、認証用の汎用 SAML ブラウザ アイデンティティプロバイダープラグインで JumpCloud を使用する例を示します。

パスワードパラメータは必須です。ただし、ブラウザで多要素認証が行われるため、このパラメータを入力する必要はありません。

```
>>> con = redshift_connector.connect(
    iam=True,
    database='dev',
    host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
    cluster_identifier='my-testing-cluster',
    credentials_provider='BrowserSamlCredentialsProvider',
    user='brooke@myjumpcloud.org',
    password='',
    login_url='https://sso.jumpcloud.com/saml2/plustwo_melody'
)
```

# Amazon Redshift Python コネクタの使用例
<a name="python-connect-examples"></a>

Amazon Redshift Python コネクタの使用例を次に示します。これを実行するには、まず Python コネクタをインストールする必要があります。Amazon Redshift Python コネクタのインストールの詳細については、「[Amazon Redshift Python コネクタのインストール](python-driver-install.md)」を参照してください。Python コネクタで使用できる設定オプションの詳細については、「[Amazon Redshift Python コネクタの設定オプション](python-configuration-options.md)」を参照してください。

**Topics**
+ [AWS 認証情報を使用した Amazon Redshift クラスターへの接続およびクエリ](#python-connect-cluster)
+ [オートコミットの有効化](#python-connect-enable-autocommit)
+ [カーソルのパラメータスタイルの設定](#python-connect-config-paramstyle)
+ [Amazon S3 バケットからデータをコピーする COPY と Amazon S3 バケットへデータを書き込む UNLOAD の使用](#python-connect-copy-unload-s3)

## AWS 認証情報を使用した Amazon Redshift クラスターへの接続およびクエリ
<a name="python-connect-cluster"></a>

以下の例は、AWS 認証情報を使用して Amazon Redshift クラスターに接続し、次にテーブルをクエリしてクエリ結果を取得する手順を示しています。

```
#Connect to the cluster
>>> import redshift_connector
>>> conn = redshift_connector.connect(
     host='examplecluster.abc123xyz789.us-west-1.redshift.amazonaws.com',
     database='dev',
     port=5439,
     user='awsuser',
     password='my_password'
  )
  
# Create a Cursor object
>>> cursor = conn.cursor()

# Query a table using the Cursor
>>> cursor.execute("select * from book")
                
#Retrieve the query result set
>>> result: tuple = cursor.fetchall()
>>> print(result)
 >> (['One Hundred Years of Solitude', 'Gabriel García Márquez'], ['A Brief History of Time', 'Stephen Hawking'])
```

## オートコミットの有効化
<a name="python-connect-enable-autocommit"></a>

オートコミットプロパティは、Python データベース API 仕様に従って、デフォルトではオフになっています。ロールバックコマンドの実行後に以下のコマンドを使用して、接続の自動コミットプロパティをオンにして、トランザクションが進行中でないことを確認できます。

```
#Connect to the cluster
>>> import redshift_connector
>>> conn = redshift_connector.connect(...)

# Run a rollback command
>>>  conn.rollback()

# Turn on autocommit
>>>  conn.autocommit = True
>>>  conn.run("VACUUM")

# Turn off autocommit
>>>  conn.autocommit = False
```

## カーソルのパラメータスタイルの設定
<a name="python-connect-config-paramstyle"></a>

カーソルのパラメータスタイルは cursor.paramstyle で変更できます。デフォルトとして使用されるパラメータスタイルは `format` です。パラメータスタイルの有効な値は、`qmark`、`numeric`、`named`、`format`、および `pyformat` です。

さまざまなパラメータスタイルを使用してパラメータをサンプル SQL ステートメントに渡す例を以下に示します。

```
# qmark
redshift_connector.paramstyle = 'qmark'
sql = 'insert into foo(bar, jar) VALUES(?, ?)'
cursor.execute(sql, (1, "hello world"))

# numeric
redshift_connector.paramstyle = 'numeric'
sql = 'insert into foo(bar, jar) VALUES(:1, :2)'
cursor.execute(sql, (1, "hello world"))

# named
redshift_connector.paramstyle = 'named'
sql = 'insert into foo(bar, jar) VALUES(:p1, :p2)'
cursor.execute(sql, {"p1":1, "p2":"hello world"})

# format
redshift_connector.paramstyle = 'format'
sql = 'insert into foo(bar, jar) VALUES(%s, %s)'
cursor.execute(sql, (1, "hello world"))

# pyformat
redshift_connector.paramstyle = 'pyformat'
sql = 'insert into foo(bar, jar) VALUES(%(bar)s, %(jar)s)'
cursor.execute(sql, {"bar": 1, "jar": "hello world"})
```

## Amazon S3 バケットからデータをコピーする COPY と Amazon S3 バケットへデータを書き込む UNLOAD の使用
<a name="python-connect-copy-unload-s3"></a>

以下の例は、Amazon S3 バケットからテーブルにデータをコピーしてから、テーブルからバケットにアンロードする方法を示しています。

以下のデータを含む `category_csv.txt` という名前のテキストファイルをAmazon S3 バケットにアップロードします。

```
12,Shows,Musicals,Musical theatre
13,Shows,Plays,"All ""non-musical"" theatre"
14,Shows,Opera,"All opera, light, and ""rock"" opera"
15,Concerts,Classical,"All symphony, concerto, and choir concerts"
```

次に、最初に Amazon Redshift データベースに接続する Python コードの例を示します。次に、`category`という名前のテーブルを作成し、S3 バケットから CSV データをテーブルにコピーします。

```
#Connect to the cluster and create a Cursor
>>> import redshift_connector
>>> with redshift_connector.connect(...) as conn:
>>> with conn.cursor() as cursor:

#Create an empty table
>>>     cursor.execute("create table category (catid int, cargroup varchar, catname varchar, catdesc varchar)")

#Use COPY to copy the contents of the S3 bucket into the empty table 
>>>     cursor.execute("copy category from 's3://testing/category_csv.txt' iam_role 'arn:aws:iam::123:role/RedshiftCopyUnload' csv;")

#Retrieve the contents of the table
>>>     cursor.execute("select * from category")
>>>     print(cursor.fetchall())

#Use UNLOAD to copy the contents of the table into the S3 bucket
>>>     cursor.execute("unload ('select * from category') to 's3://testing/unloaded_category_csv.txt'  iam_role 'arn:aws:iam::123:role/RedshiftCopyUnload' csv;")

#Retrieve the contents of the bucket
>>>     print(cursor.fetchall())
 >> ([12, 'Shows', 'Musicals', 'Musical theatre'], [13, 'Shows', 'Plays', 'All "non-musical" theatre'], [14, 'Shows', 'Opera', 'All opera, light, and "rock" opera'], [15, 'Concerts', 'Classical', 'All symphony, concerto, and choir concerts'])
```

`autocommit` を true に設定していない場合は、`execute()` ステートメントの実行後に `conn.commit()` でコミットします。

データは S3 バケット内にあるファイル `unloaded_category_csv.text0000_part00` にアンロードされ、次のコンテンツが含まれます。

```
12,Shows,Musicals,Musical theatre
13,Shows,Plays,"All ""non-musical"" theatre"
14,Shows,Opera,"All opera, light, and ""rock"" opera"
15,Concerts,Classical,"All symphony, concerto, and choir concerts"
```

# Amazon Redshift Python コネクタの API リファレンス
<a name="python-api-reference"></a>

Amazon Redshift Python コネクタ API オペレーションの説明は次のとおりです。

## redshift\$1connector
<a name="python-api-redshift_connector"></a>

`redshift_connector`API オペレーションの説明は次のとおりです。

`connect(user, database, password[, port, …])`  
Amazon Redshift クラスターへの接続を確立します。この関数は、ユーザー入力を検証し、必要に応じて アイデンティティプロバイダープラグインを使用して認証し、接続オブジェクトを作成します。

`apilevel`  
現在サポートされている DBAPI レベルは「2.0」です。

`paramstyle``str(object=’’) -> str str(bytes_or_buffer[, encoding[, errors]]) -> str`  
グローバルに使用するデータベース API パラメータスタイル。

## 接続
<a name="python-api-connection"></a>

Amazon Redshift Python コネクタの接続 API オペレーションの説明は次のとおりです。

`__init__(user, password, database[, host, …])`  
生の接続オブジェクトを初期化します。

`cursor`  
この接続にバインドされたカーソルオブジェクトを作成します。

`commit`  
現在のデータベーストランザクションをコミットします。

`rollback`  
現在のデータベーストランザクションをロールバックします。

`close`  
データベース接続を閉じます。

`execute(cursor, operation, vals)`  
指定された SQL コマンドを実行します。`redshift_connector.paramstyle`の値に応じて、パラメータをシーケンスまたはマッピングとして提供することができます。

`run(sql[, stream])`  
指定された SQL コマンドを実行します。オプションで、COPY コマンドで使用するストリーミングを指定することができます。

`xid(format_id, global_transaction_id, …)`  
トランザクション ID を作成します。`global_transaction_id`パラメータのみが postgres で使用されます。format\$1id と branch\$1qualifier は postgres では使用されません。`global_transaction_id`は、タプル(`format_id`、`global_transaction_id`、`branch_qualifier`)を返す postgres がサポートする任意の文字列識別子とすることができます。

`tpc_begin(xid)`  
フォーマット ID、グローバルトランザクション ID、ブランチクオリファイアで構成されるトランザクション ID `xid`で、TPC トランザクションを開始します。

`tpc_prepare`  
.tpc\$1begin で開始されたトランザクションの最初のフェーズを実行します。

`tpc_commit([xid])`  
引数なしで呼び出された場合、.tpc\$1commit は、以前に.tpc\$1prepare () で準備された TPC トランザクションをコミットします。

`tpc_rollback([xid])`  
引数なしで呼び出されると、.tpc\$1rollback は TPC トランザクションをロールバックします。

`tpc_recover`  
.tpc\$1commit (xid) または.tpc\$1rollback (xid) での使用に適した保留中のトランザクション ID のリストを返します。

## カーソル
<a name="python-api-cursor"></a>

カーソル API オペレーションの説明は次のとおりです。

`__init__(connection[, paramstyle])`  
生のカーソルオブジェクトを初期化します。

`insert_data_bulk(filename, table_name, parameter_indices, column_names, delimiter, batch_size)`  
一括 INSERT ステートメントを実行します。

`execute(operation[, args, stream, …])`  
データベースオペレーションを実行します。

`executemany(operation, param_sets)`  
データベースオペレーションを準備し、指定されたすべてのパラメータシーケンスまたはマッピングに対して実行します。

`fetchone`  
クエリの結果セットの次の行を取得します。

`fetchmany([num])`  
クエリ結果の次の行のセットを取得します。

`fetchall`  
クエリ結果の残りのすべての行を取得します。

`close`  
今すぐカーソルを閉じます。

`__iter__`  
カーソルオブジェクトを反復処理して、クエリから行を取得できます。

`fetch_dataframe([num])`  
最後のクエリ結果のデータフレームを返します。

`write_dataframe(df, table)`  
同じ構造データフレームを Amazon Redshift データベースに書き込みます。

`fetch_numpy_array([num])`  
最後のクエリ結果の NumPy 配列を返します。

`get_catalogs`  
Amazon Redshift は、1 つの接続で複数のカタログをサポートしていません。Amazon Redshift は現在のカタログのみを返します。

`get_tables([catalog, schema_pattern, …])`  
システム内でユーザー定義された固有のパブリックテーブルを返します。

`get_columns([catalog, schema_pattern, …])`  
Amazon Redshift データベース内の特定のテーブルのすべての列のリストを返します。

## AdfsCredentials プロバイダープラグイン
<a name="python-adfs-credentials-plugin"></a>

Amazon Redshift Python コネクタの AdfsCredentials プロバイダープラグイン API オペレーションの構文を次に示します。

```
redshift_connector.plugin.AdfsCredentialsProvider()
```

## AzureCredentials プロバイダープラグイン
<a name="python-azure-credentials-plugin"></a>

Amazon Redshift Python コネクタの AzureCredentials プロバイダープラグイン API オペレーションの構文を次に示します。

```
redshift_connector.plugin.AzureCredentialsProvider()
```

## ブラウザ AzureCredentials プロバイダープラグイン
<a name="python-browser-azure-credentials-plugin"></a>

Amazon Redshift Python コネクタのBrowserAzureCredentials プロバイダープラグイン API オペレーションの構文を以下に示します。

```
redshift_connector.plugin.BrowserAzureCredentialsProvider()
```

## BrowserSamlCredentials プロバイダープラグイン
<a name="python-browser-saml-credentials-plugin"></a>

Amazon Redshift Python コネクタの BrowserSamlCredentials プロバイダープラグイン API オペレーションの構文は以下のとおりです。

```
redshift_connector.plugin.BrowserSamlCredentialsProvider()
```

## Oktacredentials プロバイダープラグイン
<a name="python-okta-credentials-plugin"></a>

Amazon Redshift Python コネクタの OktaCredentials プロバイダープラグイン API オペレーションの構文を次に示します。

```
redshift_connector.plugin.OktaCredentialsProvider()
```

## PingCredentials プロバイダープラグイン
<a name="python-ping-credentials-plugin"></a>

Amazon Redshift Python コネクタの PingCredentials プロバイダー プラグイン API オペレーションの構文を次に示します。

```
redshift_connector.plugin.PingCredentialsProvider()
```

## SamlCredentials プロバイダープラグイン
<a name="python-saml-credentials-plugin"></a>

Amazon Redshift Python コネクタの SamlCredentials プロバイダープラグイン API オペレーションの構文を次に示します。

```
redshift_connector.plugin.SamlCredentialsProvider()
```