

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

# データベースのクエリ
<a name="query-databases"></a>

Amazon Redshift クラスターによってホストされているデータベースをクエリする方法は 2 つあります。
+ クラスターに接続し、クエリエディタで AWS マネジメントコンソール に対してクエリを実行します。

  Amazon Redshift コンソールでクエリエディタを使用する場合、SQL クライアントアプリケーションをダウンロードしてセットアップする必要はありません。
+ SQL Workbench/J などの SQL クライアントツールを介してクラスターに接続します。

  Amazon Redshift は、Java Database Connectivity (JDBC) および Open Database Connectivity (ODBC) を介して接続する SQL クライアントツールをサポートします。Amazon Redshift は SQL クライアントツールまたはライブラリを提供もインストールもしないため、それらを使用してクラスター内のデータを操作するには、クライアントコンピュータまたは Amazon EC2 インスタンスにインストールする必要があります。JDBC または ODBC ドライバーをサポートするほとんどの SQL クライアントツールを使用できます。

**注記**  
 ストアドプロシージャを記述する場合は、機密の値を保護するためのベストプラクティスに従うことをお勧めします。  
 ストアドプロシージャロジックに機密情報をハードコーディングしないでください。例えば、ストアドプロシージャの本文の CREATE USER ステートメントにユーザーパスワードを割り当てないでください。ハードコードした値は、カタログテーブルにスキーマメタデータとして記録される可能性があるため、セキュリティ上のリスクが生じます。代わりに、パスワードなどの機密の値は、パラメータを使用して引数として、ストアドプロシージャに渡します。  
ストアドプロシージャの詳細については、「[CREATE PROCEDURE](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_PROCEDURE.html)」と「[Amazon Redshift のストアドプロシージャの作成](https://docs.aws.amazon.com/redshift/latest/dg/stored-procedure-overview.html)」を参照してください。カタログテーブルの詳細については、「[システムカタログテーブル](https://docs.aws.amazon.com/redshift/latest/dg/c_intro_catalog_views.html)」を参照してください。

# Amazon Redshift に接続する
<a name="cluster-syntax"></a>

次の構文を使用してデータベースに接続できます。

```
cluster-name.account-number.aws-region.redshift.amazonaws.com/database-name
```

構文要素は次のように定義します。
+  `cluster-name` 

   クラスターの名前。
+  `account-number` 

   特定の AWS リージョンで AWS アカウント番号に関連付けられている一意の識別子。特定の AWS リージョンで特定のアカウントによって作成したすべてのクラスターは同じ `account-number` を持ちます。
+  `aws-region` 

   クラスターがある AWS リージョンのコード。
+  `database-name` 

   データベースの名前。

例えば、次の接続文字列は、us-east-1 AWS リージョン における `my-cluster` クラスター内の `my-db` データベースを指定します。

```
my-cluster.123456789012.us-east-1.redshift.amazonaws.com/my-db
```

# クエリエディタ v2 を使用してデータベースのクエリを実行する
<a name="query-editor-v2"></a>

クエリエディタ v2 は、Amazon Redshift データウェアハウスでクエリを作成および実行するために使用する、独立したウェブベースの SQL クライアントアプリケーションです。クエリエディタ v2 は、主にクエリの編集と実行、結果の視覚化、チームとの作業の共有に使用されます。クエリエディタ v2 を使用すると、データベース、スキーマ、テーブル、およびユーザー定義関数 (UDF) を作成できます。ツリービューパネルでは、各データベースのスキーマが表示されます。スキーマごとに、テーブル、ビュー、UDF、および保存する手順が表示されます。クエリエディタ v2 は、以前のクエリエディタに変わるエディタです。

**注記**  
クエリエディタ v2 は、商用の AWS リージョン で使用できます。クエリエディタ v2 が利用できる AWS リージョン の一覧については、*Amazon Web Services 全般のリファレンス*の「[Redshift クエリエディタ v2](https://docs.aws.amazon.com/general/latest/gr/redshift-service.html)」に記載されているエンドポイントを参照してください。

クエリエディタ v2 のデモについては、次の動画をご覧ください。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/IwZNIroJUnc/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/IwZNIroJUnc)


[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/4EIV4XTE9iI/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/4EIV4XTE9iI)


[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/7y-f1wlyVhI/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/7y-f1wlyVhI)


クエリエディタ v2 には、SQL 文を管理および実行するための豊富な機能セットがあります。次のセクションのトピックでは、これらの多くの機能について説明します。クエリエディタ v2 を使い慣れて、その機能を理解してください。

# AWS アカウントの設定
<a name="query-editor-v2-getting-started"></a>

この一連のタスクを実行して、クエリエディタ v2 を設定して Amazon Redshift データベースをクエリできます。適切なアクセス許可があれば、現在の AWS リージョンにある AWS アカウントが所有する Amazon Redshift クラスターまたはワークグループのデータにアクセスできます。

管理者が AWS アカウントのために最初にクエリエディタ v2 を設定するときは、クエリエディタ v2 のリソースを暗号化するために使用する AWS KMS key を選択します。デフォルトでは、AWS 所有キーは、リソースを暗号化するために使用されます。または、管理者はカスタマーマネージドキーを使用することもできます。その場合は、設定ページでキーの Amazon リソースネーム (ARN) を選択します。

アカウントの設定後、AWS KMS 暗号化の設定は変更できません。クエリエディタ v2 での顧客管理キーの作成と使用の詳細については、[クエリエディタ V2 で使用する AWS KMS 顧客管理キーの作成](#query-editor-v2-kms-key)を参照してください。管理者は、ファイルからのデータのロードなど、一部の機能に使用する S3 バケットとパスをオプションで選択することもできます。詳細については、「[ローカルファイル設定とワークフローからのデータのロード](query-editor-v2-loading-data-local.md)」を参照してください。

Amazon Redshift クエリエディタ v2 は、認証、暗号化、分離、コンプライアンスをサポートし、保管中のデータと転送中のデータを安全に保ちます。データセキュリティとクエリエディタ v2 の詳細については、以下を参照してください。
+ [保管中の暗号化](security-server-side-encryption.md)
+ [転送中の暗号化](security-encryption-in-transit.md)
+ [Amazon Redshift での設定と脆弱性の分析](security-vulnerability-analysis-and-management.md)

AWS CloudTrail は、AWS アカウント により、またはそのアカウントに代わって行われた API コールや関連イベントを取得し、指定した Amazon S3 バケットにログファイルを配信します。AWS を呼び出したユーザーとアカウント、呼び出し元のソース IP アドレス、および呼び出しの発生日時を特定できます。AWS CloudTrail におけるクエリエディタ v2 の動作の詳細については、「[CloudTrail によるログ記録](logging-with-cloudtrail.md)」を参照してください。CloudTrail の詳細については、「[AWS CloudTrail ユーザーガイド](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)」を参照してください。

クエリエディタ v2 には、リソースの一部に対して調整可能なクォータがあります。詳細については、「[Amazon Redshift オブジェクトのクォータ](amazon-redshift-limits.md#amazon-redshift-limits-quota)」を参照してください。

## クエリエディタ v2 で作成されたリソース
<a name="query-editor-v2-resources"></a>

クエリエディタ v2 では、保存されたクエリやグラフなどのリソースを作成できます。クエリエディタ v2 のすべてのリソースは、IAM ロールまたはユーザーに関連付けられています。IAM ロールにポリシーをアタッチし、そのロールをユーザーに割り当てることをお勧めします。

クエリエディタ v2 では、保存されたクエリとグラフのタグを追加および削除できます。これらのタグは、カスタム IAM ポリシーを設定するときや、リソースを検索するときに使用できます。AWS Resource Groups タグエディタを使用してタグを管理することもできます。

IAM ロールと IAM ポリシーを設定することで、AWS リージョンの同じ AWS アカウントで他とクエリを共有できます。

## クエリエディタ V2 で使用する AWS KMS 顧客管理キーの作成
<a name="query-editor-v2-kms-key"></a>

**対称暗号化顧客管理キーを作成するには**

クエリエディタ v2 リソースを暗号化する対称暗号化顧客管理キーを作成するには、AWS KMS コンソールまたは AWS KMS API オペレーションを使用します。キーの作成方法については *AWS Key Management Service デベロッパーガイド*の「[対称暗号化 AWS KMS キーの作成](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)」を参照してください。

**キーポリシー**

キーポリシーは、カスタマーマネージドキーへのアクセスを制御します。すべてのカスタマーマネージドキーには、キーポリシーが 1 つだけ必要です。このポリシーには、そのキーを使用できるユーザーとその使用方法を決定するステートメントが含まれています。顧客管理キーを作成するときに、キーポリシーを指定できます。詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[AWS KMS キーへのアクセス管理](https://docs.aws.amazon.com/kms/latest/developerguide/control-access-overview.html#managing-access)」を参照してください。

Amazon Redshift クエリエディタ v2 で顧客管理キーを使用するには、キーポリシーで次の API オペレーションが許可されている必要があります。
+ `kms:GenerateDataKey` – データを暗号化するために、一意の対称データキーを生成します。
+ `kms:Decrypt` – カスタマー管理のキーで暗号化されたデータを復号化します。
+ `kms:DescribeKey` — お客様が管理するキーの詳細を提供し、サービスがキーを検証できるようにします。

以下は、AWS アカウント `111122223333` のサンプル AWS KMS ポリシーです。最初のセクションでは、`kms:ViaService` がキーの使用をクエリエディタ v2 サービス (ポリシーでは `sqlworkbench.region.amazonaws.com` と呼びます) に制限しています。AWS アカウント がキーを使用するには `111122223333`である必要があります。2 番目のセクションでは、ルートユーザーとキー管理者の AWS アカウント `111122223333` がキーにアクセスできます。

 AWS アカウントを作成すると、すべての AWS のサービスとリソースに対する完全なアクセス権を持つ AWS アカウント *ルートユーザー*と呼ばれる 1 つのサインイン ID を使用して開始します。日常的なタスクには、ルートユーザーを使用しないことを強くお勧めします。ルートユーザー認証情報を必要とするタスクについては、「*IAM ユーザーガイド*」の「[ルートユーザー認証情報が必要なタスク](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "key-consolepolicy",
    "Statement": [
        {
            "Sid": "Allow access to principals authorized to use Amazon Redshift Query Editor V2",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt",
                "kms:DescribeKey"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "sqlworkbench.us-east-1.amazonaws.com",
                    "kms:CallerAccount": "111122223333"
                }
            }
        },
        {
            "Sid": "Allow access for key administrators",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "kms:*"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key_ID"
        }
    ]
}
```

------

次のリソースは、AWS KMS キーについての詳細を説明しています。
+ AWS KMS ポリシーの詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[ポリシーでのアクセス許可の指定](https://docs.aws.amazon.com/kms/latest/developerguide/control-access-overview.html#overview-policy-elements)」を参照してください。
+ トラブルシューティング AWS KMS ポリシーの情報については、「*AWS Key Management Service デベロッパーガイド*」の「[キーアクセスのトラブルシューティング](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html#example-no-iam)」を参照してください。
+ キーの詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[AWS KMS キー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)」を参照してください。

## クエリエディタ v2 へのアクセス
<a name="query-editor-v2-configure"></a>

クエリエディタ v2 にアクセスするには、アクセス許可が必要です。管理者は、次のいずれかの AWS マネージドポリシーをロールにアタッチして、アクセス許可を付与できます (IAM ロールにポリシーをアタッチし、そのロールをユーザーに割り当てることをお勧めします)。これらの AWS 管理ポリシーは、リソースのタグ付けでクエリを共有する方法を制御するさまざまなオプションを使用して記述されます。IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を使用して IAM ポリシーをアタッチできます。
+ **AmazonRedshiftQueryEditorV2FullAccess** – アカウントの Amazon Redshift クエリエディタ v2 オペレーションとリソースへの完全なアクセス権を付与します。このポリシーは、その他の必要なサービスへのアクセス権限も付与します。
+ **AmazonRedshiftQueryEditorV2NoSharing** — リソースを共有せずに Amazon Redshift クエリエディタ v2 を操作する権限を付与します。このポリシーは、その他の必要なサービスへのアクセス権限も付与します。
+ **AmazonRedshiftQueryEditorV2ReadSharing** — リソース共有を限定して Amazon Redshift クエリエディタ v2 を操作する権限を付与します。付与されたプリンシパルは、チームと共有されているリソースの読み取りはできますが、更新はできません。このポリシーは、その他の必要なサービスへのアクセス権限も付与します。
+ **AmazonRedshiftQueryEditorV2ReadWriteSharing** — リソースを共有して Amazon Redshift クエリエディタ v2 を操作する権限を付与します。付与されたプリンシパルは、そのチームと共有されているリソースを読み取り、更新することができます。このポリシーは、その他の必要なサービスへのアクセス権限も付与します。

また、提供された管理ポリシーで許可もしくは拒否されたアクセス権限に基づいて、独自のポリシーを作成することもできます。IAM コンソールのポリシーエディタを使用して独自のポリシーを作成する場合は、ビジュアルエディタでポリシーを作成する対象のサービスとして、**[SQL Workbench]** を選択します。クエリエディタ v2 では、ビジュアルエディタ および IAM Policy Simulator の中で、サービス名として AWS SQL Workbench を使用します。

プリンシパル (IAM ロールを割り当てたユーザー) が Amazon Redshift クラスターに接続するには、クエリエディタ v2 マネージドポリシーのいずれかでアクセス許可が必要です。またこのクラスターへは `redshift:GetClusterCredentialsWithIAM` または `redshift:GetClusterCredentials` アクセス許可も必要です。このアクセス許可を取得するには、管理者アクセス許可を持つユーザーが、一時的な認証情報を使用してクラスターへの接続に使用する IAM ロールにポリシーをアタッチできます。特定のクラスターにポリシーのスコープを設定することも、より一般的なポリシーを設定することもできます。一時的な認証情報を使用するアクセス許可の詳細については、「[GetClusterCredentialsWithIAM または GetClusterCredentials を呼び出す権限を持つ IAM ロールまたはユーザーの作成](generating-iam-credentials-steps.md#generating-iam-credentials-role-permissions)」を参照してください。

プリンシパル (通常は IAM ロールを割り当てたユーザー) が、アカウント内の他のユーザーに対して **[アカウント設定]** ページで**結果セットをエクスポート**することを許可するには、`sqlworkbench:UpdateAccountExportSettings` アクセス許可をロールにアタッチする必要があります。このアクセス許可は、`AmazonRedshiftQueryEditorV2FullAccess`AWS 管理ポリシーにあります。

クエリエディタ v2 に新機能が追加されると、AWS 管理ポリシーも必要に応じて更新されます。提供されたマネージドポリシーで許可および拒否された権限をベースにして独自のポリシーを作成する場合は、マネージドポリシーの変更に対応した最新のポリシーを編集してください。Amazon Redshift の管理ポリシーの詳細については、「[Amazon Redshift の AWS 管理ポリシー](redshift-iam-access-control-identity-based.md#redshift-policy-resources.managed-policies)」を参照してください。

アクセス権限を付与するにはユーザー、グループ、またはロールにアクセス許可を追加します。
+ AWS IAM アイデンティティセンター のユーザーとグループ:

  アクセス許可セットを作成します。「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[アクセス許可セットを作成する](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)」の手順に従ってください。
+ IAM 内で、ID プロバイダーによって管理されているユーザー:

  ID フェデレーションのロールを作成します。詳細については *IAM ユーザーガイド* の [サードパーティー ID プロバイダー (フェデレーション) 用のロールを作成する](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) を参照してください。
+ IAM ユーザー:
  + ユーザーが担当できるロールを作成します。手順については *IAM ユーザーガイド* の [IAM ユーザーのロールの作成](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) を参照してください。
  + (お奨めできない方法) ポリシーをユーザーに直接アタッチするか、ユーザーをユーザーグループに追加します。*IAM ユーザーガイド* の [ユーザー (コンソール) へのアクセス許可の追加](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) の指示に従います。

**注記**  
AWS IAM アイデンティティセンター 管理者がアカウント全体にわたり特定のアクセス許可セットのアクセス許可セットの関連付けをすべて削除すると、削除されたアクセス許可セットに元々関連付けられていたクエリエディタのリソースにアクセスできなくなります。後で同じアクセス許可を再作成すると、新しい内部識別子が作成されます。内部識別子が変更されたため、ユーザーが以前所有していたクエリエディタのリソースにはアクセスできません。管理者がアクセス許可セットを削除する前に、そのアクセス許可セットのユーザーは、ノートブックやクエリなどのクエリエディタのリソースをバックアップとしてエクスポートしておくことをお勧めします。

## クエリエディタ v2 からクラスターまたはワークグループに接続するためのプリンシパルタグの設定
<a name="query-editor-v2-principal-tags-iam"></a>

フェデレーションユーザーオプションを使用してクラスターまたはワークグループに接続するには、プリンシパルタグを使って IAM ロールまたはユーザーを設定します。または、`RedshiftDbUser`および (オプション) `RedshiftDbGroups` で、ID プロバイダー (IdP) によって渡されるようにセットアップします。IAM を使用したタグの管理の詳細については、「*IAM ユーザーガイド*」の「[AWS Security Token Service でのセッションタグの受け渡し](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html)」を参照してください。AWS Identity and Access Management を使用してアクセスをセットアップするために、管理者は IAM コンソールを使用してタグを追加できます ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))。

**IAM ロールにプリンシパルタグを追加するには**

1. AWS マネジメントコンソール にサインインして、IAM コンソール [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) を開きます。

1. ナビゲーションペインで **[ロール]** を選択します。

1. フェデレーションユーザーを使用して、クエリエディタ v2 へのアクセスが必要なロールを選択します。

1. **[タグ]** タブを選択します。

1. [**タグの管理**] をクリックします。

1. **[タグを追加]** を選択して、`RedshiftDbUser` を **[キー]** に入力し、フェデレーションユーザー名を **[値]** に入力します。

1. オプションで、**[タグの追加]** を選択して、`RedshiftDbGroups` を **[キー]** に入力し、ユーザーに関連付けるグループ名を **[値]** に入力します。

1. **[変更を保存]** を選択して、選択した IAM ロールに関連付けられているタグのリストを表示します。変更が反映されるまで、数秒かかる場合があります。

1. フェデレーションユーザーを使用するには、変更が反映された後、クエリエディタ v2 のページを更新します。

**プリンシパルタグを渡すように ID プロバイダー (IdP) をセットアップする**  
ID プロバイダー (IdP) を使用してタグを設定する手順は、IdP によって異なります。ユーザーおよびグループ情報を SAML 属性に渡す手順については、IdP のドキュメントを参照してください。正しく設定すると、AWS Security Token Service によって使用され、`RedshiftDbUser` および `RedshiftDbGroups` のプリンシパルタグに表示される SAML レスポンスに次の属性が表示されます。

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:RedshiftDbUser">
    <AttributeValue>db-user-name</AttributeValue>
</Attribute>
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:RedshiftDbGroups">
    <AttributeValue>db-groups</AttributeValue>
</Attribute>
```

 オプションの *db\$1groups* は、`group1:group2:group3`のようにコロンで区切る必要があります。

さらに、`TransitiveTagKeys`属性を使用して、ロールの連鎖中にタグを保持できます。

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys">
  <AttributeValue>RedshiftDbUser</AttributeValue>
  <AttributeValue>RedshiftDbGroups</AttributeValue>
</Attribute>
```

クエリエディタ v2 のセットアップの詳細については、「[クエリエディタv2 を使用するために必要なアクセス許可](redshift-iam-access-control-identity-based.md#redshift-policy-resources.required-permissions.query-editor-v2)」をご参照ください。

Active Directory フェデレーションサービス (AD FS) をセットアップする方法については、ブログ投稿「[ Federate access to Amazon Redshift query editor v2 with Active Directory Federation Services (AD FS)](https://aws.amazon.com/blogs//big-data/federate-access-to-amazon-redshift-query-editor-v2-with-active-directory-federation-services-ad-fs-part-3/)」(Active Directory フェデレーションサービス (AD FS) を使用して Amazon Redshift クエリエディタ v2 へのアクセスをフェデレーションする) を参照してください。

Okta をセットアップする方法については、ブログ投稿「[Federate single sign-on access to Amazon Redshift query editor v2 with Okta](https://aws.amazon.com/blogs//big-data/federate-single-sign-on-access-to-amazon-redshift-query-editor-v2-with-okta/)」(Okta を使用して Amazon Redshift クエリエディタ v2 へのシングルサインオンアクセスをフェデレーションする) を参照してください。

**注記**  
クエリエディタ v2 の**[フェデレーテッドユーザー]** 接続オプションを使用してクラスターまたはワークグループに接続すると、ID プロバイダー (IdP) は `RedshiftDbUser` と `RedshiftDbGroups` のカスタムプリンシパルタグを提供できます。現時点では、AWS IAM アイデンティティセンター はクエリエディタ v2 へのカスタムプリンシパルタグを直接渡すことはサポートしていません。

# クエリエディタ v2 を開く
<a name="query-editor-v2-open"></a>

Amazon Redshift では、Amazon Redshift コンソールのクエリエディタ v2 を使用して、データウェアハウスクラスターに対して SQL クエリを実行できます。クエリエディタ v2 は、アドホッククエリ、データ検索、データ分析タスクを実行するためのユーザーフレンドリーなインターフェイスを提供するウェブベースのツールです。以下のセクションでは、コンソールでクエリエディタ v2 を開き、クエリエディタの機能を効果的に活用するプロセスについて説明します。

**クエリエディタ v2 を開くには**

1. AWS マネジメントコンソール にサインインして、[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/) で Amazon Redshift コンソールを開きます。

1. ナビゲーターメニューで、**[エディタ]**、次に **[クエリエディタ V2]** を選択します。新しいブラウザでクエリエディタ v2 が開きます。

クエリエディタページには、次のようにビューを選択するナビゲータメニューがあります。

**エディタ![\[Horizontal lines representing redacted or censored text.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-align-left.png)**  
テーブルとして編成され、データベースに含まれるデータを管理およびクエリします。データベースには、保存されたデータを格納することも、Amazon S3 などの他の場所に格納されたデータへの参照を含めることもできます。クラスターまたはサーバーレスワークグループに含まれるデータベースに接続します。  
**[エディタ]** ビューで操作する場合、次のコントロールがあります。  
+ **[Cluster]** (クラスター) または **[Workgroup]** (ワークグループ) フィールドには、現在接続されている名前が表示されます。**[Database]** (データベース) フィールドには、クラスターまたはワークグループ内のデータベースが表示されます。**[データベース]** ビューで実行するアクションは、デフォルトでは選択したデータベースに対して動作します。
+ クラスター、データベース、スキーマのツリービュー階層ビュー。スキーマでは、テーブル、ビュー、関数、および保存する手順を操作できます。ツリービューの各オブジェクトにはコンテキストメニューが用意されており、そのオブジェクトに関連するアクション (**[更新]** または **[ドロップ]**など) を実行できます。
+ ![\[The create icon used in the AWS Console.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-add.png) **[作成]** アクションを使用して、データベース、スキーマ、テーブル、および関数を作成します。
+ ![\[The upload icon used in the AWS Console.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-upload.png)**[データのロード]** アクションは、Amazon S3 またはローカルファイルからデータをデータベースにロードします。
+ ![\[The floppy disk icon used in the AWS Console.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-floppy-disk.png) **保存** アイコンをクリックすると、クエリを保存できます。
+ ![\[The shortcut icon used in the AWS Console.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-key-command.png) **ショートカット** アイコンをクリックすると、エディタのキーボードショートカットが表示されます。
+ ![\[The more actions icon used in the AWS Console.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-more.png) **詳細**アイコンをクリックすると、次のような追加のアクションが表示されます 。
  + **[チームと共有する]**: チームとクエリやノートブックを共有します。詳細については、「[チームとしての共同作業と共有](query-editor-v2-team.md)」を参照してください。
  + **[ショートカット]**: エディタのキーボードショートカットを表示します。
  + **[タブ履歴]**: エディタのタブのタブ履歴を表示します。
  + **[オートコンプリートを更新]**: SQL の作成時に表示する候補を更新します。
+ クエリを入力および実行できる ![\[The editor icon in the AWS Console where can enter and run queries.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/add-plus.png) **[Editor]** (エディタ) 領域。

  クエリを実行した後、**[結果]** タブが表示され、結果が表示されます。ここで **[チャート]** をオンにすると、結果を視覚化できます。また、結果を**[Export]** (エクスポート) できます。
+ セクションを追加して SQL を入力および実行するか、[Markdown] (マークダウン) を追加できる![\[The icon in the AWS Console where you can add sections to enter and run SQL or add Markdown.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/add-plus.png) **[Notebook]** (ノートブック) 領域。

  クエリを実行した後、**[結果]** タブが表示され、結果が表示されます。ここで結果を**[Export]** (エクスポート) できます。

**クエリ ![\[A folder icon used in the AWS Console used to query databases.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-folder-close.png)**  
クエリには、データベース内のデータを管理およびクエリする SQL コマンドが含まれています。クエリエディタ v2 を使用してサンプルデータをロードすると、サンプルクエリが作成され、保存されます。  
 保存したクエリを選択すると、コンテキスト (右クリック) メニューを使用してクエリを開き、名前を変更、削除することができます。**[クエリの詳細]** を選択すると、保存したクエリの **[クエリ ARN]** などの属性を表示できます。また、バージョン履歴を表示したり、クエリに添付されたタグを編集してチームと共有したりすることもできます。

**ノートブック ![\[A book icon used in the AWS Console used as SQL notebook.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-manual.png)**  
SQL ノートブックには、SQL セルと Markdown セルが含まれています。ノートブックを使用して、1 つのドキュメント内で複数の SQL コマンドを編成、注釈付け、共有できます。  
 保存したノートブックを選択すると、コンテキスト (右クリック) メニューを使用してノートブックを開き、名前を変更、複製、削除することができます。**[ノートブックの詳細]** を選択すると、保存したノートブックの **[ノートブック ARN]** などの属性を表示できます。また、バージョン履歴を表示、ノートブックに添付されたタグを編集、エクスポート、チームと共有することもできます。詳細については、「[Amazon Redshift のノートブックNotebooks](query-editor-v2-notebooks.md)」を参照してください。

**チャート ![\[Icon of a chart used in the AWS Console as visual representation of data.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-chart.png)**  
チャートは、データの視覚的な表示です。クエリエディタ v2 には、さまざまなタイプのチャートを作成して保存するためのツールが用意されています。  
 保存したチャートを選択すると、コンテキスト (右クリック) メニューを使用してチャートを開き、名前を変更、削除することができます。**[チャートの詳細]** を選択すると、保存したチャートの **[チャート ARN]** などの属性を表示できます。また、チャートに添付されたタグを編集してエクスポートすることもできます。詳細については、「[クエリ結果の視覚化](query-editor-v2-charts.md)」を参照してください。

**履歴 ![\[Icon of a clock used in the AWS Console for query history.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-clock.png)**  
クエリ履歴は、Amazon Redshift クエリエディタ v2 を使用して実行されたクエリの一覧です。これらのクエリは、個別のクエリまたは SQL ノートブックの一部として実行されます。詳細については、「[クエリとタブの履歴を表示する](query-editor-v2-history.md)」を参照してください。

**スケジュールされたクエリ ![\[Icon of a calendar used in the AWS Console for scheduled queries.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-calendar.png)**  
スケジュールされたクエリは、特定の時間に開始するように設定されたクエリです。

 すべてのクエリエディタ v2 ビューには次のアイコンがあります。
+ ![\[Icon of a quarter moon used in the AWS Console to switch between light and dark modes.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-moon.png) **[Visual mode]** (ビジュアルモード) アイコンをクリックすると、ライトモードとダークモードが切り替わります。
+ ![\[Icon of a gear used in the AWS Console to show settings.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-cog.png) **[Settings]** (設定) アイコンをクリックすると、さまざまな設定画面のメニューが表示されます。
  + ![\[Icon used in the AWS Console to show editor preferences.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-properties.png) **[Editor preferences]** (エディタの環境設定) アイコンをクリックすると、クエリエディタ v2 を使用するときに、設定を編集できます。ここで**ワークスペース設定を編集**して、フォントサイズ、タブサイズ、その他の表示設定を変更できます。**[オートコンプリート]** をオン(またはオフ) にして、SQL の入力時に候補を表示することもできます。
  + ![\[Icon used in the AWS Console to view connections used in the editor tab.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-connection.png) **[Connections]** (接続) アイコンをクリックすると、エディタタブで使用されている接続が表示されます。

    接続は、データベースからデータを取得するために使用されます。接続は、特定のデータベースに対して作成されます。分離された接続では、あるエディタタブで一時テーブルを作成するなど、データベースを変更する SQL コマンドの結果は、別のエディタタブに表示されません。クエリエディタ v2 でエディタタブを開くとき、デフォルトは分離された接続です。共有接続を作成するとき、つまり、**分離されたセッション**スイッチをオフにすると、同じデータベースへの他の共有接続の結果が相互に表示されます。ただし、データベースへの共有接続を使用するエディタタブは並列で実行されません。同じ接続を使用するクエリは、接続が使用可能になるまで待機する必要があります。あるデータベースへの接続は別のデータベースと共有できないため、SQL の結果は異なるデータベース接続では表示されません。

    アカウント内のユーザーがアクティブにできる接続の数は、クエリエディタ v2 管理者によって制御されます。
  + ![\[Icon used in the AWS Console used by administrators to change settings of user accounts.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-settings.png) **[Account settings]** (アカウント設定) アイコンは、アカウント内のすべてのユーザーの特定の設定を変更するために管理者が使用します。詳細については、「[アカウント設定](#query-editor-v2-settings)」を参照してください。

## クエリエディタ v2 を使用する際の考慮事項
<a name="query-editor-v2-considerations"></a>

クエリエディタ v2 を使用する場合は、次の点を考慮してください。
+ クエリの最大期間は 24 時間です。
+ クエリ結果の最大サイズは 100 MB です。呼び出しで返されるレスポンスデータが 100 MB を上回る場合は、最初の 100 MB が警告とともに返されます。
+ 最大 300,000 文字のクエリを実行できます。
+ 最大 30,000 文字のクエリを保存できます。
+ デフォルトでは、クエリエディタ v2 は、実行する各 SQL コマンドを自動コミットします。BEGIN ステートメントを指定すると、BEGIN-COMMIT ブロックまたは BEGIN-ROLLBACK ブロック内のステートメントは 1 つのトランザクションとして実行されます。トランザクションの詳細については、*Amazon Redshift データベースデベロッパーガイド*の「[BEGIN](https://docs.aws.amazon.com/redshift/latest/dg/r_BEGIN.html)」を参照してください。
+ SQL ステートメントの実行中にクエリエディタ v2 が表示する警告の最大数は `10` です。例えば、ストアドプロシージャを実行した場合、表示される RAISE ステートメントは 10 個までです。
+ クエリエディタ v2 は、カンマ (,) を含む IAM `RoleSessionName` をサポートしていません。次のようなエラーが表示されることがあります: エラーメッセージ: 「'AROA123456789EXAMPLE:mytext,yourtext'は TagValue の有効な値ではありません - 不正な文字が含まれています」 この問題は、カンマを含む IAM `RoleSessionName` を定義し、その IAM ロールでクエリエディタ v2 を使用したときに発生します。

  IAM `RoleSessionName` の詳細については、「IAM ユーザーガイド」の「[RoleSessionName SAML 属性](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_assertions.html#saml_role-session-attribute)」を参照してください。**

## アカウント設定
<a name="query-editor-v2-settings"></a>

適切な IAM 権限を持つユーザーは、同じ AWS アカウント の他のユーザーに対して**[Account settings]** (アカウント設定) を表示および変更できます。この管理者は以下を表示または設定できます。
+ アカウント内のユーザーあたりの最大同時データベース接続。これには**分離されたセッション**も含まれます。この値を変更すると、変更が反映されるまで 10 分かかることがあります。
+ アカウントのユーザーが SQL コマンドからファイルに結果セット全体をエクスポートできるようにします。
+ 関連する保存済みクエリを含むサンプルデータベースをロードして表示します。
+ アカウントユーザーがローカルファイルからデータをロードするために使用する Amazon S3 パスを指定します。
+ クエリエディタ v2 のリソースを暗号化するために使用される KMS キー ARN を表示します。

# Amazon Redshift データベースに接続する
<a name="query-editor-v2-connecting"></a>

データベースに接続するには、ツリービューパネルでクラスターまたはワークグループ名を選択します。プロンプトが表示されたら、接続パラメータを入力します。

クラスターまたはワークグループとそのデータベースに接続するときは、通常 **[Database]** (データベース) 名を指定します。また、次の認証方法のいずれかに必要なパラメータも指定します。

**IAM アイデンティティセンター**  
この方法では、ID プロバイダー (IdP) からのシングルサインオン認証情報を使用して Amazon Redshift データウェアハウスに接続します。Amazon Redshift コンソールの IAM アイデンティティセンターで、クラスターまたはワークグループが有効になっている必要があります。IAM アイデンティティセンターへの接続の設定については、「[Redshift を AWS IAM アイデンティティセンターに接続してシングルサインオンエクスペリエンスを提供する](redshift-iam-access-control-idp-connect.md)」を参照してください。

**フェデレーティッドユーザー**  
この方法では、IAM ロールまたはユーザーのプリンシパルタグで接続の詳細を指定する必要があります。これらのタグは、AWS Identity and Access Managementまたは ID プロバイダー (IdP) で設定します。クエリエディタ v2 では、次のタグを使用します。  
+ `RedshiftDbUser` — このタグは、クエリエディタ v2 で使用されるデータベースユーザーを定義します。このタグは必須です。
+ `RedshiftDbGroups` — このタグは、クエリエディタ v2 に接続する場合に結合されるデータベースグループを定義します。このタグはオプションであり、その値は `group1:group2:group3` のようにコロンで区切る必要があります。空の値は無視されます。つまり、`group1::::group2`は `group1:group2` と解釈されます。
これらのタグは、クラスターの認証情報を取得するために `redshift:GetClusterCredentials` API に転送されます。詳細については、「[クエリエディタ v2 からクラスターまたはワークグループに接続するためのプリンシパルタグの設定](query-editor-v2-getting-started.md#query-editor-v2-principal-tags-iam)」を参照してください。

**データベースのユーザー名を使用する一時的な認証情報**  
このオプションは、クラスターに接続している場合のみ使用できます。この方法では、クエリエディタ v2 によって、データベースの**ユーザー名**が提供されます。クエリエディタ v2 が、このデータベースユーザー名でデータベースに接続するための一時パスワードを生成します。この方法を使用して接続するユーザーには、`redshift:GetClusterCredentials` への IAM アクセス許可を付与する必要があります。ユーザーがこの方法を使用できないようにするには、IAM ユーザーまたはロールを変更して、このアクセス許可を拒否します。

**IAM ID を使用した一時的な認証情報**  
このオプションは、クラスターに接続している場合のみ使用できます。この方法では、クエリエディタ v2 は、ユーザー名を IAM アイデンティティにマップして、IAM アイデンティティとしてデータベースに接続するための一時パスワードを生成します。この方法を使用して接続するユーザーには、`redshift:GetClusterCredentialsWithIAM` への IAM アクセス許可を付与する必要があります。ユーザーがこの方法を使用できないようにするには、IAM ユーザーまたはロールを変更して、このアクセス許可を拒否します。

**データベースユーザー名とパスワード**  
この方法では、接続先のデータベースの**ユーザー名**と**パスワード**も指定します。クエリエディタ v2 は、ユーザーに代わり、AWS Secrets Managerに保存するシークレットを作成します。このシークレットには、データベースに接続するための認証情報が含まれます。

**AWS Secrets Manager**  
 この方法では、データベース名の代わりに、データベースとサインイン認証情報を含むシークレットマネージャーに保存されている**シークレット**を指定します。シークレットの作成方法の詳細については、「[データベース接続認証情報のシークレットの作成](redshift-secrets-manager-integration-create.md)」を参照してください。

クエリエディタ v2 でクラスターまたはワークグループを選択すると、コンテキストに応じて、コンテキスト (右クリック) メニューを使用して接続を作成、編集、削除できます。**[接続の詳細]** を選択すると、接続の **[接続 ARN]** などの属性を表示できます。接続に添付されたタグを編集することもできます。

# Amazon Redshift データベースの閲覧
<a name="query-editor-v2-object-browse"></a>

データベース内では、ツリービューパネルでスキーマ、テーブル、ビュー、関数、および保存する手順を管理できます。ビュー内の各オブジェクトには、コンテキスト メニュー (右クリック) でアクションが関連付けられます。

階層ツリービューパネルには、データベースオブジェクトが表示されます。ツリービューパネルを更新して、ツリービューが最後に表示された後で作成された可能性があるデータベースオブジェクトを表示するには、![\[Circular arrow icon representing a refresh or reload action.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-refresh.png) アイコンを選択します。オブジェクトを右クリックしてコンテキストメニューを開き、実行できるアクションを確認します。

![\[Tree-view icons\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/sqlworkbench-tree-view.png)

テーブルを選択すると、次の操作を実行できます。
+ テーブル内のすべての列をクエリする SELECT ステートメントを使用してエディタでクエリを開始するには、**[テーブルを選択]** を使用します。
+ 属性またはテーブルを表示するには、**[Show table definition]** (テーブル定義を表示) を使用します。これを使用して、列名、列型、エンコーディング、分散キー、ソートキー、および列に Null 値を含めることができるかどうかを表示します。テーブル属性の詳細については、「*Amazon Redshift データベースデベロッパーガイド*」の「[CREATE TABLE](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_NEW.html)」を参照してください。
+ テーブルを削除するには、**[削除]** を使用します。テーブルからすべての行を削除するには **[Truncate table]** (テーブルの切り捨て) 、データベースからテーブルを削除するには **[テーブルの削除]** を使用します。詳細については、「*Amazon Redshift データベースデベロッパーガイド*」の「[TRUNCATE](https://docs.aws.amazon.com/redshift/latest/dg/r_TRUNCATE.html)[DROP TABLE](https://docs.aws.amazon.com/redshift/latest/dg/r_DROP_TABLE.html)」を参照してください。

[スキーマ] を選択し、スキーマを **[更新]** または **[削除]** します。

**[ビュー定義を表示]** または **[ドロップ ビュー]** のビューを選択します。

関数を選択し、**[Show function definition**] (関数定義を表示) または **[Drop function]** (関数を削除) します。

保存する手順を選択して **[Show procedure definition]** (手順定義を表示) または **[Drop procedure]** (手順を削除) します。

# データベースオブジェクトの作成
<a name="query-editor-v2-object-create"></a>

データベース、スキーマ、テーブル、およびユーザー定義関数 (UDF) など、データベースオブジェクトを作成できます。データベースオブジェクトを作成するには、クラスターまたはワークグループとデータベースに接続している必要があります。

## データベースの作成
<a name="query-editor-v2-object-create-database"></a>

クエリエディタ v2 を使用して、クラスターまたはワークグループにデータベースを作成できます。

**データベースを作成する**

この他のコマンドオプションについては、「*Amazon Redshift データベースデベロッパーガイド*」の「[CREATE DATABASE](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_DATABASE.html)」を参照してください。

1. ![\[Plus sign icon inside a circle, indicating an add or create action.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-add.png)**[作成]** を選択し、次に **[データベース]** を選択します。

1. **[データベース名]** を入力します。

1. (任意) **[ユーザーとグループ]** を選択し、**[データベースユーザー]** を選択します。

1. (オプション) データベースはデータ共有または AWS Glue Data Catalog から作成できます。AWS Glue の詳細については、*AWS Glue デベロッパーガイド* の「[What is AWS Glue?](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)」を参照してください。
   + (オプション) **[データ共有を使用して作成する]** を選択し、**[データ共有の選択]** を選択します。このリストには、現在のクラスターまたはワークグループでコンシューマーデータ共有の作成に使用できるプロデューサーデータ共有が含まれています。
   + (オプション) **[AWS Glue Data Catalogを使用して作成する]** を選択し、**[AWS Glue データベースを選択]** を選択します。**[データカタログスキーマ]** に、データを参照するときにスキーマで使用する名前を 3 つの部分からなる表記 (database.schema.table) で入力します。

1. **[データベースの作成]** を選択します。

   ツリービューパネルに新しいデータベースが表示されます。

   データ共有から作成したデータベースをクエリするオプションのステップを選択する場合は、クラスターまたはワークグループ内の Amazon Redshift データベース (例えば、デフォルトデータベース `dev`) に接続し、**[データ共有を使用して作成する]** の選択時に作成したデータベース名を参照する 3 つの部分からなる表記 (database.schema.table) を使用します。データ共有データベースは、クエリエディタ v2 のエディタタブに表示されますが、直接接続には使用できません。

   AWS Glue Data Catalog から作成したデータベースをクエリするオプションのステップを選択する場合は、クラスターまたはワークグループ内の Amazon Redshift データベース (例えば、デフォルトデータベース `dev`) に接続し、**[AWS Glue Data Catalog を使用して作成する]** の選択時に作成したデータベース名、**[データカタログスキーマ]** で名前を付けたスキーマ、および AWS Glue Data Catalog のテーブルを参照する 3 つの部分からなる表記 (database.schema.table) を使用します。次のような表記になります。

   ```
   SELECT * FROM glue-database.glue-schema.glue-table
   ```
**注記**  
接続方法として **[IAM ID を使用した一時的な認証情報]** を使用してデフォルトのデータベースに接続していること、および AWS Glue データベースの使用権限が IAM 認証情報に付与されていることを確認します。  

   ```
   GRANT USAGE ON DATABASE glue-database to "IAM:MyIAMUser"
   ```

   AWS Glue データベースは、クエリエディタ v2 のエディタタブに表示されますが、直接接続には使用できません。

   AWS Glue Data Catalog にクエリを実行する方法の詳細については、「Amazon Redshift データベース開発者ガイド」の「[コンシューマーとして Lake Formation 管理のデータ共有を使用する](https://docs.aws.amazon.com/redshift/latest/dg/lake-formation-getting-started-consumer.html)」と「[プロデューサーとして Lake Formation 管理のデータ共有を使用する](https://docs.aws.amazon.com/redshift/latest/dg/lake-formation-getting-started-producer.html)」を参照してください。**。

**データ共有コンシューマーとしてデータベースを作成する例**

次の例は、クエリエディタ v2 を使用してデータ共有からデータベースを作成するために使用した特定のシナリオを示しています。このシナリオを通じて、使用環境でデータ共有からデータベースをどのようにして作成できるかを確認してください。このシナリオでは、`cluster-base`(プロデューサークラスター) と `cluster-view` (コンシューマークラスター) の 2 つのクラスターを使用します。

1. Amazon Redshift コンソールを使用してクラスター `cluster-base` でテーブル `category2` のデータ共有を作成します。プロデューサーデータ共有の名前は `datashare_base` です。

   データ共有の作成の詳細については、「Amazon Redshift データベース開発者ガイド」の「[Amazon Redshift でのクラスター間のデータの共有](https://docs.aws.amazon.com/redshift/latest/dg/datashare-overview.html)」を参照してください。**

1. Amazon Redshift コンソールを使用して、クラスター `cluster-view` でテーブル `category2` のコンシューマーとしてデータ共有 `datashare_base` を受け入れます。

1. クエリエディタ v2 のツリービューパネルを開いて、次のような `cluster-base` の階層を表示します。
   + クラスター: `cluster-base`
     + データベース: `dev`
       + スキーマ：`public`
         + テーブル: `category2`

1. ![\[Plus sign icon inside a circle, indicating an add or create action.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-add.png)**[作成]** を選択し、次に **[データベース]** を選択します。

1. **[データベース名]** に「`see_datashare_base`」と入力します。

1. **[データ共有を使用して作成する]** を選択し、**[データ共有を選択]** を選択します。作成するデータベースのソースとして使用する `datashare_base` を選択します。

   クエリエディタ v2 のツリービューパネルに、次のように `cluster-view` の階層が表示されます。
   + クラスター: `cluster-view`
     + データベース: `see_datashare_base`
       + スキーマ：`public`
         + テーブル: `category2`

1. データをクエリするときは、クラスター `cluster-view` のデフォルトデータベース (通常は `dev` という名前) に接続しますが、SQL でデータ共有データベース `see_datashare_base` を参照します。
**注記**  
クエリエディタ v2 のエディタビューでは、選択したクラスターは `cluster-view` です。選択したデータベースは `dev` です。データベース `see_datashare_base` は表示されますが、直接接続には使用できません。`dev` データベースを選択し、実行した SQL で `see_datashare_base` を参照します。

   ```
   SELECT * FROM "see_datashare_base"."public"."category2";
   ```

   クエリは、クラスター `cluster_base` のデータ共有 `datashare_base` からデータを取得します。

**AWS Glue Data Catalog からデータベースを作成する例**

次の例は、クエリエディタ v2 を使用して AWS Glue Data Catalog からデータベースを作成するために使用した特定のシナリオを示しています。このシナリオを通じて、使用環境で AWS Glue Data Catalog からデータベースをどのようにして作成できるかを確認してください。このシナリオでは 1 つのクラスター `cluster-view` を使用して、作成したデータベースを格納します。

1. ![\[Plus sign icon inside a circle, indicating an add or create action.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-add.png)**[作成]** を選択し、次に **[データベース]** を選択します。

1. **[データベース名]** に「`data_catalog_database`」と入力します。

1. **[AWS Glue Data Catalogを使用して作成する]** を選択し、**[AWS Glue データベースを選択]** を選択します。作成するデータベースのソースとして使用する `glue_db` を選択します。

   **[データカタログスキーマ]** を選択し、3 つの部分からなる表記で使用するスキーマ名として「`myschema`」と入力します。

   クエリエディタ v2 のツリービューパネルに、次のように `cluster-view` の階層が表示されます。
   + クラスター: `cluster-view`
     + データベース: `data_catalog_database`
       + スキーマ：`myschema`
         + テーブ: `category3`

1. データをクエリするときは、クラスター `cluster-view` のデフォルトデータベース (通常は `dev` という名前) に接続しますが、SQL でデータベース `data_catalog_database` を参照します。
**注記**  
クエリエディタ v2 のエディタビューでは、選択したクラスターは `cluster-view` です。選択したデータベースは `dev` です。データベース `data_catalog_database` は表示されますが、直接接続には使用できません。`dev` データベースを選択し、実行した SQL で `data_catalog_database` を参照します。

   ```
   SELECT * FROM "data_catalog_database"."myschema"."category3";
   ```

   クエリは、AWS Glue Data Catalog でカタログ化されたデータを取得します。

## スキーマの作成
<a name="query-editor-v2-object-create-schema"></a>

クエリエディタ v2 を使用して、クラスターまたはワークグループにスキーマを作成できます。

**スキーマを作成するには**

スキーマについては、「*Amazon Redshift データベースデベロッパーガイド*」の「[スキーマ](https://docs.aws.amazon.com/redshift/latest/dg/r_Schemas_and_tables.html)」を参照してください。

1. ![\[Plus sign icon inside a circle, indicating an add or create action.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-add.png)**[作成]**を選択し、**[スキーマ]** を選択します。

1. **[スキーマ名]** を入力します。

1. **[Local]** (ローカル) または**[External]** (外部) を **[Schema type]** (スキーマタイプ) として選択します。

   ローカルスキーマの詳細については、*Amazon Redshift データベースデベロッパーガイド*の「[スキーマの作成](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_SCHEMA.html)」を参照してください。外部スキーマの詳細については、*Amazon Redshift データベースデベロッパーガイド*の「[外部スキーマの作成](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html)」を参照してください。

1. **[External]** (外部) を選択すると、外部スキーマの次の選択肢があります。
   + **Glue データカタログ** — AWS Glue 内のテーブルを参照する外部スキーマを Amazon Redshift に作成します。AWS Glue データベースを選択する以外に、クラスターに関連付けられた IAM ロールとデータカタログに関連付けられた IAM ロールを選択します。
   + **PostgreSQL** — Amazon Redshift で、Amazon RDS for PostgreSQL または Amazon Aurora PostgreSQL-Compatible Edition データベースを参照する外部スキーマを作成します。データベースの接続情報も提供します。フェデレーティッドクエリの詳細については、「**Amazon Redshift データベースデベロッパーガイド」の「[フェデレーテッドクエリを使用したデータのクエリ](https://docs.aws.amazon.com/redshift/latest/dg/federated-overview.html)」を参照してください。
   + **MySQL** — Amazon Redshift で、Amazon RDS for MySQL または Amazon Aurora MySQL-Compatible Edition データベースを参照する外部スキーマを作成します。データベースの接続情報も提供します。フェデレーティッドクエリの詳細については、「*Amazon Redshift データベースデベロッパーガイド*」の「[フェデレーテッドクエリを使用したデータのクエリ](https://docs.aws.amazon.com/redshift/latest/dg/federated-overview.html)」を参照してください。

1. **[スキーマの作成]** を選択します。

   ツリービューパネルに新しいスキーマが表示されます。

## テーブルの作成
<a name="query-editor-v2-object-create-table"></a>

クエリエディタ v2 を使用して、クラスターまたはワークグループにテーブルを作成できます。

**テーブルを作成するには**

テーブルの各列を指定または定義するカンマ区切り値 (CSV) ファイルに基づいてテーブルを作成できます。テーブルの詳細については、「*Amazon Redshift データベースデベロッパーガイド*」の「[テーブル設計](https://docs.aws.amazon.com/redshift/latest/dg/c_designing-tables-best-practices.html)」と「[CREATE TABLE](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_NEW.html)」を参照してください。

**[エディタでクエリを開く]** をクリックして [CREATE TABLE] のステートメントを表示して編集してから、クエリを実行してテーブルを作成します。

1. ![\[Plus sign icon inside a circle, indicating an add or create action.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-add.png)**[Create]** (作成)、**[Table]** (テーブル) の順に選択します。

1. スキーマを選択します。

1. テーブル名を入力します。

1. ![\[Plus sign icon representing an addition or new item action.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/add-plus.png) **[フィールドの追加]** を選択して列を追加します。

1. CSV ファイルをテーブル定義のテンプレートとして使用します。

   1. **[CSV からロードする]** を選択します。

   1. ファイルの場所をブラウズします。

      CSV ファイルを使用する場合は、ファイルの最初の行に列見出しが含まれていることを確認してください。

   1. ファイルを選択し、**[開く]** を選択します。列の名前とデータ型が意図したものであることを確認します。

1. 各列について、列を選択し、必要なオプションを選択します。
   + **[エンコード]** の値を選択します。
   + **[デフォルト値]** を選択します。
   + 列の値を増分させたい場合は、**[Automatically increment]** (自動増分) をオンにします。次に、**[Auto increment seed]** (自動増分シード) と **[Auto increment step]** (自動増分ステップ) の値を指定します。
   + 列が常に値を含む必要がある場合は、**[Not NULL]** をオンにします。
   + 列の **[サイズ]** 値を入力します。
   + 列をプライマリキーにしたい場合は、**[プライマリキー]** をオンにします。
   + 列を一意のキーにしたい場合は、**[Unique key]** (一意のキー) をオンにします。

1. (任意) **[テーブルの詳細]** を選択し、以下のいずれかのオプションを選択します。
   + 分散キーの列とスタイル。
   + ソートキー列とソートタイプ。
   + **[Backup]** (バックアップ) をオンにして、クラスタースナップショットにテーブルを含めます。
   + **[一時テーブル]** をオンにして、一時テーブルを作成します。

1. **[エディタでクエリを開く]** をクリックしてテーブルを定義するオプションの指定を続行するか **テーブルの作成** を選択してテーブルを作成します。

## 関数の作成
<a name="query-editor-v2-object-create-function"></a>

クエリエディタ v2 を使用して、クラスターまたはワークグループに関数を作成できます。

**関数を作成するには**

1. ![\[Plus sign icon inside a circle, indicating an add or create action.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-add.png)**[作成]** を選択し **[関数]** を選択します。

1. **[タイプ]** については **[SQL]** または **[Python]** を選択します。

1. **[スキーマ]** の値を選択します。

1. 関数の **[名前]** に値を入力します。

1. 関数の **[Volatility]** (ボラティリティ) に値を入力します。

1. 入力パラメータの順に、データ型別に **[パラメータ]** を選択します。

1. **[戻り値]** で、データ型を選択します。

1. 関数の **[SQL プログラム]** または **[Python プログラム]** コードを入力します。

1. **[作成]** を選択します。

ユーザー定義関数 (UDF) の詳細については、「*Amazon Redshift データベースデベロッパーガイド*」の「[ユーザー定義関数の作成](https://docs.aws.amazon.com/redshift/latest/dg/user-defined-functions.html)」を参照してください。

# クエリとタブの履歴を表示する
<a name="query-editor-v2-history"></a>

クエリ履歴は、クエリエディタ v2 で表示できます。クエリエディタ v2 を使用して実行したクエリのみがクエリ履歴に表示されます。**[Editor]** (エディタ) タブまたは **[Notebook]** (ノートブック) タブを使用して実行された両方のクエリが表示されます。表示されるリストを、`This week` のように月曜日から日曜日と 1 週間と定義するなど、期間でフィルタリングできます。クエリのリストは、フィルターに一致するクエリを一度に 25 行取得します。**[Load more]** (さらに読み込む) を選択すると、次のセットが表示されます。**[Actions]** (アクション) メニューからクエリを選択します。実行できるアクションは、選択したクエリが保存されているかどうかによって変わります。以下の操作を選択できます。
+ **[View query details]** (クエリの詳細を表示) — 実行済みクエリに関する情報の詳細ページを表示します。
+ **[Open query in a new tab]** (新しいタブでクエリを開く)— 新しいエディタタブを開き、選択したクエリをプライミングします。接続中の場合、クラスターまたはワークグループと、データベースが自動的に選択されます。クエリを実行するには、まず、正しいクラスターまたはワークグループと、データベースが選択されていることを確認します。
+ **[Open source] (ソースを開く)–タブ** — そのまま開いている場合は、クエリの実行時に含まれていたエディタまたはノートブックのタブに移動します。クエリの実行後にエディタまたはノートブックの内容が変更された可能性があります。
+ **[Open saved query]** (保存したクエリを開く) — [Editor] (エディタ) タブまたは [Notebook] (ノートブック) タブに移動してクエリを開きます。

また、**[Editor]** (エディタ) タブまたは **[Notebook]** (ノートブック) タブで実行されたクエリの履歴を表示できます。クエリの履歴をタブで表示するには、**[Tab history]** (タブ履歴) を選択します。タブ履歴では、次の操作を実行できます。
+ **[Copy query]** (クエリのコピー)— クエリバージョンの SQL コンテンツをクリップボードにコピーします。
+ **[Open query in a new tab]** (新しいタブでクエリを開く)— 新しいエディタタブを開き、選択したクエリをプライミングします。クエリを実行するには、クラスター、ワークグループ、データベースを選択する必要があります。
+ **[View query details]** (クエリの詳細を表示) — 実行済みクエリに関する情報の詳細ページを表示します。

# Amazon Q 生成 SQL の操作
<a name="query-editor-v2-generative-ai"></a>

**注記**  
現時点で Amazon Q 生成 SQL をサポートしているのは、以下の AWS リージョンのみです。  
米国東部 (バージニア北部) リージョン (us-east-1)
米国東部 (オハイオ) リージョン (us-east-2)
米国西部 (オレゴン) リージョン (us-west-2)
アジアパシフィック (ムンバイ) リージョン (ap-south-1)
アジアパシフィック (ソウル) リージョン (ap-northeast-2)
アジアパシフィック (シンガポール) リージョン (ap-southeast-1)
アジアパシフィック (シドニー) リージョン (ap-southeast-2)
アジアパシフィック (東京) リージョン (ap-northeast-1)
カナダ (中部) リージョン (ca-central-1)
欧州 (フランクフルト) リージョン (eu-central-1)
欧州 (アイルランド) リージョン (eu-west-1)
欧州 (ロンドン) リージョン (eu-west-2)
欧州 (パリ) リージョン (eu-west-3)
南米 (サンパウロ) リージョン (sa-east-1)
データの処理場所の詳細については、*Amazon Q Developer ユーザーガイド*の「[Cross region inference in Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/cross-region-inference.html)」を参照してください。

Amazon Redshift クエリエディタ v2 では、Amazon Q の生成 SQL 機能を利用できます。これは、プロンプトとデータベーススキーマに基づいて SQL ステートメントを生成するコード生成アシスタントです。このコード生成アシスタントは、クエリエディタ v2 でノートブックを作成している際に使用できます。生成された SQL は、ノートブックが接続されているデータベース向けのものです。

Amazon Q 生成 SQL を利用する際の質問は、具体的にします。複雑なリクエストの場合は反復し、返される内容が正確であることを確認します。

分析リクエストを自然言語で提供する場合は、コード生成アシスタントが必要な点を正確に把握できるように、可能な限り具体的に質問します。「最も多くチケットを販売した会場の上位を検索する」と質問する代わりに、「2008 年に最もチケットの売上があったトップ 3 の会場名または ID を検索する」などの詳細情報を提供します。データベース内のオブジェクトの名前がわかっている場合は、一貫した具体的な名前を使用します。同じオブジェクトを参照するのにさまざまな方法を使用すると、アシスタントが混乱する可能性があるため、データベースで定義されているスキーマ名、テーブル名、列名などを使用します。

複雑なリクエストの場合は、アシスタントが解釈しやすい複数のシンプルなステートメントに分割します。フォローアップの質問を繰り返し行うことで、アシスタントからより詳細な分析が得られます。例えば、まず「会場が最も多くある州はどこですか」と質問します。次に、その回答に基づいて、「この州で最も人気のある会場はどれですか」と質問します。

生成された SQL は実行する前に調べて、正確であることを確認します。生成された SQL クエリにエラーがある場合、または意図した内容と違う場合は、リクエスト全体を言い換えるのではなく、アシスタントに修正方法を指示します。例えば、クエリに年に関する述語句が欠落している場合は、「2008 年からの会場を提供する」と伝えます。

生成された SQL の実行により受信したエラーのテキストをプロンプトとして Amazon Q 生成 SQL に送信します。Amazon Q 生成 SQL は、このようなエラーから学習し、生成する SQL を改善します。

SQL 検索パスにスキーマを追加し、そのスキーマを使用する必要があることを示します。例えば、データがパブリックスキーマではなく TICKIT スキーマである場合は、TICKIT スキーマを追加します。

```
set search_path to '$user', tickit;
```

## Amazon Q 生成 SQL を利用する際の考慮事項
<a name="query-editor-v2-generative-ai-considerations"></a>

チャットパネルを使用する際は、次の点を考慮する必要があります。
+ アカウントのクエリエディタ v2 の管理者が **[Generative SQL settings]** ページでチャット機能を有効にしている必要があります。
+ Amazon Q 生成 SQL を使用するには、クエリエディタ v2 の AWS マネージドポリシーで指定されているその他のアクセス許可に加えて、IAM ポリシーでの `sqlworkbench:GetQSqlRecommendations` アクセス許可が必要です。AWS 管理ポリシーの詳細については、「[クエリエディタ v2 へのアクセス](query-editor-v2-getting-started.md#query-editor-v2-configure)」を参照してください。
+ 質問は英語で記述する必要があります。
+ 質問は、クラスターまたはワークグループ内の接続されたデータベースに関連している必要があります。空の状態エラーの発生を避けるため、データベースに少なくとも 1 つのテーブルといくつかのデータが必要です。
+ 質問は、接続されたデータベースに保存されているデータに関連している必要があります。外部スキーマを参照することはできません。サポートされているスキーマの詳細については、「**Amazon Redshift データベースデベロッパーガイド」の「[スキーマを作成する](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html)」を参照してください。
+ 接続されたデータベースを変更する SQL を生成する質問の場合、警告が表示されることがあります。
+ 生成 AI は新しいテクノロジーであり、応答にはハルシネーションと呼ばれる誤りがある場合があります。現在の環境やワークロードで使用する前に、すべてのコードをテストしてエラーや脆弱性がないかを確認する必要があります。
+ アカウント内のその他のユーザーが実行した SQL クエリを共有すると、レコメンデーションを改善できます。アカウント管理者は次の SQL コマンドを実行して、アカウントのクエリ履歴へのアクセスを許可できます。

  ```
  GRANT ROLE SYS:MONITOR to "IAMR:role-name";
  GRANT ROLE SYS:MONITOR to "IAM:user-name";
  GRANT ROLE SYS:MONITOR to "database-username";
  ```

  `SYS:MONITOR` の詳細については、「**Amazon Redshift データベースデベロッパーガイド」の「[Amazon Redshift でのシステム定義のロール](https://docs.aws.amazon.com/redshift/latest/dg/r_roles-default.html)」を参照してください。
+ お客様のデータは、安全かつプライベートです。アカウント間でお客様のデータが共有されることはありません。お客様のクエリ、データ、データベーススキーマは、生成 AI の基盤モデル (FM) のトレーニングに使用されることはありません。お客様が入力した内容は FM へのコンテキストプロンプトとして使用され、お客様のクエリのみに回答が提供されます。

# 生成 SQL の使用
<a name="query-editor-v2-generative-ai-interact"></a>

適切なアクセス許可を設定した後、クエリエディタ v2 でノートブックを使用する際に、アイコンをクリックすると、会話を開始できます。

**Amazon Q 生成 SQL チャットを操作して SQL を生成するには**

1. クエリエディタ v2 の **[エディタ]** タブで、ノートブックを開きます。

1. ![\[Generative SQL panel\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-amazon-q.png) の生成 SQL アイコンをクリックして、指示に従ってチャットパネルで Amazon Redshift クエリエディタ v2 生成 SQL について質問します。

   プロンプトフィールドに質問を入力すると、Amazon Q 生成 SQL が推奨される SQL を返します。エラーが発生すると、チャットパネルで返されます。

1. **[Add to notebook]** をクリックして、プロンプトを使用して Markdown セルと、提案された SQL を含む SQL セルをノートブックに追加します。

1. (オプション) 役に立った ![\[Helpful feedback\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-thumbs-up.png) フィードバックアイコンまたは役に立たなかった ![\[Not helpful feedback\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-thumbs-down.png) フィードバックアイコンをクリックして、生成された SQL についてのフィードバックを提供します。役に立たなかったというフィードバックは、`Incorrect tables/columns`、`Incorrect predicates/literals/group bys`、`Incorrect SQL structure`、または `Other` のカテゴリに分類できます。さらに、SQL の精度に関するフィードバックには、自由形式のテキストも追加できます。

1. (オプション) **[Regenerate SQL]** をクリックすると、同じプロンプトに対して別の応答が生成されます。現在のプロンプトに対して **[Regenerate SQL]** をクリックできるのは、1 回です。

1. (オプション) 生成 SQL チャットパネルで ![\[More\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-vmore.png) **[詳細]** アイコンをクリックしてから、**[データベースの更新]** をクリックすると、接続されたデータベースを説明するメタデータが更新されます。このメタデータには、データベース内のスキーマ、テーブル、列の定義が含まれます。

# 管理者の生成 SQL 設定の更新
<a name="query-editor-v2-generative-ai-settings"></a>

適切な IAM アクセス許可を持つユーザーは、同じ AWS アカウント 内のその他のユーザーの **[Generative SQL settings]** を表示したり変更したりできます。このような管理者は、クエリエディタ v2 の AWS マネージドポリシーで指定されているその他のアクセス許可に加えて、IAM ポリシーでの `sqlworkbench:UpdateAccountQSqlSettings` アクセス許可が必要です。管理ポリシーの詳細については、「[クエリエディタv2 を使用するために必要なアクセス許可](redshift-iam-access-control-identity-based.md#redshift-policy-resources.required-permissions.query-editor-v2)」を参照してください。

**管理者がアカウント内のすべてのユーザーに対して生成 SQL チャットを有効にするには**

1. ![\[Settings\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-cog.png) **[設定]** アイコンをクリックすると、さまざまな設定画面のメニューが表示されます。

1. 次に、生成 SQL 設定 ![\[Generative SQL settings\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-amazon-q.png) アイコンをクリックすると、**[Generative SQL settings]** ページが開きます。

1. **[Q generative SQL settings]** をクリックして、アカウント内のユーザーの生成 SQL 機能を有効にします。

   Amazon Q 生成 SQL を有効にした後、割り当てに残っているプロンプトの数を確認できます。クエリエディタ v2 管理者は、アカウントのユーザーの Amazon Q Developer Pro 階層の使用を有効にできます。Pro 階層を使用するには、IAM アイデンティティセンターでユーザーを設定して、各ユーザーを Amazon Q Developer Pro 階層にサブスクライブします。IAM アイデンティティセンターの Amazon Redshift に関する設定については、「[Redshift を AWS IAM アイデンティティセンターに接続してシングルサインオンエクスペリエンスを提供する](redshift-iam-access-control-idp-connect.md)」を参照してください。Amazon Q Developer の料金については、「[Amazon Q Developer の料金](https://aws.amazon.com/q/developer/pricing/)」を参照してください。

   Amazon Q Developer 無料利用枠を使用する場合、AWS アカウント のすべてのユーザーのプロンプトの合計数は、1 か月あたり 1,000 までに制限されます。Amazon Q Developer Pro 階層を使用する場合、個別のユーザーが送信できるプロンプトの合計数は、1 か月あたり 1,000 までに制限されます。利用できるプロンプトの数は、**[設定]** ページで確認できます。Amazon Q Developer の料金については、「[Amazon Q Developer の料金](https://aws.amazon.com/q/developer/pricing/)」を参照してください。

## カスタムコンテキスト
<a name="query-editor-v2-generative-custom-context"></a>

クエリエディタ v2 管理者は、生成された SQL を環境に合わせてカスタマイズするカスタムコンテキストを指定できます。**カスタムコンテキストを使用すると、SQL 生成をきめ細かく制御するためのドメインに関するナレッジと設定を提供できます。カスタムコンテキストは、JSON ファイルで定義され、クエリエディタ v2 管理者はこのファイルを Amazon Q 生成 SQL にアップロードできます。

データウェアハウス向けに生成された SQL をパーソナライズするために使用できる JSON キーは、以下のとおりです。

すべてのテーブルリファレンスは、`database.schema.table` の 3 つの部分からなる表記に従う必要があります。

**リソース**  
リソースは、カスタムコンテキストが適用されるデータアセットの範囲または部分を指定します。

**ResourceId**  
リソースの一意の識別子を指定します。Amazon Redshift クラスターの場合は、`cluster id` を指定します。Redshift Serverless ワークグループの場合は、`workgroup name` を指定します。

**ResourceType**  
有効な値: `REDSHIFT_WAREHOUSE`。

**TablesToInclude**  
SQL 生成向けに使用されるテーブルのセットを指定します。このフィールドは、SQL クエリの範囲を使用可能なテーブルの定義済みのサブセットに制限する場合に重要です。テーブルへの不必要な参照を低減することで、生成プロセスの最適化につながります。このフィールドを `TablesToExclude` とペアリングすると、クエリ生成をより細かく制御できます。

**TablesToExclude**  
SQL 生成から除外するテーブルのセットを指定します。これは、特定のテーブルが無関係である場合や、クエリ生成プロセスで考慮されるべきでない場合に使用します。

**TableAnnotations**  
使用するテーブルに関するメタデータまたは補足情報を提供します。このような注釈には、テーブルの説明、使用上の注意、または Amazon Q 生成 SQL によるテーブルのコンテキストや構造の把握の強化につながるような追加の属性を含めることができます。このように、テーブル定義を明確にすることで SQL 生成の精度の向上につながります。

**ColumnsToInclude**  
SQL クエリの生成時に、指定したテーブルのどの列を含めるかを定義します。このフィールドを使用してデータ取得の範囲を絞り込むことで、Amazon Q 生成 SQL は関連する列に集中することができ、パフォーマンスの向上につながります。これにより、Amazon Q 生成 SQL は、特定のクエリコンテキストに必要なデータのみをプルできます。

**ColumnsToExclude**  
SQL 生成で考慮対象から除外する列を指定します。これは、Amazon Q 生成 SQL で考慮されるべきではない無関係または冗長なデータが特定の列に含まれている場合に使用できます。列の包含と除外を管理することで、結果を絞り込み、取得するデータの制御を維持できます。

**ColumnAnnotations**  
`TableAnnotations` と同様に、このフィールドでは個別の列に固有のメタデータまたは注釈を提供します。このような注釈により、列定義や特別な処理手順に関するインサイトを提供することができます。この情報は、SQL 生成プロセスをガイドし、クエリで列が適切に使用されるようにするのに有益です。

**CuratedQueries**  
事前定義済みの質問と応答の例のセットです。質問は自然言語 (NLQ) で記述され、応答は対応する SQL クエリです。このような例は、生成すべきクエリの種類を Amazon Q 生成 SQL に理解させるのに役立ちます。このような例は、Amazon Q 生成 SQL の出力の精度と関連性を向上させるためのリファレンスポイントとして機能します。

**CustomDocuments**  
定義、ドメイン固有のナレッジ、説明など、Amazon Q 生成 SQL に提供される追加の情報またはヒントです。例えば、部門固有の方法で値を計算している場合に、ここで文書化できます。例えば「製造部門の総売上高は、料金 \$1 収益」などと指定します。このようなドキュメントは、追加のコンテキストを提供し、Amazon Q 生成 SQL の自然言語入力解釈機能の強化につながります。

**AdditionalTables**  
データウェアハウスに保存されているデータの一部ではないが、SQL 生成の考慮対象であるべき追加のテーブルを指定します。これにより、Amazon Q 生成 SQL は外部データソースを SQL 生成ロジックに統合し、複雑なデータ環境への対応能力を拡張できます。

**AppendToPrompt**  
SQL 生成プロセスをガイドするために Amazon Q 生成 SQL に提供する追加の手順またはガイドラインです。これには、クエリを構造化する方法に関する具体的な指示、特定の SQL コンストラクトの設定、または Amazon Q 生成 SQL の出力の品質を向上させるその他の大まかな指示があります。

次のカスタムコンテキストの例は、JSON ファイルの形式を説明しており、以下が定義されています。
+ クラスター `mycluster` の Amazon Redshift データウェアハウスのカスタムコンテキストを定義します。
+ SQL 生成プロセスの最適化に向けて、特定のテーブルと列を含めるか除外するかを定義します。
+ 含めるテーブルと列の注釈を定義します。
+ 使用する Amazon Q 生成 SQL のサンプルキュレーションクエリを定義します。
+ SQL の生成に使用するカスタムドキュメントとガードレールを定義します。
+ SQL の生成時に使用する追加のテーブルの DDL を定義します。

```
{
    "resources": [
        {
            "ResourceId": "mycluster",
            "ResourceType": "REDSHIFT_WAREHOUSE",
            "TablesToInclude": [
                "database.schema.table1",
                "database.schema.table2"
            ],
            "TablesToExclude": [
                "database.schema.table3",
                "database.schema.table4"
            ],
            "ColumnsToInclude": {
                "database.schema.table1": [
                    "col1",
                    "col2"
                ],
                "database.schema.table2": [
                    "col1",
                    "col2"
                ]
            },
            "ColumnsToExclude": {
                "database.schema.table5": [
                    "col1",
                    "col2"
                ],
                "database.schema.table6": [
                    "col1",
                    "col2"
                ]
            },
            "TableAnnotations": {
                "database.schema.table1": "table1 refers to Q3 sales",
                "database.schema.table2": "table2 refers to Q4 sales"
            },
            "ColumnAnnotations": {
                "database.schema.table1": {
                    "col1": "col1 refers to Q3 sale total",
                    "col2": "col2 refers to sale location"
                },
                "database.schema.table2": {
                    "col1": "col2 refers to Q4 sale total",
                    "col2": "col2 refers to sale location"
                }
            },
            "CuratedQueries": [
                {
                    "Question": "what is the sales data for Q3",
                    "Answer": "SELECT * FROM table1"
                },
                {
                    "Question": "what is the sales data for Q4",
                    "Answer": "SELECT * FROM table2"
                }
            ],
            "CustomDocuments": [
                "in manufacturing division total sales is price * revenue",
                "in research division total sales is price * revenue"
            ],
            "AdditionalTables": {
                "database.schema.table8": "create table database.schema.table8(col1 int)",
                "database.schema.table9": "create table database.schema.table9(col1 int)"
            },
            "AppendToPrompt": "Apply these guardrails: Queries should never return the secretId field of a user."
        }
    ]
}
```

# チュートリアル: TICKIT データで Amazon Q 生成 SQL 機能を使用する例
<a name="query-editor-v2-generative-ai-example"></a>

SQL を生成するための効率的なプロンプトを作成するには、データベーススキーマとデータについての知識を持っている必要があります。TICKIT データは、2 つのファクトテーブルと 5 つのディメンションの 7 つのテーブルで構成されています。サンプルデータには、2008 年に開催されたエンターテイメントイベントの参加者の売上に関するレコードが含まれています。TICKIT データスキーマの詳細については、「**Amazon Redshift Database デベロッパーガイド」の「[サンプルデータベース](https://docs.aws.amazon.com/redshift/latest/dg/c_sampledb.html)」を参照してください。TICKIT データは、Amazon Redshift コンソールとクエリエディタ v2 の両方を使用して、さまざまな方法でデータベースにロードできます。クエリエディタ v2 には、TICKIT データを `sample_data_dev` データベースにロードする方法が提供されています。詳細については、「[データベースにデータをロードする](query-editor-v2-loading.md)」を参照してください。クエリエディタ v2 には、TICKIT データのサンプルプロンプトも提供されています。次のシナリオでは、TICKIT サンプルデータに関する SQL を生成するための生成 SQL との会話について説明します。このシナリオでは、TICKIT サンプルデータは Amazon Redshift クラスターの `dev` データベースに既に作成されています。

**注記**  
この例は、会話を説明する目的で提供されています。生成 SQL からの応答は、同じプロンプトを使用した場合の結果と一致するとは限りません。

**Amazon Q 生成 SQL を使用した会話の例**

1. **[エディタ]** で、TICKIT サンプルデータがあるクラスターまたはワークグループに接続します。

1. 空のノートブックを作成して、![\[Generative SQL\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-amazon-q.png) 生成 SQL アイコンをクリックし、チャットパネルを開きます。

1. 次のプロンプトを入力して SQL を生成し、`VENUE` テーブルのレコード件数を確認します。

   ```
   How many venues are there?
   ```

   ```
   SELECT
     COUNT(*) AS num_venues
   FROM
     tickit.venue
   ```

   **[Add to notebook]** をクリックして、開いているノートブックにセルを 2 つ追加します。Markdown セルの 1 つに「会場はいくつありますか?」と入力します。もう 1 つのセルには生成された SQL が入力されます。

   SQL セルで **[実行する]** をクリックすると、次のとおり結果が表示されます。

   ```
   count
   ------
   202
   ```

1. 別のバージョンの SQL をリクエストするには、**[Regenerate SQL]** をクリックすると、次のとおりの回答が表示されます。

   ```
   SELECT
     venuestate,
     COUNT(*) AS num_venues
   FROM
     tickit.venue
   GROUP BY
     venuestate
   ```

   **[Add to notebook]** をクリックして、開いているノートブックにセルをさらに 2 つ追加します。Markdown セルの 1 つに「会場はいくつありますか?」と入力します。もう 1 つのセルには生成された SQL が入力されます。

   SQL セルで **[実行する]** をクリックすると、次のとおり会場のある州が番号別に一覧表示された結果が返されます。

   ```
   venuestate num_venues
   ----------------------
   MA         4	
   OH         8	
   MI         5	
   ...
   ```

1. 生成 SQL アシスタントは、ユーザーの質問を推測できます。データベースにはウィジェットはないとはいえ、質問することはできます。この場合、SQL を生成できなかったというメッセージが表示されます。

   ```
   How many widgets are there?
   ```

   ```
   I was not able to generate any SQL
   ```

1. データベースについての理解を深めると、SQL 生成に向けてより具体的な質問をすることができます。例えば、データベースには 2008 年の数か月分の売上データが含まれていることはすでに把握しています。次のプロンプトを入力して SQL を生成し、2008 年 11 月の販売数を確認します。

   ```
   How many sales were there in November 2008?
   ```

   ```
   SELECT
     COUNT(*) AS num_sales
   FROM
     tickit.sales s
     JOIN tickit.date d ON s.dateid = d.dateid
   WHERE
     d.month = 'November'
     AND d.year = 2008
   ```

   **[Add to notebook]** をクリックして、開いているノートブックにセルを 2 つ追加します。Markdown セルの 1 つに「2008 年 11 月の売上数は」と入力します。もう 1 つのセルには生成された SQL が入力されます。

   SQL セルで **[実行する]** をクリックすると、次のとおり結果が表示されます。

   ```
   num_sales
   -----
   0
   ```

   これは期待していた結果ではないことが判明します。

1. 述語 `date.month='November'` では、DATE テーブルの月が月名の省略形で表されることを想定していることが分かりました。述語を `d.month='NOV'` に変更して SQL を再実行します。

   ```
   SELECT
     COUNT(*)
   FROM
     sales
     JOIN date ON sales.dateid = date.dateid
   WHERE
     date.month = 'NOV'
     AND date.year = 2008
   ```

   SQL セルで **[実行する]** をクリックして、新しい結果を取得します。

   ```
   count
   -----
   14261
   ```

1. 接続されたデータベースを変更しようとする質問をすると、推奨される SQL とともに警告メッセージが返されます。次のプロンプトを入力して、テーブルにデータを挿入する SQL を生成します。

   ```
   Insert 1 into the venue table.
   ```

   ```
   INSERT
   ,
   UPDATE
     OR delete data
   FROM
     the database AS that could potentially change the data.Please provide a query that ONLY selects data
   ```

   ```
   I was not able to generate the correct SQL code. I generated SQL, but you'll have to edit it to work with your database.
   ```

   **[Add to notebook]** をクリックして開いているノートブックにセルを 2 つ追加して、この SQL を実行すると、SQL は失敗します。

   ```
   ERROR: syntax error at or near "," Position: 132 [ErrorId: 1-6546764a-011df2691778846219ce6ec2]
   ```

このシナリオでは、Amazon Q 生成 SQL を利用する際の基本的な方法の一部のみを説明しています。生成 AI テクノロジーをさらに試して、データベースにクエリを実行する SQL の作成を開始するうえで役に立ちます。

# データベースにデータをロードする
<a name="query-editor-v2-loading"></a>

クエリエディタ v2 を使用して Amazon Redshift クラスターまたはワークグループのデータベースにデータをロードできます。このセクションでは、サンプルデータ、S3 からのデータ、ローカルファイルのセットアップとワークフローからのデータをロードする方法について説明します。

## サンプルデータ
<a name="query-editor-v2-loading-sample-data"></a>

クエリエディタ v2 には、サンプルデータベースと対応するスキーマにロードできるサンプルデータとノートブックが付属しています。

サンプルデータをロードするには、ロードするサンプルデータに関連付けられている ![\[External\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/external.png) アイコンをクリックします。これにより、クエリエディタ v2 が `sample_data_dev` データベースのスキーマにデータをロードして、[Notebooks] フォルダに保存済みクエリのフォルダを作成します。

次のサンプルデータセットが利用可能です。

**tickit**  
Amazon Redshift ドキュメントのほとんどの例では、`tickit` というサンプルデータを使用します。このデータは、7 個のテーブルで構成されています。そのうち 2 個はファクトテーブル、5 個はディメンションです。このデータをロードすると、スキーマ `tickit` がサンプルデータで更新されます。`tickit` データの詳細については、「*Amazon Redshift データベースデベロッパーガイド*」の「[サンプルデータベース](https://docs.aws.amazon.com/redshift/latest/dg/c_sampledb.html)」を参照してください。

**tpch**  
このデータは、決定サポートのベンチマークに使用されます。このデータをロードすると、スキーマ `tpch` がサンプルデータで更新されます。`tpch` データの詳細については、「[TPC-H](http://www.tpc.org/tpch/)」を参照してください。

**tpcds**  
このデータは、決定サポートのベンチマークに使用されます。このデータをロードすると、スキーマ `tpcds` がサンプルデータで更新されます。`tpcds` データの詳細については、「[TPC-DS](http://www.tpc.org/tpcds/)」を参照してください。

# Amazon S3 からデータをロードする
<a name="query-editor-v2-loading-data"></a>

既存のテーブルまたは新しいテーブルに Amazon S3 データをロードできます。

**データを既存のテーブルにロードするには**

クエリエディタ v2 は、Amazon S3 からデータをロードするために COPY コマンドを使用します。クエリエディタ v2 の [データのロード] ウィザードで生成および使用される COPY コマンドは、Amazon S3 からのコピー時に COPY コマンド構文で使用できる、多くのパラメータをサポートしています。Amazon S3 からデータをロードするための COPY コマンドと使用するオプションの詳細については、*Amazon Redshift データベース開発者ガイド*の「[Amazon S3 からの COPY](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-source-s3.html)」を参照してください。

1. データをロードするデータベースに、テーブルがすでに作成されていることを確認します。

1. 次に進む前に、クエリエディタ v2 のツリービューパネルで、ターゲットデータベースに接続していることを確認します。コンテキストメニュー (右クリック) を使用して、データをロードするクラスターまたはワークグループへの接続を作成できます。

   ![\[Load\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-upload.png)**[Load data]** (データをロード) をクリックします。

1. **[データソース]** では、**[S3 バケットからロード]** を選択します。

1. **[S3 URI]** で **[Browse S3]** (S3 をブラウズ) をクリックして、ロードするデータが含まれている Amazon S3 バケットを検索します。

1. 指定した Amazon S3 バケットがターゲットテーブルと同じ AWS リージョン にない場合、**[S3 file location]** (S3 ファイルの場所) でデータが置かれた AWS リージョン を選択します。

1. Amazon S3 ファイルが実際に複数の Amazon S3 バケット URI を含むマニフェストである場合。**[This file is a manifest file]** (このファイルはマニフェストファイルです) を選択します。

1. アップロードするファイルの **[File format]** (ファイル形式) を選択します。サポートされているデータ形式は、CSV、JSON、DELIMITER、FIXEDWIDTH、SHAPEFILE、AVRO、PARQUET、ORC です。指定したファイル形式に応じて、それぞれの **[File options]** (ファイルオプション) を選択できます。また、データが暗号化されており、暗号化に使用する KMS キーの Amazon リソースネーム (ARN) を入力した場合には、**[Data is encrypted]** (データは暗号化されています) を選択できます。

   CSV または DELIMITER を選択すると、指定した行数が実際には列名であり、ロードするデータではない場合に、**[区切り文字]** で **[ヘッダー行を無視する]** を選択することもできます。

1. 圧縮方法を選択してファイルを圧縮します。デフォルトでは圧縮なしです。

1. (オプション) **[Advanced settings]** (詳細設定) では、さまざまな **[Data conversion parameters]** (データ変換パラメータ) や **[Load operations]** (ロードオペレーション) がサポートされています。ファイルの必要に応じて、この情報を入力します。

   データ変換パラメータとデータロードパラメータの詳細については、「*Amazon Redshift データベースデベロッパーガイド*」の「[データ変換パラメータ](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html)」と「[データのロード操作](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-load.html)」を参照してください。

1. [**次へ**] を選択します。

1. **[既存のテーブルをロード]** を選択します。

1. **[クラスターまたはワークグループ]**、**[データベース]**、**[スキーマ]**、**[テーブル]** の名前など、データをロードする先の **[ターゲットテーブル]** の場所を確認または選択します。

1. Amazon S3 からデータをロードするために必要な許可を持つ **[IAM role]** (IAM ロール) を選択します。

1. (オプション) 列名を選択して **[Column mapping]** (列のマッピング) に入力すると、入力データファイルの順序で列がマッピングされます。

1. **[Load data]** (データをロード) をクリックして、データのロードを開始します。

   ロードが完了すると、データのロードのために生成された COPY コマンドとともに、クエリエディタが表示されます。COPY の **[Result]** (結果) は次のように表示されます。成功すると、ロードされたテーブルから SQL を使用してデータを選択できるようになります。エラーが発生した場合は、システムビュー STL\$1LOAD\$1ERRORS にクエリを実行して、詳細を取得します。COPY コマンドとそのエラーについては、*Amazon Redshift データベース開発者ガイド*の「[STL\$1LOAD\$1ERRORS](https://docs.aws.amazon.com/redshift/latest/dg/r_STL_LOAD_ERRORS.html)」を参照してください。

新しいテーブルにデータをロードすると、クエリエディタ v2 は最初にデータベースにテーブルを作成してから、同じワークフローの別のアクションとしてデータをロードします。

**データを新しいテーブルにロードするには**

クエリエディタ v2 は、Amazon S3 からデータをロードするために COPY コマンドを使用します。クエリエディタ v2 の [データのロード] ウィザードで生成および使用される COPY コマンドは、Amazon S3 からのコピー時に COPY コマンド構文で使用できる、多くのパラメータをサポートしています。Amazon S3 からデータをロードするための COPY コマンドと使用するオプションの詳細については、*Amazon Redshift データベース開発者ガイド*の「[Amazon S3 からの COPY](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-source-s3.html)」を参照してください。

1. 次に進む前に、クエリエディタ v2 のツリービューパネルで、ターゲットデータベースに接続していることを確認します。コンテキストメニュー (右クリック) を使用して、データをロードするクラスターまたはワークグループへの接続を作成できます。

   ![\[Load\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-upload.png)**[Load data]** (データをロード) をクリックします。

1. **[データソース]** では、**[S3 バケットからロード]** を選択します。

1. **[S3 URI]** で **[Browse S3]** (S3 をブラウズ) をクリックして、ロードするデータが含まれている Amazon S3 バケットを検索します。

1. 指定した Amazon S3 バケットがターゲットテーブルと同じ AWS リージョン にない場合、**[S3 file location]** (S3 ファイルの場所) でデータが置かれた AWS リージョン を選択します。

1. Amazon S3 ファイルが実際に複数の Amazon S3 バケット URI を含むマニフェストである場合。**[This file is a manifest file]** (このファイルはマニフェストファイルです) を選択します。

1. アップロードするファイルの **[File format]** (ファイル形式) を選択します。サポートされているデータ形式は、CSV、JSON、DELIMITER、FIXEDWIDTH、SHAPEFILE、AVRO、PARQUET、ORC です。指定したファイル形式に応じて、それぞれの **[File options]** (ファイルオプション) を選択できます。また、データが暗号化されており、暗号化に使用する KMS キーの Amazon リソースネーム (ARN) を入力した場合には、**[Data is encrypted]** (データは暗号化されています) を選択できます。

   CSV または DELIMITER を選択すると、指定した行数が実際には列名であり、ロードするデータではない場合に、**[区切り文字]** で **[ヘッダー行を無視する]** を選択することもできます。

1. 圧縮方法を選択してファイルを圧縮します。デフォルトでは圧縮なしです。

1. (オプション) **[Advanced settings]** (詳細設定) では、さまざまな **[Data conversion parameters]** (データ変換パラメータ) や **[Load operations]** (ロードオペレーション) がサポートされています。ファイルの必要に応じて、この情報を入力します。

   データ変換パラメータとデータロードパラメータの詳細については、「*Amazon Redshift データベースデベロッパーガイド*」の「[データ変換パラメータ](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html)」と「[データのロード操作](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-load.html)」を参照してください。

1. [**次へ**] を選択します。

1. **[新しいテーブルをロード]** を選択します。

   テーブルの列は入力データから推測されます。列とテーブルの詳細を追加すると、テーブルスキーマの定義を変更できます。クエリエディタ v2 の推測されたテーブルスキーマに戻すには、**[デフォルトに戻す]** を選択します。

1. **[クラスターまたはワークグループ]**、**[データベース]**、**[スキーマ]** など、データをロードする先の **[ターゲットテーブル]** の場所を確認または選択します。作成する**テーブル**の名前を入力します。

1. Amazon S3 からデータをロードするために必要な許可を持つ **[IAM role]** (IAM ロール) を選択します。

1. **[テーブルを作成]** を選択し、表示されている定義を使用してテーブルを作成します。

   テーブル定義のレビューの要約が表示されます。テーブルがデータベースに作成されます。後でテーブルを削除するには、DROP TABLE SQL コマンドを実行します。詳細については、*Amazon Redshift データベースデベロッパーガイド*の「[DROP TABLE](https://docs.aws.amazon.com/redshift/latest/dg/r_DROP_TABLE)」を参照してください。

1. **[Load data]** (データをロード) をクリックして、データのロードを開始します。

   ロードが完了すると、データのロードのために生成された COPY コマンドとともに、クエリエディタが表示されます。COPY の **[Result]** (結果) は次のように表示されます。成功すると、ロードされたテーブルから SQL を使用してデータを選択できるようになります。エラーが発生した場合は、システムビュー STL\$1LOAD\$1ERRORS にクエリを実行して、詳細を取得します。COPY コマンドとそのエラーについては、*Amazon Redshift データベース開発者ガイド*の「[STL\$1LOAD\$1ERRORS](https://docs.aws.amazon.com/redshift/latest/dg/r_STL_LOAD_ERRORS.html)」を参照してください。

# ローカルファイル設定とワークフローからのデータのロード
<a name="query-editor-v2-loading-data-local"></a>

ローカルファイルから既存のテーブルまたは新しいテーブルにデータをロードできます。

## ローカルファイルからデータをロードするための管理者設定
<a name="query-editor-v2-loading-data-local-setup"></a>

クエリエディタ v2 の管理者は、**[Account settings]** (アカウント設定) ウィンドウで共通の Amazon S3 バケットを指定する必要があります。アカウントユーザーは適切な権限で設定されている必要があります。
+ 必要な IAM 権限 – ローカルファイルからロードするユーザーには、`s3:ListBucket`、`s3:GetBucketLocation`、`s3:putObject`、`s3:getObject`、および `s3:deleteObject` 権限が必要です。*optional-prefix* を指定すると、このバケットのクエリエディタ v2 関連の使用をこのプレフィックスの付いたオブジェクトに制限できます。このオプションは、同じ Amazon S3 バケットをクエリエディタ v2 以外の用途に使用する場合に使用できます。バケットとプレフィックスの詳細については、「*Amazon Simple Storage Service*」ユーザーガイドの「[Managing user access to specific folders](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-folders)」(特定のフォルダへのユーザーアクセスの管理) を参照してください。ユーザー間のデータアクセスが許可されないようにするには、クエリエディタ v2 管理者が Amazon S3 バケットポリシーを使用して、`aws:userid` に基づいてオブジェクトアクセスを制限することをお勧めします。次の例では、*<staging-bucket-name>* に、`aws:userid` というプレフィックスがある Amazon S3 オブジェクトのみへの読み取り/書き込み Amazon S3 アクセス権限を許可します。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "s3:ListBucket",
                  "s3:GetBucketLocation"
              ],
              "Resource": [
                  "arn:aws:s3:::<staging-bucket-name>"
              ]
          },
          {
              "Effect": "Allow",
              "Action": [
                  "s3:PutObject",
                  "s3:GetObject",
                  "s3:DeleteObject"
              ],
              "Resource": [
                  "arn:aws:s3:::<staging-bucket-name>[/<optional-prefix>]/${aws:userid}/*"
              ]
          }
      ]
  }
  ```

------
+ データの分離 – ユーザーがお互いのデータに (たとえ短時間でも) アクセスできないようにすることをお勧めします。ローカルファイルからのロードでは、クエリエディタ v2 管理者が設定したステージング Amazon S3 バケットを使用します。ステージングバケットのバケットポリシーを設定して、ユーザー間のデータを分離します。次の例は、*<staging-bucket-name>* のユーザー間でデータを分離するバケットポリシーを示しています。

------
#### [ JSON ]

****  

  ```
  {
   "Version":"2012-10-17",		 	 	 
      "Statement": [
          {"Sid": "userIdPolicy",
              "Effect": "Deny",
              "Principal": "*",
              "Action": ["s3:PutObject",
                         "s3:GetObject",
                         "s3:DeleteObject"],
              "NotResource": [
                  "arn:aws:s3:::<staging-bucket-name>[/<optional-prefix>]/${aws:userid}/*"
              ]
           }
      ]
  }
  ```

------

## ローカルファイルからのデータのロード
<a name="query-editor-v2-loading-data-local-procedure"></a>

**ローカルファイルデータを既存のテーブルにロードするには**

クエリエディタ v2 の管理者は、**アカウント設定**ウィンドウで共通の Amazon S3 バケットを指定する必要があります。クエリエディタ v2 は、アカウントが使用する共通の Amazon S3 バケットにローカルファイルを自動的にアップロードしてから、COPY コマンドを使用してデータをロードします。クエリエディタ v2 のローカルファイルの読み込みウィンドウで生成および実行される COPY コマンドは、Amazon S3 からのコピー時に COPY コマンド構文で使用できる、多くのパラメータをサポートしています。Amazon S3 からデータをロードするための COPY コマンドと使用するオプションの詳細については、「*Amazon Redshift データベース開発者ガイド*」の「[Amazon S3 からの COPY](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-source-s3.html)」を参照してください。

1. データをロードするデータベースに、テーブルがすでに作成されていることを確認します。

1. クエリエディタ v2 のツリービューパネルで、ターゲットデータベースに接続していることを確認します。コンテキストメニュー (右クリック) を使用して、データをロードするクラスターまたはワークグループへの接続を作成できます。

1. ![\[Load\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-upload.png)**[Load data]** (データをロード) をクリックします。

1. **[Data source]** (データソース) で、**[Load from local file]** (ローカルファイルからロード) を選択します。

1. **[ブラウズする]** を選択して、データが含まれるファイルを検索して**ファイルをロード**します。デフォルトでは、拡張子 `.csv`、`.avro`、`.parquet`、`.orc` のファイルが表示されますが、他のファイルタイプも選択できます。 ファイルの最大サイズは 100 MB です。

1. アップロードするファイルの **[File format]** (ファイル形式) を選択します。サポートされているデータ形式は、CSV、JSON、DELIMITER、FIXEDWIDTH、SHAPEFILE、AVRO、PARQUET、ORC です。指定したファイル形式に応じて、それぞれの **[File options]** (ファイルオプション) を選択できます。また、データが暗号化されており、暗号化に使用する KMS キーの Amazon リソースネーム (ARN) を入力した場合には、**[Data is encrypted]** (データは暗号化されています) を選択できます。

   CSV または DELIMITER を選択すると、指定した行数が実際には列名であり、ロードするデータではない場合に、**[区切り文字]** で **[ヘッダー行を無視する]** を選択することもできます。

1. (オプション) **[Advanced settings]** (詳細設定) では、さまざまな **[Data conversion parameters]** (データ変換パラメータ) や **[Load operations]** (ロードオペレーション) がサポートされています。ファイルの必要に応じて、この情報を入力します。

   データ変換パラメータとデータロードパラメータの詳細については、「*Amazon Redshift データベースデベロッパーガイド*」の「[データ変換パラメータ](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html)」と「[データのロード操作](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-load.html)」を参照してください。

1. [**次へ**] を選択します。

1. **[既存のテーブルをロード]** を選択します。

1. **[クラスターまたはワークグループ]**、**[データベース]**、**[スキーマ]**、**[テーブル]** の名前など、データをロードする先の **[ターゲットテーブル]** の場所を確認または選択します。

1. (オプション) 列名を選択して **[Column mapping]** (列のマッピング) に入力すると、入力データの順序で列をマッピングすることができます。

1. **[Load data]** (データをロード) をクリックして、データのロードを開始します。

   ロードが完了すると、ロードが成功したかどうかのメッセージが表示されます。成功すると、ロードされたテーブルから SQL を使用してデータを選択できるようになります。エラーが発生した場合は、システムビュー STL\$1LOAD\$1ERRORS にクエリを実行して、詳細を取得します。COPY コマンドとそのエラーについては、*Amazon Redshift データベース開発者ガイド*の「[STL\$1LOAD\$1ERRORS](https://docs.aws.amazon.com/redshift/latest/dg/r_STL_LOAD_ERRORS.html)」を参照してください。

   データをロードするために使用された COPY コマンドテンプレートが **[Query history]** (クエリ履歴) に表示されます。この COPY コマンドテンプレートには、使用されているパラメータの一部が表示されますが、エディタタブで直接実行することはできません。クエリ履歴の詳細については、「[クエリとタブの履歴を表示する](query-editor-v2-history.md)」を参照してください。

新しいテーブルにデータをロードすると、クエリエディタ v2 は最初にデータベースにテーブルを作成してから、同じワークフローの別のアクションとしてデータをロードします。

**ローカルファイルデータを新しいテーブルにロードするには**

クエリエディタ v2 の管理者は、**[Account settings]** (アカウント設定) ウィンドウで共通の Amazon S3 バケットを指定する必要があります。ローカルファイルは、アカウントが使用する共通の Amazon S3 バケットに自動的にアップロードされ、クエリエディタ v2 は COPY コマンドを使用してデータをロードします。クエリエディタ v2 のローカルファイルの読み込みウィンドウで生成および実行される COPY コマンドは、Amazon S3 からのコピー時に COPY コマンド構文で使用できる、多くのパラメータをサポートしています。Amazon S3 からデータをロードするための COPY コマンドと使用するオプションの詳細については、「*Amazon Redshift データベース開発者ガイド*」の「[Amazon S3 からの COPY](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-source-s3.html)」を参照してください。

1. クエリエディタ v2 のツリービューパネルで、ターゲットデータベースに接続していることを確認します。コンテキストメニュー (右クリック) を使用して、データをロードするクラスターまたはワークグループへの接続を作成できます。

1. ![\[Load\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-upload.png)**[Load data]** (データをロード) をクリックします。

1. **[Data source]** (データソース) で、**[Load from local file]** (ローカルファイルからロード) を選択します。

1. **[ブラウズする]** を選択して、データが含まれるファイルを検索して**ファイルをロード**します。デフォルトでは、拡張子 `.csv`、`.avro`、`.parquet`、`.orc` のファイルが表示されますが、他のファイルタイプも選択できます。 ファイルの最大サイズは 100 MB です。

1. アップロードするファイルの **[File format]** (ファイル形式) を選択します。サポートされているデータ形式は、CSV、JSON、DELIMITER、FIXEDWIDTH、SHAPEFILE、AVRO、PARQUET、ORC です。指定したファイル形式に応じて、それぞれの **[File options]** (ファイルオプション) を選択できます。また、データが暗号化されており、暗号化に使用する KMS キーの Amazon リソースネーム (ARN) を入力した場合には、**[Data is encrypted]** (データは暗号化されています) を選択できます。

   CSV または DELIMITER を選択すると、指定した行数が実際には列名であり、ロードするデータではない場合に、**[区切り文字]** で **[ヘッダー行を無視する]** を選択することもできます。

1. (オプション) **[Advanced settings]** (詳細設定) では、さまざまな **[Data conversion parameters]** (データ変換パラメータ) や **[Load operations]** (ロードオペレーション) がサポートされています。ファイルの必要に応じて、この情報を入力します。

   データ変換パラメータとデータロードパラメータの詳細については、「*Amazon Redshift データベースデベロッパーガイド*」の「[データ変換パラメータ](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html)」と「[データのロード操作](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-load.html)」を参照してください。

1. [**次へ**] を選択します。

1. **[新しいテーブルをロード]** を選択します。

1. **[クラスターまたはワークグループ]**、**[データベース]**、**[スキーマ]** など、データをロードする先の **[ターゲットテーブル]** の場所を確認または選択します。作成する**テーブル**の名前を入力します。

1. **[テーブルを作成]** を選択し、表示されている定義を使用してテーブルを作成します。

   テーブル定義のレビューの要約が表示されます。テーブルがデータベースに作成されます。後でテーブルを削除するには、DROP TABLE SQL コマンドを実行します。詳細については、*Amazon Redshift データベースデベロッパーガイド*の「[DROP TABLE](https://docs.aws.amazon.com/redshift/latest/dg/r_DROP_TABLE)」を参照してください。

1. **[Load data]** (データをロード) をクリックして、データのロードを開始します。

   ロードが完了すると、ロードが成功したかどうかを示すメッセージが表示されます。成功すると、ロードされたテーブルから SQL を使用してデータを選択できるようになります。エラーが発生した場合は、システムビュー STL\$1LOAD\$1ERRORS にクエリを実行して、詳細を取得します。COPY コマンドとそのエラーについては、*Amazon Redshift データベース開発者ガイド*の「[STL\$1LOAD\$1ERRORS](https://docs.aws.amazon.com/redshift/latest/dg/r_STL_LOAD_ERRORS.html)」を参照してください。

   データをロードするために使用された COPY コマンドテンプレートが **[Query history]** (クエリ履歴) に表示されます。この COPY コマンドテンプレートには、使用されているパラメータの一部が表示されますが、エディタタブで直接実行することはできません。クエリ履歴の詳細については、「[クエリとタブの履歴を表示する](query-editor-v2-history.md)」を参照してください。

# Amazon Redshift を使用したクエリの作成
<a name="query-editor-v2-query-run"></a>

エディタでクエリを入力するか、**[クエリ]** リストをクリックし **[実行]** をクリックします。

デフォルトでは、**[上限 100]** で、結果を 100 行に制限するように設定されています。このオプションをオフにすると、より大きな結果セットが返されます。このオプションをオフにすると、非常に大きな結果セットを避けるために、SQL 文に LIMIT オプションを含めることができます。詳細については、「*Amazon Redshift データベースデベロッパーガイド*」の「[ORDER BY clause](https://docs.aws.amazon.com/redshift/latest/dg/r_ORDER_BY_clause.html)」(句の順に表示) を参照してください。

結果領域にクエリプランを表示するには **[説明]** をオンにします。**[Explain graph]** (グラフの説明) をオンにしても説明プランのグラフィカルな表現が表示されます。

クエリを **[クエリ]** フォルダに保存するには **[保存]**を選択します。

クエリが成功すると、成功メッセージが表示されます。クエリが情報を返す場合、結果が **[結果]** セクションに移動します。結果の数が表示領域を超えると、結果領域の上部に数値が表示されます。数値を選択して、結果の連続したページを表示することができます。

列ごとに **[結果]** の絞り込みや並べ替えができます。結果列のヘッダーに絞り込み条件を入力するには、列の上にマウスポインターを置くと、メニュー (![\[Filter menu\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/menu.png)) で、列を絞り込む条件を入力できます。

クエリにエラーが含まれている場合、クエリエディタ v2 は結果領域にエラーメッセージを表示します。このメッセージは、クエリを修正する方法について説明します。

次のように結果領域で右クリックし、コンテキストニューを表示すると、クエリの結果をエクスポートまたはコピーできます。
+ ファイルに選択した行をダウンロードするには、**[コピー先]** と **[JSON]** または **[CSV]** を選択します。
+ **[行をコピー]** を選択して、選択した行をクリップボードにコピーします。
+ **[行とヘッダーをコピー]** を選択して、選択した行と列ヘッダーをクリップボードにコピーします。

結果セットの **[エクスポート]** を選択し、**[JSON]** または **[CSV]** を選択して、行形式の結果のセット全体をファイルにダウンロードすることもできます。結果セットの行数は、**[Limit]** (制限) オプションまたはクエリ内の SQL `limit` 句で制限できます。ダウンロードされた結果セットの最大サイズは 5 MB です。

ショートカット Ctrl\$1C (Windows) または Cmd\$1C (macOS) を使用しても、現在の結果ページからクリップボードにデータをコピーできます。行が選択されていない場合は、フォーカスのあるセルがクリップボードにコピーされます。行が選択されている場合は、選択されている行がクリップボードにコピーされます。

新しいクエリタブを追加するには、![\[New query tab\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/add-plus.png) アイコンを選択し、クエリタブのある行に表示されている **[Editor]** (エディタ) を選択します。クエリタブは `Isolated session` を使用する場合と使用しない場合があります。分離されたセッションでは、あるエディタタブで一時テーブルを作成するなどの SQL コマンドの結果は、別のエディタタブには表示されません。クエリエディタ v2 でエディタタブを開くとき、デフォルトは分離されたセッションです。

**クエリを実行する**

1. クエリ領域で、以下のいずれかの操作を行います。
   + クエリを入力します。
   + コピーしたクエリを貼り付けます。
   + **[クエリ]** フォルダを選択し、右クリックで保存したクエリのコンテキストメニューを開いて **[クエリを開く]** を選択します。

1. 実行する予定の SQL に対して、正しい **[Cluster]** (クラスター) または **[Workgroup]** (ワークグループ) と **[Database]** (データベース) の値を選択したことを確認します。

   ツリービューで **[Cluster]** (クラスター) または **[Workgroup]** (ワークグループ) を選択します。ツリービューでは **[Database]** (データベース) も選択します。

   各エディタタブ内の **[クラスター]**、**[ワークグループ]**、**[データベース]** を、各エディタタブの **[分離されたセッション]** ヘッダーの近くにあるドロップダウンコントロールを使用して変更できます。

   エディタタブごとに、SQL を**分離されたセッション**で実行するかどうかを選択します。分離されたセッションには、データベースへの独自の接続があります。これを使用して、他のクエリエディタセッションから分離された SQL を実行します。接続の詳細については、「[クエリエディタ v2 を開く](query-editor-v2-open.md)」を参照してください。

1. **[Run]** (実行) を選択します。

   **[結果]** 領域が開き、クエリ結果が表示されます。

**クエリの説明プランを表示する手順は、次のとおりです。**

1. クエリを選択します。

1. **[説明]** をオンにします。

   デフォルトでは **[説明グラフ]** もオンです。

1. **[実行する]** を選択します。

   クエリが実行され、説明プランがクエリ **[結果]** 領域に表示されます。

クエリエディタ v2 では次の機能をサポートしています。
+ 1 つのクエリタブで複数の SQL 文を使用してクエリを作成できます。クエリは連続して実行され、各クエリに対して複数の結果タブが開きます。
+ セッション変数と一時テーブルを使用してクエリを作成できます。
+ `${parameter}` で指定した置換可能なパラメータを使用してクエリを作成できます。複数の置換可能なパラメータを使用して SQL クエリを作成し、SQL 文の複数の場所で同じパラメータを使用できます。

  クエリが実行されると、パラメータの値を入力するためのウィンドウが表示されます。クエリを実行するたびに、パラメータ値を入力するためのウィンドウが表示されます。

  例については、[例:特定のパラメータより大きい売上](#query-editor-v2-example-sales-qtysold-greater-than-parameter)を参照してください。
+ クエリは自動的にバージョン管理されます。実行するクエリの以前のバージョンを選択できます。
+ ワークフローを続行する前に、クエリが完了するまで待つ必要はありません。クエリエディタを閉じた場合でも、クエリは引き続き実行されます。
+ クエリの作成時には、スキーマ名、テーブル名、列名のオートコンプリートがサポートされています。

SQL エディタでは次の機能をサポートしています。
+ SQL で使用される開始と終了の括弧の色は同じです。エディタには、括弧を一致させるのに役立つ縦線が表示されます。
+ SQL のセクションは、展開および折りたたむことができます。
+ SQL 内のテキストを検索して置換できます。
+ ショートカットキーは、一般的な編集作業の一部で使用できます。
+ SQL エラーはエディタで強調表示され、問題箇所を簡単に特定できます。

エディタ機能のデモについては、次の動画をご覧ください。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/9JAq0yDs0YE/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/9JAq0yDs0YE)


## クエリの例
<a name="query-editor-v2-examples"></a>

次に、実行できるクエリのさまざまなタイプの説明をします。

これらのクエリの多くで使用されているデータは `tickit` サンプルスキーマのものです。`tickit` サンプルデータのロードの詳細については、「[データベースにデータをロードする](query-editor-v2-loading.md)」を参照してください。`tickit` サンプルデータの詳細については、「*Amazon Redshift データベースデベロッパーガイド*」の「[サンプルデータベース](https://docs.aws.amazon.com/redshift/latest/dg/c_sampledb.html)」を参照してください。

これらのサンプルクエリを実行する際には、エディタで正しいデータベースを選択していることを確認してください (`sample_data_dev`など）。

**Topics**
+ [例:セッション変数の設定](#query-editor-v2-example-set-session-variable)
+ [例:売上合計による上位のイベント](#query-editor-v2-example-top-event-sales)
+ [例:特定のパラメータより大きい売上](#query-editor-v2-example-sales-qtysold-greater-than-parameter)
+ [例: 一時テーブルの作成](#query-editor-v2-example-create-temporary-table)
+ [例: 一時テーブルからの選択](#query-editor-v2-example-select-from-temporary-table)

### 例:セッション変数の設定
<a name="query-editor-v2-example-set-session-variable"></a>

次のコマンドでは、セッションの `search_path` サーバー設定パラメータを *公開* に設定しています。詳細については、「*Amazon Redshift データベースデベロッパーガイド*」の 「[SET](https://docs.aws.amazon.com/redshift/latest/dg/r_SET.html)」と「[search\$1path](https://docs.aws.amazon.com/redshift/latest/dg/r_search_path.html)」を参照してください。

```
set search_path to public;
```

### 例:売上合計による上位のイベント
<a name="query-editor-v2-example-top-event-sales"></a>

次のクエリは、売上が最も多いイベントを検索します。

```
select eventname, count(salesid) totalorders, sum(pricepaid) totalsales
from sales, event
where sales.eventid=event.eventid
group by eventname
order by 3;
```

以下に、結果の一部を示します。

```
eventname           totalorders       totalsales
White Christmas         20              9352
Joshua Radin            38             23469
Beach Boys              58             30383
Linda Ronstadt          56             35043
Rascal Flatts           76             38214
Billy Idol              67             40101
Stephenie Meyer         72             41509
Indigo Girls            57             45399
...
```

### 例:特定のパラメータより大きい売上
<a name="query-editor-v2-example-sales-qtysold-greater-than-parameter"></a>

次のクエリは、販売数量が `${numberoforders}` で指定された パラメータよりも大きい売上を検索します。パラメータ値が `7` の場合、結果は 60 行です。クエリを実行すると、クエリエディタ v2 は、SQL 文のパラメータの値を収集するための**[クエリの実行フォーム]** ウィンドウを表示します。

```
select salesid, qtysold
from sales 
where qtysold > ${numberoforders}
order by 2;
```

以下に、結果の一部を示します。

```
salesid	qtysold
20005	8
21279	8
130232	8
42737	8
74681	8
67103	8
105533	8
91620	8
121552	8
...
```

### 例: 一時テーブルの作成
<a name="query-editor-v2-example-create-temporary-table"></a>

次の文は、テンポラリテーブル*イベントセールス*から情報を選択して*[セールス]* および *[イベント]* テーブル。

```
create temporary table eventsalestemp as
select eventname, count(salesid) totalorders, sum(pricepaid) totalsales
from sales, event
where sales.eventid=event.eventid
group by eventname;
```

### 例: 一時テーブルからの選択
<a name="query-editor-v2-example-select-from-temporary-table"></a>

次の文は、一時テーブル *[eventsalestemp]* から、イベント、総注文数、総売上高を総注文数の順に選択します。

```
select eventname,  totalorders,  totalsales
from eventsalestemp
order by 2;
```

以下に、結果の一部を示します。

```
eventname          totalorders   totalsales
White Christmas        20          9352
Joshua Radin           38         23469
Martina McBride        50         52932
Linda Ronstadt         56         35043
Indigo Girls           57         45399
Beach Boys             58         30383
...
```

# Amazon Redshift のノートブック
<a name="query-editor-v2-notebooks"></a>

ノートブックを使用すると、1 つのドキュメント内で複数の SQL クエリを編成、注釈付け、共有できます。ノートブックには、複数の SQL クエリセルと Markdown セルを追加できます。ノートブックは、複数のクエリセルと Markdown セルを使用して、データ分析に関連するクエリと説明を 1 つのドキュメントにグループ化する方法を提供します。Markdown 構文を使用してテキストを追加し、外観の形式を設定して、データ分析タスクのコンテキストと追加情報を提供できます。ノートブックは、チームのメンバーと共有することが可能です。

ノートブックを使用するには、ノートブックの権限を IAM プリンシパル (IAM ユーザーまたは IAM ロール) に追加する必要があります。ベストプラクティスとして、アクセス許可ポリシーを IAM ロールにアタッチし、それを必要に応じてユーザーやグループに割り当てることをお勧めします。詳細については、「[Amazon Redshift での Identity and Access Management](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-authentication-access-control.html)」を参照してください。権限は、クエリエディタ v2 管理ポリシーのいずれかに追加できます。詳細については、「[クエリエディタ v2 へのアクセス](query-editor-v2-getting-started.md#query-editor-v2-configure)」を参照してください。

ノートブックのセルを順番にすべて実行できます。ノートブックの SQL クエリセルには、クエリエディタのタブとほとんど同じ機能があります。詳細については、「[Amazon Redshift を使用したクエリの作成](query-editor-v2-query-run.md)」を参照してください。以下は、クエリエディタのタブとノートブックの SQL セルの違いです。
+ ノートブックには SQL ステートメントで `Explain` を実行するコントロールはありません。
+ ノートブックの SQL セルごとに 1 つのグラフのみを作成できます。

クエリエディタ v2 で作成したファイルにノートブックをエクスポートおよびインポートできます。ファイル拡張子は `.ipynb` で、ファイルサイズは最大 5 MBです。SQL セルと Markdown セルはファイルに保存されます。クラスターまたはワークグループとデータベースは、エクスポートされたノートブックに保存されません。インポートしたノートブックを開くと、クラスターまたはワークグループ、およびそれを実行するデータベースを選択したことになります。SQL セルを実行したら、[Results] (結果) タブで現在の結果ページをグラフとして表示するかどうかを選択できます。クエリの結果セットは、ノートブックには保存されません。

# ノートブックの作成
<a name="query-editor-v2-notebooks-create"></a>

ノートブックを作成すると、1 つのドキュメント内で複数の SQL クエリを編成、注釈付け、共有できます。

**ノートブックを作成するには**

1. ナビゲーターメニューから、[エディタ] アイコン (![\[Horizontal lines representing redacted or censored text.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-align-left.png)) を選択します。

1. プラスアイコン (![\[Plus sign icon representing an addition or new item action.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/add-plus.png)) を選択し、**[ノートブック]** を選択します。

   デフォルトでは、ノートブックに SQL クエリセルが表示されます。

1. SQL クエリセルで、以下のいずれかの操作を行います。
   + クエリを入力します。
   + コピーしたクエリを貼り付けます。

1. (オプション) プラスのアイコン (![\[Plus sign icon representing an addition or new item action.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/add-plus.png)) を選択し、次に **[Markdown]** をクリックして、標準の Markdown 構文を使用して説明または解説のためのテキストの提供が可能な Markdown セルを追加します。

1. (オプション) プラスのアイコン (![\[Plus sign icon representing an addition or new item action.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/add-plus.png))、**[SQL]** の順に選択し、SQL セルを挿入します。

ノートブックの名前は鉛筆 (![\[Pencil icon representing an editing or writing function.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-edit.png)) アイコンで変更できます。

メニューアイコン (![\[Three dots arranged horizontally, representing an ellipsis or "more" menu icon.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-more.png)) から、ノートブックで次のオペレーションを実行することもできます。
+ ![\[Share\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-share.png) **[Share with my team]** (チームと共有) — タグで定義されているとおりにノートブックをチームと共有します。ノートブックをチームと共有するには、プリンシパルタグ `sqlworkbench-team` をアカウントの残りのチームメンバーと同じ値に設定します。たとえば、管理者は `accounting-team` の値を会計部門のすべての人のために設定します。例については、「[クエリエディタv2 を使用するために必要なアクセス許可](redshift-iam-access-control-identity-based.md#redshift-policy-resources.required-permissions.query-editor-v2)」を参照してください。
+ ![\[Export\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-export.png) **[Export]** (エクスポート) — ノートブックを `.ipynb` 拡張子の付いたローカルファイルにエクスポートします。
+ ![\[Import query\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-import.png) **[クエリのインポート]** – ローカルファイルからノートブックのセルにクエリをインポートします。`.sql` および `.txt` 拡張子を持つファイルをインポートできます。
+  ![\[Save\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-floppy-disk.png) **[Save version]** (バージョンを保存) — ノートブックのバージョンを作成します。ノートブックのバージョンを確認するには、保存したノートブックに移動して **[Version history]** (バージョン履歴) を開きます。
+  ![\[Duplicate\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-duplicate.png) **[Duplicate]** (複製) — ノートブックのコピーを作成し、新しいノートブックタブで開きます。
+  ![\[Shortcuts\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-key-command.png) **[Shortcuts]** (ショートカット) — ノートブックの作成時に使用できるショートカットを表示します。

# ノートブックへのインポート
<a name="query-editor-v2-notebooks-import"></a>

ノートブック全体または個々の SQL セルをクエリエディタ v2 ノートブックにインポートできます。

ノートブック全体をローカルファイルから **[マイノートブック]** にインポートするには、![\[Import\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-import.png) **[インポート]** を選択し、**[ノートブックのインポート]** を選択します。ノートブックを含む `.ipynb` ファイルに移動します。ノートブックは、現在開いているノートブックフォルダにインポートされます。これで、ノートブックエディタを使用してノートブックを開くことができます。

ローカルファイルからノートブックの SQL セルにクエリをインポートするには、![\[Import\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-import.png) **[インポート]** を選択し、**[クエリのインポート]** を選択します。**[クエリのインポート]** ウィンドウで、画面の指示に従って、新しいノートブックまたは既存のノートブックにクエリとしてインポートできるファイルとフォルダを選択します。ファイルには、`.sql` または `.txt` の拡張子が必要です。各クエリは最大 10,000 文字です。既存のノートブックに追加するときは、**[保存されたノートブック]** リストにあるすべてのノートブックから、どのノートブックに追加するかを選択します。インポートされたクエリは、ノートブックの最後に SQL セルとして追加されます。新しいノートブックを選択するときは、ノートブックの名前を選択すると、現在開いている [保存されたノートブック] フォルダに作成されます。

**注記**  
TextEdit アプリケーションを使用して macOS で `.sql` ファイルを作成すると、ファイルに隠し拡張子が追加される問題が発生する可能性があります。例えば、TextEdit で作成された `Test.sql` という名前のファイルが `Test.sql.rtf` として保存される可能性があります。クエリエディタ v2 は、`.rtf` 拡張子のファイルをサポートしていません。ただし、TextEdit を使用して `.sql` ファイルを作成し、プレーンテキストファイルとして保存した場合、ファイルには追加の非表示の `.txt` 拡張子が付きます。例えば、`Text.sql` という名前のファイルが `Text.sql.txt` として保存される場合があります。`.rtf` 拡張子とは異なり、クエリエディタ v2 は `.txt` 拡張子を持つファイルをサポートしているため、ノートブックにクエリをインポートするときに `Text.sql.txt` がサポートされます。

ノートブックのデモについては、次の動画をご覧ください。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/GNahyu7j98M/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/GNahyu7j98M)


# AWS Glue Data Catalog に対するクエリの実行
<a name="query-editor-v2-glue"></a>

クエリエディタ v2 を使用して、特定の SQL コマンドを使用し、このセクションで説明されているアクセス許可を付与することで、AWS Glue Data Catalog にカタログ化されたデータをクエリできます。デフォルトでは、AWS Glue Data Catalog は、`awsdatacatalog` という名前のクエリエディタ v2 のデータベースとして表示されます。AWS Glue Data Catalog に対するクエリの実行は、すべての Amazon Redshift AWS リージョンで利用できるわけではありません。この機能が使用可能かどうかは、SHOW コマンドを使用して確認します。AWS Glue の詳細については、*AWS Glue デベロッパーガイド* の「[What is AWS Glue?](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)」を参照してください。

**注記**  
AWS Glue Data Catalog に対するクエリの実行は、Amazon Redshift RA3 のノードタイプのクラスターと Amazon Redshift Serverless でのみサポートされています。

データウェアハウスを設定し、以下の SQL コマンドを使用してカタログ化された AWS Glue データベースのオブジェクトを表示できます。
+ SHOW — 現在接続されているデータウェアハウスに `awsdatacatalog` がマウントされているかを表示します。例えば、`data_catalog_auto_mount` パラメータ値を表示するには、次を実行します。

  ```
  SHOW data_catalog_auto_mount;
  ```

  詳細については、「Amazon Redshift データベース開発者ガイド」の「[SHOW](https://docs.aws.amazon.com/redshift/latest/dg/r_SHOW.html)」を参照してください。**
+ ALTER SYSTEM — `data_catalog_auto_mount` のシステムレベルの設定を変更します。例えば、`data_catalog_auto_mount` パラメータ値を `on` に変更するには、次を実行します。

  ```
  ALTER SYSTEM SET data_catalog_auto_mount = on;
  ```

  この変更は、プロビジョニングされたクラスターが再起動されるか、サーバーレスワークグループが自動的に一時停止して再開されたときに有効になります。詳細については、「Amazon Redshift データベース開発者ガイド」の「[ALTER SYSTEM](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_SYSTEM.html)」を参照してください。**
+ SHOW SCHEMAS — スキーマのリストを表示します。`awsdatacatalog` という名前のデータベース内のスキーマは、AWS Glue Data Catalogでカタログ化されている AWS Glue データベースを表します。例えば、これらのスキーマを表示するには、次を実行します。

  ```
  SHOW SCHEMAS FROM DATABASE awsdatacatalog;
  ```

  詳細については、「Amazon Redshift データベース開発者ガイド」の「[SHOW SCHEMAS](https://docs.aws.amazon.com/redshift/latest/dg/r_SHOW_SCHEMAS.html)」を参照してください。**
+ SHOW TABLES — スキーマ内のテーブルを一覧表示します。例えば、スキーマ `myglue` にある、`awsdatacatalog` という AWS Glue Data Catalogのデータベース内のテーブルを表示するには、次を実行します。

  ```
  SHOW TABLES FROM SCHEMA awsdatacatalog.myschema;
  ```

  詳細については、「Amazon Redshift データベース開発者ガイド」の「[SHOW TABLES](https://docs.aws.amazon.com/redshift/latest/dg/r_SHOW_TABLES.html)」を参照してください。**
+ SHOW COLUMNS – テーブル内の列を一覧表示します。例えば、スキーマ `myglue` とテーブル `mytable` にある、`awsdatacatalog` という AWS Glue Data Catalogのデータベース内の列を表示するには、次を実行します。

  ```
  SHOW COLUMNS FROM TABLE awsdatacatalog.myglue.mytable;
  ```

  詳細については、「Amazon Redshift データベース開発者ガイド」の「[SHOW COLUMNS](https://docs.aws.amazon.com/redshift/latest/dg/r_SHOW_COLUMNS.html)」を参照してください。**

**IAM ユーザーまたはロールに対し、AWS Glue Data Catalog にクエリを実行する権限を付与するには、**

1. ツリービューペインで、**[データベースのユーザー名とパスワード]** による認証方法を使用して、プロビジョニングされたクラスターまたはサーバーレスワークグループの初期データベースに接続します。例えば、クラスターまたはワークグループの作成時に使用した管理者ユーザーとパスワードを使用して、`dev` データベースに接続します。

1. エディタタブで以下の SQL ステートメントを実行して、IAM ユーザーに AWS Glue Data Catalog へのアクセス権を付与します。

   ```
   GRANT USAGE ON DATABASE awsdatacatalog to "IAM:myIAMUser"
   ```

   ここで、*IAM:myIAMUser* は、AWS Glue Data Catalog に USAGE 権限を付与したい IAM ユーザーです。または、USAGE 権限を、IAM ロールの *IAMR:myIAMRole* に付与することもできます。

1. ツリービューペインで、以前に作成したクラスターまたはワークグループへの接続を編集または削除します。次のいずれかの方法で、クラスターまたはワークグループに接続します。
   + クラスターから `awsdatacatalog` データベースにアクセスするには、認証方法として、**[IAM ID を使用した一時的な認証情報]** を使用する必要があります。認証方法の詳細については、「[Amazon Redshift データベースに接続する](query-editor-v2-connecting.md)」を参照してください。この認証方法を接続ウィンドウに表示するには、クエリエディタ v2 の管理者がアカウントの **[アカウント設定]** を構成することが必要になる場合があります。
   + ワークグループから `awsdatacatalog` データベースに接続するには、認証方法として **[フェデレーションユーザー]** を使用する必要があります。認証方法の詳細については、「[Amazon Redshift データベースに接続する](query-editor-v2-connecting.md)」を参照してください。

1. 権限が付与されたら、IAM ID を使用して、ご自分の AWS Glue Data Catalog に対して SQL を実行できます。

接続後、クエリエディタ v2 を使用して、AWS Glue Data Catalog でカタログ化されたデータをクエリできます。クエリエディタ v2 のツリービューペインで、クラスターまたはワークグループと `awsdatacatalog` データベースを選択します。エディタまたはノートブックペインで、正しいクラスターまたはワークグループが選択されていることを確認します。選択するデータベースは、最初の Amazon Redshift データベース (`dev` など) でなければなりません。クエリの作成については、「[Amazon Redshift を使用したクエリの作成](query-editor-v2-query-run.md)」と「[Amazon Redshift のノートブックNotebooks](query-editor-v2-notebooks.md)」を参照してください。指定されたデータベース `awsdatacatalog` は、アカウント内の外部データカタログデータベースを参照するために予約されています。`awsdatacatalog` データベースに対するクエリは読み取り専用です。SELECT ステートメントでテーブルを参照するには、3 句構成の表記を使用してください。最初の部分はデータベース名、2 番目の部分は AWS Glue データベース名、3 番目の部分は AWS Glue テーブル名です。

```
SELECT * FROM awsdatacatalog.<aws-glue-db-name>.<aws-glue-table-name>;
```

AWS Glue Data Catalog データを読み取って Amazon Redshift テーブルにデータを入力するさまざまなシナリオを実行できます。

次の SQL 例では、AWS Glue で定義されている 2 つのテーブルを結合します。

```
SELECT pn.emp_id, alias, role, project_name 
FROM "awsdatacatalog"."empl_db"."project_name_table" pn, 
"awsdatacatalog"."empl_db"."project_alias_table" pa
WHERE pn.emp_id = pa.emp_id;
```

次の SQL 例では、Amazon Redshift テーブルを作成し、2 つの AWS Glue テーブルを結合したデータをそのテーブルに入力します。

```
CREATE TABLE dev.public.glue AS
SELECT pn.emp_id, alias, role, project_name 
FROM "awsdatacatalog"."empl_db"."project_name_table" pn, 
"awsdatacatalog"."empl_db"."project_alias_table" pa
WHERE pn.emp_id = pa.emp_id;
```

## Amazon S3 テーブルに対するクエリの実行 (プレビュー）
<a name="query-editor-v2-glue-s3-tables"></a>

クエリエディタ v2 を使用して、AWS Glue Data Catalog にマウントされた Amazon S3 テーブルカタログに保持されているデータをクエリできます。Amazon S3 テーブルカタログは、作成時に AWS Glue Data Catalog にマウントされ、同じアカウントの同じ AWS リージョン 内のすべてのプロビジョニング済みクラスターとサーバーレスワークグループで外部データベースとして自動的に表示されます。Amazon Redshift を使用した Amazon S3 テーブルへのアクセスの詳細については、「Amazon Simple Storage Service ユーザーガイド」の「[Accessing Amazon S3 tables with Amazon Redshift](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-redshift.html)」を参照してください。

# データレイクのクエリ
<a name="query-editor-v2-querying-data-lake"></a>

このチュートリアルの一連のタスクに従って、Amazon S3 データレイク内のデータをクエリできます。まず、[AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/components-overview.html#data-catalog-intro)内の外部データベースを参照する外部スキーマを作成します。作成後、Amazon S3 データレイク内のデータをクエリすることができます。

## デモ: データレイクをクエリする
<a name="query-editor-v2-example-data-lake-demo"></a>

データレイクのクエリ方法を学ぶには、次の動画をご覧ください。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/-pyy0qNmEKo/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/-pyy0qNmEKo)


## 前提条件
<a name="query-editor-v2-querying-data-lake-prerequisites"></a>

クエリエディタ v2 でデータレイクの作業をする前に、お使いの Amazon Redshift 環境で以下が設定済みであることを確認してください。
+ AWS Glue を使用して Amazon S3 データをクローリングし、AWS Lake Formation のデータカタログを有効にします。
+ AWS Lake Formation に対して AWS Glue が有効化されているデータカタログを使用して、Amazon Redshift の IAM ロールを作成します。この手順の詳細については、「[AWS Lake Formation に対し有効化されている AWS Glue Data Catalog を使用して、Amazon Redshift の IAM ロールを作成するには](https://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum-create-role.html#spectrum-get-stared-create-role-lake-formation)」を参照してください。Redshift Spectrum と Lake Formation の詳細については、「[AWS Lake Formation で Redshift Spectrum を使用する](https://docs.aws.amazon.com/redshift/latest/dg/spectrum-lake-formation.html)」を参照してください。
+ Lake Formation データベースでクエリを実行するテーブルの SELECT 権限を付与します。この手順の詳細については、「[Lake Formation データベースでクエリを実行するテーブルの SELECT 権限を付与するには](https://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum-create-role.html#spectrum-get-started-grant-lake-formation-table)」を参照してください。

  Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) の **[許可]** セクションの **[データレイクの許可]** ページで、IAM ロール、AWS Glue データベース、テーブルに適切な権限があることを確認できます。
+ 接続しているユーザーが、Amazon Redshift データベースにスキーマを作成してデータレイク内のデータにアクセスする権限を持っていることを確認します。クエリエディタ v2 でデータベースに接続するときは、データベースユーザーまたは IAM ユーザーなどの認証情報を含む認証方法を選択します。接続ユーザーには、`superuser` などの適切な権限とデータベース権限が必要です。クラスターまたはワークグループを作成した Amazon Redshift `admin` ユーザーには `superuser` 権限があり、スキーマを作成して Redshift データベースを管理できます。クエリエディタ v2 でデータベースに接続する方法の詳細については、「[Amazon Redshift データベースに接続する](query-editor-v2-connecting.md)」を参照してください。

## 外部スキーマの作成
<a name="query-editor-v2-create-external-schema"></a>

Amazon S3 データレイク内のデータをクエリするには、まず外部スキーマを作成します。外部スキーマは、[AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/components-overview.html#data-catalog-intro)内の外部データベースを参照します。

1. クエリエディタ v2 の **[エディタ]** ビューで、![\[Create\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-add.png)**[作成]** を選択して、**[スキーマ]** を選択します。

1. **[スキーマ名]** を入力します。

1. **[スキーマタイプ]** では、**[外部]** を選択します。

1. **[データカタログ]** 詳細内の **[リージョン]** は、デフォルトで Redshift データベースが置かれている AWS リージョン に設定されます。

1. 外部スキーマのマッピング先で、AWS Glue テーブルへの参照を含む** AWS Glue データベース**を選択します。

1. Amazon S3 上のデータをクエリするために必要な許可を持つ、Amazon Redshift 用 **[IAM ロール]**を選択します。

1. オプションとして、データカタログへのアクセス許可を持つ **IAM ロール**を選択します。

1. **[スキーマの作成]** を選択します。

   ツリービューパネルのデータベースの下にスキーマが表示されます。

スキーマの作成時に、データベースへのアクセスが拒否されたというエラーが表示された場合は、接続しているユーザーがスキーマを作成するためのデータベース権限を持っているかどうかを確認してください。

## Amazon S3 データレイク内のデータのクエリ
<a name="query-editor-v2-query-data-lake"></a>

前の手順で作成したスキーマを使用します。

1. ツリービューパネルで、スキーマを選択します。

1. テーブル定義を表示するには、テーブルを選択します。テーブルの列とデータ型が表示されます。

1. テーブルをクエリするには、テーブルを選択して、右クリックでコンテキストメニューを表示し、**[テーブルの選択]** をクリックします。

1. **[エディタ]** でクエリを実行します。

   次の SQL 例は、`flightscsv` という名前の AWS Glue テーブルのすべての行をクエリするためにクエリエディタ v2 で生成されました。出力の列と行は、単純にするために切り捨てられています。

   ```
   SELECT * FROM "dev"."mydatalake_schema"."flightscsv";
                           
   year    quarter   month   dom  day_of_week   fl_date    unique_carrier  airline_id   carrier   tail_num   fl_num		
   2016    4         10      19   3             10/19/16   OO              20304        OO         N753SK    3086	 
   2016    4         10      19   3             10/19/16   OO              20304        OO         N753SK    3086	
   2016    4         10      19   3             10/19/16   OO              20304        OO         N778SK    3087		
   2016	4         10      19   3             10/19/16   OO              20304        OO         N778SK    3087	
   ...
   ```

# データ共有
<a name="query-editor-v2-datashare-using"></a>

別のクラスターのユーザーがデータをクエリできるように、データ共有を作成できます。共有するデータを含むクラスターは、*プロデューサー*クラスターと呼ばれます。共有するデータベースオブジェクトのデータ共有は、プロデューサークラスター上に作成します。スキーマ、テーブル、ビュー、および SQL ユーザー定義関数 (UDF) を共有できます。データを共有するクラスターは、*コンシューマー*クラスターと呼ばれます。コンシューマークラスターでは、データ共有からデータベースを作成します。その後コンシューマークラスターのユーザーは、データをクエリできます。詳細については、「*Amazon Redshift データベースデベロッパーガイド*」の「[Amazon Redshift でのデータ共有の開始方法](https://docs.aws.amazon.com/redshift/latest/dg/getting-started-datasharing.html)」を参照してください。

# データ共有の作成
<a name="query-editor-v2-create-datashare"></a>

プロデューサークラスターとして使用するクラスター上に、データ共有を作成します。データ共有に関する考慮事項の詳細については、「[Data sharing considerations in Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/datashare-considerations.html)」 (Amazon Redshift データベースデベロッパーガイド) の「*Amazon Redshift Database Developer Guide*」 (Amazon Redshift でのデータ共有に関する考慮事項) を参照してください。

1. 使用するプロデューサークラスター上のデータベースを選択します。

1. データ共有を作成します。例:

   ```
   create datashare mysource;
   ```

1. データ共有に対するアクセス許可を設定します。例:

   ```
   grant alter, share on datashare mysource to admin;
   ```

1. 共有するデータベースオブジェクトに対するアクセス許可を設定します。例:

   ```
   alter datashare mysource add schema public;
   ```

   ```
   alter datashare mysource add table public.event;
   ```

1. データ共有にアクセスするためのコンシューマークラスターの名前空間に対するアクセス許可を設定します。例:

   ```
   grant usage on datashare mysource to namespace '2b12345-1234-5678-9012-bb1234567890';
   ```

# データ共有の表示
<a name="query-editor-v2-show-datashare"></a>

プロデューサークラスターで作成したデータ共有を表示できます。

1. プロデューサークラスターを選択します。

1. データ共有を表示します。例:

   ```
   show datashares;
   ```

   ```
   share_name	share_owner	source_database		consumer_database	share_type	createdate	is_publicaccessible	share_acl	producer_account	producer_namespace
   test_datashare	100		db_producer		NULL			OUTBOUND	2/15/2022		FALSE		admin		123456789012		p1234567-8765-4321-p10987654321
   ```

# コンシューマーデータベースの作成
<a name="query-editor-v2-datashare-consumer"></a>

コンシューマークラスターでは、データ共有からデータベースを作成します。この手順では、同じアカウント内の 2 つのクラスター間でデータを共有する方法について説明します。AWS アカウント間でのデータ共有の詳細については、「[Amazon Redshift データベースデベロッパーガイド](https://docs.aws.amazon.com/redshift/latest/dg/across-account.html)」の「*AWS アカウント間でのデータ共有*」を参照してください。

SQL コマンドまたはクエリエディタ v2 のツリービューパネルを使用して、データベースを作成できます。

**SQL を使用するには**

1. アカウントのデータ共有とプロデューサークラスターの名前空間からデータベースを作成します。例:

   ```
   create database share_db from datashare mysource of account '123456789012' namespace 'p1234567-8765-4321-p10987654321'; 
   ```

1. ユーザーがデータベースとスキーマにアクセスできるよう、アクセス許可を設定します。例:

   ```
   grant usage on database share_db to usernames;
   ```

   ```
   grant usage on schema public to usernames;
   ```

**クエリエディタ v2 のツリービューパネルを使用するには**

1. ![\[Plus sign icon inside a circle, indicating an add or create action.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-add.png)**[作成]** を選択し、次に **[データベース]** を選択します。

1. **[データベース名]** を入力します。

1. (任意) **ユーザーとグループ** を選択し、**[データベースユーザー]** を選択します。

1. **[Create using a datashare]** (データ共有を使用して作成) を選択します。

1. データ共有を選択します。

1. **[データベースの作成]** を選択します。

   新しい ![\[datashare\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-datashare.png) **[datashare]** (データ共有) のデータベースが、クエリエディタ v2 のツリービューパネルに表示されます。

1. ユーザーがデータベースとスキーマにアクセスできるよう、アクセス許可を設定します。例:

   ```
   grant usage on database share_db to usernames;
   ```

   ```
   grant usage on schema public to usernames;
   ```

# データ共有オブジェクトのクエリ
<a name="query-editor-v2-query-datashare"></a>

コンシューマークラスターでは、オブジェクトのデータベース名、スキーマ名、オブジェクト名の 3 つの部分で表記される完全修飾オブジェクト名を使用して、データ共有オブジェクトをクエリできます。

1. クエリエディタ v2 のツリービューパネルで、スキーマを選択します。

1. テーブル定義を表示するには、テーブルを選択します。

   テーブルの列とデータ型が表示されます。

1. テーブルをクエリするには、テーブルを選択し、右クリックでコンテキストメニューを表示して **[Select table]** (テーブルを選択) をクリックします。

1. SELECT コマンドを使用してテーブルをクエリします。例:

   ```
   select top 10 * from test_db.public.event;
   ```

# クエリエディタ v2 でスケジュールされたクエリ
<a name="query-editor-v2-schedule-query"></a>

Amazon Redshift Query Editor V2 を使用すると、SQL クエリを自動化してスケジュールに従って実行させることができます。スケジュール設定されたクエリとは、指定された時間または間隔で自動的に実行される SQL ステートメントであり、定期的に繰り返されるデータオペレーションや分析タスクを効率的に管理できます。バッチ処理の効率化、定期的なレポートの生成、Amazon Redshift 環境内のデータパイプラインのメンテナンスなどを行う場合は、クエリのスケジュールを設定できます。

スケジュールされたクエリを使用すると、抽出、変換、ロード (ETL) ワークフローの自動化、最新のインサイトでのダッシュボードの更新、さまざまなデータ管理ルーチンの運用が容易になります。次のページでは、Amazon Redshift ワークロードを最適化するためにスケジュール設定されたクエリを作成、設定、管理するプロセスについて詳しく説明します。

# クエリエディタ v2 を使用したクエリスケジュールの作成
<a name="query-editor-v2-schedule-query-create"></a>

Amazon Redshift クエリエディタ v2 で SQL ステートメントを実行するスケジュールを作成します。ビジネスニーズに合った時間間隔で SQL ステートメントを実行するスケジュールを作成します。スケジュールされたクエリが実行される時間になると、クエリは、Amazon EventBridge によって開始され、Amazon Redshift Data API を使用します。

**SQL ステートメントを実行するスケジュールを作成するには**

1. **[エディタ]** ![\[Editor\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-align-left.png) ビューで ![\[Schedule\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-calendar.png) **[スケジュール]** を選択して、SQL ステートメントを実行するスケジュールを作成します。

1. スケジュールを定義する場合は、次の情報を指定します。
   + クエリの実行に必要なアクセス許可を持つ IAM ロール。この IAM ロールは、クラスターまたはワークグループにもアタッチされます。
   + クラスターまたはワークグループへのアクセスを承認する AWS Secrets Manager または一時的な認証情報の認証値。これらの認証方法は Data API でサポートされています。詳細については、「[スケジュールされたクエリの認証](query-editor-v2-schedule-query-authentication.md)」を参照してください。
   + データベースが存在するクラスターまたはワークグループ。
   + クエリを実行するデータを含むデータベースの名前。
   + スケジュールされたクエリの名前とその説明。クエリエディタ v2 は、指定のスケジュールされたクエリ名の先頭に「QS2-」を付けます。クエリエディタ v1 は、スケジュールされたクエリ名の先頭に「QS-」を付けます。
   + スケジュールで実行される SQL ステートメント。
   + スケジュールの頻度とリピートオプション、またはスケジュールを定義する cron 形式の値。詳細については、*Amazon CloudWatch Events ユーザーガイド*の [Cron 式](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions)を参照してください。
   + オプションで、標準の Amazon SNS 通知を有効にして、スケジュールされたクエリをモニタリングできます。場合によっては、Amazon SNS 通知に提供する E メールアドレスを確認する必要があります。Amazon SNS 通知の E メールアドレスを確認するリンクが送信されるため、E メールをチェックしてください。詳細については、[Amazon Simple Notification Service デベロッパーガイド](https://docs.aws.amazon.com/sns/latest/dg/sns-email-notifications.html)の「*E メール通知*」を参照してください。クエリが実行されているにもかかわらず、SNS トピックにパブリッシュされているメッセージが表示されない場合は、*Amazon EventBridge ユーザーガイド*の「[ルールは実行されるが、Amazon SNS トピックにいずれのメッセージもパブリッシュされない](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-troubleshooting.html#eb-no-messages-published-sns)」を参照してください。

1. **[クエリをスケジュール]** を選択してスケジュールを保存して有効にし、スケジュールを**[スケジュールされたクエリ]** ビューのクエリのリストに追加します。

**[スケジュールされたクエリ]** ![\[Scheduled queries\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/qev2-calendar.png) ビューには、クラスターとワークグループのすべてのスケジュールされたクエリが一覧表示されます。このビューでは、スケジュールクエリの詳細の表示、スケジュールの有効化または無効化、スケジュールの編集、およびスケジュールされたクエリの削除を行うことができます。クエリの詳細を表示すると、スケジュールとともにクエリを実行した履歴も表示できます。

**注記**  
スケジュールのクエリは、24 時間の **[スケジュール履歴]** 内でのみ実行できます。スケジュールに従って実行されるクエリは、クエリエディタ v2 の **[クエリ履歴]** ビューには表示されません。

## クエリのスケジュールのデモ
<a name="query-editor-v2-schedule-query-demo"></a>

クエリのスケジューリングのデモについては、次の動画をご覧ください。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/gTw0XUpO8sw/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/gTw0XUpO8sw)


# クエリをスケジュールするアクセス許可の設定
<a name="query-editor-v2-schedule-query-permissions"></a>

クエリをスケジュールするには、スケジュールを定義する AWS Identity and Access Management (IAM) ユーザーとスケジュールに関連付けられている IAM ロールが Amazon EventBridge と Amazon Redshift Data API を使用する IAM アクセス許可で設定されている必要があります。スケジュールされたクエリから E メールを受信するには、オプションで指定する Amazon SNS 通知も設定する必要があります。

以下では、AWS マネージドポリシーを使用してアクセス許可を付与するタスクについて説明しますが、環境によっては、許可されるアクセス許可の範囲の絞り込みが必要な場合があります。

クエリエディタ v2 にログインしている IAM ユーザーの場合は、IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を使用して IAM ユーザーを編集します。
+ Amazon Redshift とクエリエディタ v2 のオペレーションを実行するアクセス許可に加えて、IAM ユーザーに `AmazonEventBridgeFullAccess` および `AmazonRedshiftDataFullAccess` AWS マネージドポリシーをアタッチします。
+ または、ロールにアクセス許可を割り当て、そのロールをユーザーに割り当てます。

  スケジュールされたクエリを定義するときに指定する IAM ロールのリソース ARN に `sts:AssumeRole` アクセス許可を与えるポリシーをアタッチします。ロールの引き受けについての詳細は、*IAM ユーザーガイド*の「[ロールを切り替えるアクセス許可をユーザーに付与する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_permissions-to-switch.html)」を参照してください。

  次の例では、アカウント `123456789012` で IAM ロール `myRedshiftRole` を引き受けるアクセス許可ポリシーを示します。IAM ロール `myRedshiftRole` は、スケジュールされたクエリを実行するクラスターまたはワークグループにアタッチする IAM ロールでもあります。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "AssumeIAMRole",
              "Effect": "Allow",
              "Action": "sts:AssumeRole",
              "Resource": [
                  "arn:aws:iam::123456789012:role/myRedshiftRole"
              ]
          }
      ]
  }
  ```

------

  クエリのスケジュールに使用する IAM ロールの信頼ポリシーを更新して、IAM ユーザーがロールを引き受けられるようにします。

  ```
  {
              "Sid": "AssumeRole",
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::123456789012:user/myIAMusername"
              },
              "Action": "sts:AssumeRole"
          }
      ]
  }
  ```

スケジュールされたクエリの実行を許可するように指定した IAM ロールについては、IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を使用して IAM ロールを編集します。
+ `AmazonRedshiftDataFullAccess` および `AmazonEventBridgeFullAccess` AWS マネージドポリシーを IAM ロールにアタッチします。`AmazonRedshiftDataFullAccess` マネージドポリシーは、キー `RedshiftDataFullAccess` でタグ付けされた Redshift Serverless ワークグループに対してのみ `redshift-serverless:GetCredentials` アクセス許可を付与します。

# スケジュールされたクエリの認証
<a name="query-editor-v2-schedule-query-authentication"></a>

クエリをスケジュールする場合は、SQL の実行時に、次のいずれかの認証方法を使用します。各メソッドでは、クエリエディタ v2 の入力の異なる組み合わせが必要です。これらの認証方法は、SQL ステートメントの実行に使用される Data API によってサポートされています。

クエリを実行するために使用されるデータベースユーザーまたはロールには、適切なデータベース権限が必要です。例えば、テーブル `mytable` に `IAMR:MyRedshiftQEv2Scheduler` 権限を付与するには、次の SQL コマンドを実行します。

```
GRANT all ON TABLE mytable TO "IAMR:MyRedshiftQEv2Scheduler";
```

クラスターまたはワークグループ内のデータベースユーザーのリストを表示するには、システムビュー `PG_USER_INFO` にクエリを実行します。

**注記**  
 クエリをスケジュールする対象のすべての Redshift Serverless ワークグループに、キー `RedshiftDataFullAccess` でタグ付けする必要があります。詳細については、「[Amazon Redshift Data API へのアクセスの認可](data-api-access.md)」を参照してください。  
ワークグループにタグを付ける代わりに、`redshift-serverless:GetCredentials` を許可するインラインポリシーを (スケジュールと一緒に指定する) IAMロールに追加できます。例えば、次のようになります。  

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "UseTemporaryCredentialsForAllServerlessWorkgroups",
            "Effect": "Allow",
            "Action": "redshift-serverless:GetCredentials",
            "Resource": [
                "arn:aws:redshift-serverless:*:*:workgroup/*"
            ]
        }
    ]
}
```

**AWS Secrets Manager**  
この方法を使用して、AWS Secrets Manager に保存されている **secret-arn** のシークレット値を指定します。このシークレットには、データベースに接続するための認証情報が含まれます。クラスターまたはワークグループの作成時に、適切な認証情報を使用してシークレットを作成したとします。シークレットにはキー `RedshiftDataFullAccess` のタグを付ける必要があります。タグキーがない場合は、AWS Secrets Manager コンソールを使用して追加します。シークレットの作成方法の詳細については、「[データベース接続認証情報のシークレットの作成](redshift-secrets-manager-integration-create.md)」を参照してください。  
最小のアクセス許可についての詳細は、*AWS Secrets Manager ユーザーガイド*の「[AWS Secrets Manager を使用したシークレットの作成と管理](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html)」を参照してください。

**一時的な認証情報**  
このメソッドでは、クラスター内のデータベースに接続するときに、**データベース名**と**データベースユーザー**の値を指定します。**データベース名**は、ワークグループ内のデータベースに接続するときだけに指定する必要があります。  
クラスターに接続する場合、`AmazonRedshiftDataFullAccess` ポリシーは、`redshift_data_api_user` という名前のデータベースユーザーに `redshift:GetClusterCredentials` へのアクセス許可を付与します。別のデータベースユーザーを使用して SQL ステートメントを実行する場合は、クラスターにアタッチされた IAM ロールにポリシーを追加して `redshift:GetClusterCredentials` を許可します。次のポリシー例では、データベースユーザー `awsuser` と `myuser` を許可しています。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "UseTemporaryCredentialsForAllDbUsers",
            "Effect": "Allow",
            "Action": "redshift:GetClusterCredentials",
            "Resource": [
                "arn:aws:redshift:*:*:dbuser:*/awsuser",
                "arn:aws:redshift:*:*:dbuser:*/myuser"
            ]
        }
    ]
}
```

# スケジュールクエリ履歴を表示するアクセス許可の設定
<a name="query-editor-v2-schedule-query-view-history"></a>

ユーザーにスケジュールクエリ履歴の表示を許可するには、スケジュールと一緒に指定する IAM ロールの**信頼関係**を編集してアクセス許可を追加します。

次に示すのは、IAM ユーザー *myIAMusername* にスケジュールクエリの履歴を表示できるようにする IAM ロールの信頼ポリシーの例です。IAM ユーザーに `sts:AssumeRole` アクセス許可を付与する代わりに、このアクセス許可を IAM ロールに付与するように選択できます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "redshift.amazonaws.com",
                    "redshift-serverless.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "events.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Sid": "AssumeRole",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/myIAMusername"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

# スケジュールされたクエリのモニタリング
<a name="query-editor-v2-schedule-query-sns"></a>

E メール通知を送信するように指定した Amazon SNS トピックについては、クエリエディタ v2 を使用して Amazon SNS トピックを作成します。これを行うには、**[SNS 通知]** セクションに移動し、モニタリングを **[オンにする]** を選択して、**[SNS トピックの作成]** でトピックを作成します。クエリエディタ v2 は Amazon SNS トピックを作成し、Amazon EventBridge のアクセスポリシーにサービスプリンシパルを追加します。次に示すのは、Amazon SNS トピックで作成した**アクセスポリシー**の例です。この例では、AWS リージョン *us-west-2*、AWS アカウント *123456789012*、および Amazon SNS トピック *select-version-pdx-testunload* を使用しています。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "Allow_Publish_Events",
      "Effect": "Allow",
      "Principal": {
        "Service": "events.amazonaws.com"
      },
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:us-west-2:123456789012:select-version-pdx-testunload"
    }
  ]
}
```

------

スケジュールされたクエリが実行されると、Amazon SNS は AWS 通知 E メールを送信します。次は、Amazon SNS 通知トピック *may25a-SNS* を使って AWS アカウント *123456789012* の AWS リージョン *eu-north-1* で実行された、スケジュールされたクエリ *QS2-may25a* について、*myemail@example.com* に送信された E メールの例です。

```
{"version":"0","id":"8e4323ec-5258-7138-181b-91290e30ff9b","detail-type":"Scheduled Event","source":"aws.events","account":"123456789012","time":"2023-05-25T15:22:00Z",
                    "region":"eu-north-1","resources":["arn:aws:events:eu-north-1:123456789012:rule/QS2-may25a"],"detail":{}}

--
If you wish to stop receiving notifications from this topic, please click or visit the link below to unsubscribe:
https://sns.eu-north-1.amazonaws.com/unsubscribe.html?SubscriptionArn=arn:aws:sns:eu-north-1:123456789012:may25a-SNS:0c1a3d05-39c2-4507-bc3d-47250513d7b0&Endpoint=myemail@example.com

Please do not reply directly to this email. If you have any questions or comments regarding this email, please contact us at https://aws.amazon.com/support
```

# クエリのスケジュールのセットアップに関するトラブルシューティング
<a name="query-editor-v2-schedule-query-troubleshooting"></a>

クエリのスケジュールに問題がある場合は、次の点を考慮してください。

**クエリが実行していない**  
スケジュールで使用している IAM ロールに、一時的なクラスター認証情報を取得するアクセス許可があるかどうかを確認します。プロビジョニングされたクラスターのアクセス許可は `redshift:GetClusterCredentialsWithIAM` です。Redshift Serverless ワークグループのアクセス許可は `redshift-serverless:GetCredentials` です。

**スケジュールされた履歴が表示されない**  
AWS コンソールへのログインに使用する IAM ユーザーまたは IAM ロールが、クエリのスケジュールに使用された IAM ロールの信頼ポリシーに追加されていませんでした。  
スケジュールされたクエリに AWS Secrets Manager を使用し、接続する場合は、シークレットがキー `RedshiftDataFullAccess` でタグ付けされていることを確認します。  
スケジュールされたクエリが AWS Secrets Manager 接続を使用している場合、クエリのスケジュールに使用される IAM ロールには、`SecretsManagerReadWrite` 管理ポリシーと同等のものがロールにアタッチされている必要があります。

**クエリ履歴のステータスが `Failed` である**  
クエリが失敗した理由の詳細については、SYS\$1QUERY\$1HISTORY システムビューを参照してください。よくある問題は、クエリの実行に使用したデータベースユーザーまたはロールに SQL の実行に必要な権限がないことです。詳細については、「[スケジュールされたクエリの認証](query-editor-v2-schedule-query-authentication.md)」を参照してください。  
次の SQL は、SYS\$1QUERY\$1HISTORY ビューにクエリを実行して、失敗したクエリを返します。  

```
SELECT user_id, query_id, transaction_id, session_id, database_name, query_type, status, error_message, query_text 
FROM sys_query_history
WHERE status = 'failed';
```
失敗した特定のスケジュールされたクエリの詳細を確認するには、「[スケジュールされたクエリの結果を AWS CloudShell で表示](query-editor-v2-schedule-query-troubleshooting-cloudshell.md)」を参照してください。

# スケジュールされたクエリの結果を AWS CloudShell で表示
<a name="query-editor-v2-schedule-query-troubleshooting-cloudshell"></a>

AWS CloudShell を使用してスケジュールクエリの詳細を確認できます。次の手順に示す、AWS CLI コマンドを実行するための適切なアクセス許可を持っている必要があります。

**スケジュールされたクエリの結果を表示するには**

1. AWS コンソールで、AWS CloudShell コマンドプロンプトを開きます。AWS CloudShell の詳細については、「AWS CloudShell ユーザーガイド」の「[AWS CloudShell とは](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)」を参照してください。**

1. スケジュールされたクエリの IAM ロールを引き受けます。ロールを引き受けるには、スケジュールされたクエリに関連付けられた IAM ロールをクエリエディタ v2 で見つけて、AWS CLI コマンドを AWS CloudShell で使用します。例えば、ロール `scheduler` の場合は、AWS STS コマンドを入力して、スケジュールされたクエリで使用されているロールを引き受けます。

   ```
   aws sts assume-role --role-arn "arn:aws:iam::123456789012:role/scheduler" --role-session-name "scheduler-test" 
   ```

   返される認証情報は次のようになります。

   ```
   "Credentials": {
   "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
   "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
   "SessionToken": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY...",        
   "Expiration": "2023-08-18T18:19:44+00:00"
   },
   "AssumedRoleUser": {
   "AssumedRoleId": "AROA35B2NH6WBTP7ONL4E:scheduler-test",
   "Arn": "arn:aws:sts::123456789012:assumed-role/scheduler/scheduler-test"
   }
   }
   ```

1. IAM ロールを引き受けたときに表示される認証情報を使用して、AWS CLI で環境変数を作成します。これらのトークンは、有効期限が切れる前に使用する必要があります。例えば、AWS CloudShell に次の内容を入力します。

   ```
   export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
   export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   export AWS_SESSION_TOKEN=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY...
   ```

1. 失敗したクエリのエラーを表示するには、ステートメントを記述する AWS CLI コマンドを実行します。SQL ステートメントの ID は、クエリエディタ v2 でスケジュールされたクエリの **[スケジュール履歴]** セクションに表示される [**ID**] からのものです。

   ```
   aws redshift-data describe-statement --id 130d2620-05d2-439c-b7cf-815d9767f513
   ```

   この例の場合、スケジュールされた SQL `select * from users limit 100` は、`users` テーブルが存在しないという SQL エラーになります。

   ```
   {
   "CreatedAt": "2023-08-18T17:39:15.563000+00:00",
   "Duration": -1,
   "Error": "ERROR: relation \"users\" does not exist",
   "HasResultSet": false,
   "Id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
   "QueryString": "select * from users limit 100\n—RequestID=a1b2c3d4-5678-90ab-cdef-EXAMPLE22222; TraceID=1-633c5642-4039308d03f3a0ba53dbdf6f",
   "RedshiftPid": 1073766651,
   "RedshiftQueryId": 0,
   "ResultRows": -1,
   "ResultSize": -1,
   "Status": "FAILED",
   "UpdatedAt": "2023-08-18T17:39:16.116000+00:00",
   "WorkgroupName": "default"
   }
   ```

# クエリ結果の視覚化
<a name="query-editor-v2-charts"></a>

クエリを実行して結果が表示された後 **[Chart]** (チャート) をオンにすると、結果をグラフィックで視覚化して表示することができます。以下のコントロールを使用して、グラフの内容、構造、および外観を定義できます。

![\[Plus sign icon representing an addition or new item action.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/add-plus.png) トレース  
グラフ内の関連するグラフィックマークのセットを表します。グラフには複数のトレースを定義できます。

タイプ  
トレースタイプを定義して、データを以下のいずれかとして表すことができます。  
+ 散布プロットまたはバブルチャートのための散布図。
+ 垂直または水平の棒でデータのカテゴリを表す棒グラフ。
+ 塗りつぶされた領域を定義する面グラフ。
+ 棒を使用して度数分布を表すヒストグラム。
+ 各スライスが全体の割合を表す、データの円形表現のための円グラフ。
+ プロセスのさまざまな段階のデータを表すファネルグラフまたはファネル面グラフ。
+ X 軸 (通常、時間間隔を表す) に沿って始値、高値、安値、および終値を表す財務データによく使用される OHLC (open-high-low-close) グラフ。
+ 時系列に沿ってカテゴリの値の範囲を表すローソク足チャート。
+ 一連の中間値を介して初期値がどのように増減するかを表すウォーターフォールグラフ。値は、時間間隔またはカテゴリを表すことができます。
+ 経時的な値の変化を表す折れ線グラフ。

X 軸  
X 軸に沿ってプロットする値が含まれるテーブル列を指定します。記述的な値が含まれる列は、多くの場合、ディメンションデータを表します。定量的な値が含まれる列は、多くの場合、事実データを表します。

Y 軸  
Y 軸に沿ってプロットする値が含まれるテーブル列を指定します。記述的な値が含まれる列は、多くの場合、ディメンションデータを表します。定量的な値が含まれる列は、多くの場合、事実データを表します。

サブプロット  
グラフデータの追加の表現を定義できます。

変換  
変換を定義して、トレースデータをフィルタリングすることができます。分割変換は、単一のソーストレースから複数のトレースを表示するために使用します。集計変換は、トレースを平均値または最小値として表示するために使用します。ソート変換は、トレースをソートするために使用します。

全体的な外観  
背景色、余白の色、パレットをデザインするためのカラースケール、テキストのスタイルとサイズ、タイトルのスタイルとサイズ、およびモードバーのデフォルトを設定できます。ドラッグ、クリック、およびホバーの操作を定義できます。メタテキストを定義できます。トレース、軸、凡例、および注釈のデフォルト外観を定義できます。

**チャートを作成するには**

1. クエリを実行し、結果を取得します。

1. **[チャート]** をオンにします。

1. **[トレース]** を選択し、データの視覚化を開始します。

1. チャートスタイルは次のいずれかを選択します。
   + 散布図
   + 棒グラフ
   + 面グラフ
   + ヒストグラム
   + 円グラフ
   + ファネルグラフ
   + ファネル面グラフ
   + OHLC (open-high-low-close) グラフ
   + ローソク足チャート
   + ウォーターフォールグラフ
   + 線グラフ

1. **[スタイル]** をクリックして、色、軸、凡例、注釈などの外観をカスタマイズします。テキスト、図形、画像を追加できます。

1. **[注釈]** をクリックして、テキスト、図形、画像を追加します。

1. チャートの表示を更新するには **[更新]** をクリックします。**[全画面表示]** を選択すると、チャート表示が展開します。

## 例: 円グラフを作成してクエリ結果を視覚化する
<a name="query-editor-v2-example-pie-chart"></a>

次の例では、サンプルデータベースの *売上* テーブルを使用します。詳細については、「*Amazon Redshift データベースデベロッパーガイド*」の「[サンプルデータベース](https://docs.aws.amazon.com/redshift/latest/dg/c_sampledb.html)」を参照してください。

以下は、円グラフのデータを提供するために実行するクエリです。

```
select top 5 eventname, count(salesid) totalorders, sum(pricepaid) totalsales 
from sales, event
where sales.eventid=event.eventid group by eventname
order by 3;
```

**売上合計で上位のイベントの円グラフを作成するには**

1. クエリを実行します。

1. クエリ結果領域で **[チャート]** をオンにします。

1. **[トレース]** を選択します。

1. **[タイプ]** で、**[円グラフ]** を選択します。

1. **[値]** で *[totalsales]* を選択します。

1. **[ラベル]** で、*[eventname]* を選択します。

1. **[スタイル]** の次に **[一般]** を選択します。

1. **[Colorscales]** (カラースケール) で **[Categorical]**、**[Pastel2]** を選択します。

![\[円グラフ\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/pie-chart.png)


## 例: 収益と売上を比較するための複合グラフを作成する
<a name="query-editor-v2-example-revenue-sales-chart"></a>

この例の手順を実行して、収益データの棒グラフと売上データの折れ線グラフを組み合わせたグラフを作成します。以下の例は、tickit サンプルデータベースの *Sales* テーブルを使用します。詳細については、「*Amazon Redshift データベースデベロッパーガイド*」の「[サンプルデータベース](https://docs.aws.amazon.com/redshift/latest/dg/c_sampledb.html)」を参照してください。

以下は、グラフのデータを提供するために実行するクエリです。

```
select eventname, total_price, total_qty_sold
from  (select eventid, total_price, total_qty_sold, ntile(1000) over(order by total_price desc) as percentile
       from (select eventid, sum(pricepaid) total_price, sum(qtysold) total_qty_sold
             from   tickit.sales
             group by eventid)) Q, tickit.event E
       where Q.eventid = E.eventid
       and percentile = 1
order by total_price desc;
```

**収益と売上を比較するための複合グラフを作成する**

1. クエリを実行します。

1. クエリ結果領域で **[チャート]** をオンにします。

1. *[トレース o]* で、**[タイプ]** に **[Bar]** (棒グラフ) を選択します。

1. **[X]** には *eventname* を選択します。

1. **[Y]** には *total\$1price* を選択します。

   棒グラフの X 軸に沿ってイベント名が表示されます。

1. **[Style]** (スタイル) で **[Traces]** (トレース) を選択します。

1. **[Name]** (名前) に *Revenue* と入力します。

1. **[Style]** (スタイル) で、**[Axes]** (軸) を選択します。

1. **[Titles]** (タイトル) には、**[Y]** を選択して *Revenue* と入力します。

   左側の Y 軸に、ラベル *Revenue* が表示されます。

1. **[Structure]** (構造) で **[Trace]** (トレース) を選択します。

1. ![\[Plus sign icon representing an addition or new item action.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/add-plus.png) **[Trace]** (トレース) を選択します。

   トレース 1 のオプションが表示されます。

1. **[タイプ]** には **[Line]** (線グラフ) を選択します。

1. **[X]** には *eventname* を選択します。

1. **[Y]** には *total\$1qty\$1sold* を選択します。

1. **[Axes To Use]** (使用する軸) で、**[Y Axis]** (Y 軸) に ![\[Plus sign icon representing an addition or new item action.\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/add-plus.png) を選択します。

   **[Y Axis]** (Y 軸) が *Y2* を表示します。

1. **[Style]** (スタイル) で、**[Axes]** (軸) を選択します。

1. **[TITLE]** (タイトル) で **[Y2]** を選択します。

1. **[Name]** (名前) に *Sales* と入力します。

1. **[LINES]** (線) で、*Y:Sales* を選択します。

1. **[Axis Line]** (軸線) で **[Show]** (表示) を選択し、**[Position]** (位置) に **[Right]** (右) を選択します。

![\[収益と売上グラフ\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/chart-revenue-sales.png)


## デモ: Amazon Redshift クエリエディタ v2 を使用してビジュアライゼーションを構築する
<a name="query-editor-v2-demo-visualizations"></a>

ビジュアライゼーションの構築方法のデモについては、次の動画をご覧ください。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/-FYqTIER-6U/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/-FYqTIER-6U)


# チームとしての共同作業と共有
<a name="query-editor-v2-team"></a>

クエリをチームと共有できます。

チームは、クエリエディタ v2 リソースを共同作業し、共有する一連のユーザーに対して定義されます。管理者は IAM ロールにタグを追加することでチームを作成できます。詳細については、「[クエリエディタv2 を使用するために必要なアクセス許可](redshift-iam-access-control-identity-based.md#redshift-policy-resources.required-permissions.query-editor-v2)」を参照してください。

# クエリの保存と閲覧
<a name="query-editor-v2-save-queries"></a>

クエリをチームと共有する前に、クエリを保存してください。保存されたクエリを表示および削除できます。

**クエリを保存するには**

1. クエリを準備し **[保存]** を選択します。

1. クエリのタイトルを入力します。

1. [**保存**] を選択します。

**保存されたクエリを閲覧するには**

1. ナビゲーションペインから **[クエリ]** を選択します。

1. **[マイクエリ]**、**[Shared by me]** (私が共有したクエリ) または **[Shared to my team]** (チームで共有したクエリ) を表示することができます。これらのクエリは、個別のクエリとして表示することも、作成したフォルダ内に表示することもできます。

# クエリの共有
<a name="query-editor-v2-query-share"></a>

チーム内でクエリを共有できます。保存されたクエリの履歴の表示や、クエリのバージョンを管理することもできます。

クエリをチームと共有するには、プリンシパルタグ `sqlworkbench-team`をアカウントの残りのチームメンバーと同じ値に設定します。たとえば、管理者は `accounting-team` の値を会計部門のすべての人のために設定します。例については、「[クエリエディタv2 を使用するために必要なアクセス許可](redshift-iam-access-control-identity-based.md#redshift-policy-resources.required-permissions.query-editor-v2)」を参照してください。

**チームとクエリを共有するには**

1. ナビゲーションペインから **[クエリ]** を選択します。

1. 共有したいクエリを右クリックしてコンテキストメニューを開き、**[チームと共有]** を選択します。

1. クエリを共有する 1 つまたは複数のチームを選択し、**[共有オプションの保存]** を選択します。

# クエリのバージョン管理
<a name="query-editor-v2-query-versions"></a>

SQL クエリを保存するたびに、クエリエディタ v2 は新しいバージョンとして保存します。以前のバージョンのクエリの閲覧、クエリのコピーと保存、クエリの復元ができます。

**クエリバージョンを管理するには**

1. ナビゲーションペインから **[クエリ]** を選択します。

1. 操作したいクエリを右クリックして、コンテキストメニューを開きます。

1. **[バージョン履歴]** を選択して、クエリのバージョンの一覧を開きます。

1. **[バージョン履歴]** ページでは、以下のことが実行できます。
   + **[Revert to selected]** (選択済みに戻す) — 選択したバージョンに戻して、このバージョンで作業を続行します。
   + **[Save selected as]** (選択済みを名前を付けて保存) — エディタで新しいクエリを作成します。

# Amazon Redshift クエリエディタ v1 を使用したデータベースのクエリの実行
<a name="query-editor"></a>

Amazon Redshift クラスターによってホストされているデータベースでクエリを実行するには、クエリエディタを使用することが最も簡単な方法です。クラスターを作成した後、Amazon Redshift コンソールでクエリエディタを使用することで、すぐにクエリを実行できます。

**注記**  
Amazon Redshift サーバーレスでは、この元のクエリエディタを使用してデータをクエリすることはできません。Amazon Redshift クエリエディタ v2 を代わりに使用してください。

2021 年 2 月、更新されたクエリエディターがデプロイされ、クエリエディターを使用する権限が変更されました。新しいクエリエディターは、Amazon Redshift データ API を使用してクエリを実行します。AWS マネージド AWS Identity and Access Management (IAM) ポリシーである `AmazonRedshiftQueryEditor` ポリシーが更新され、必要なアクセス許可が含まれるようになりました。カスタム IAM ポリシーがある場合は、必ず更新してください。`AmazonRedshiftQueryEditor` をガイドとして使用してください。`AmazonRedshiftQueryEditor` への変更には、以下が含まれます。
+ クエリエディタのステートメント結果を管理する権限には、ステートメント所有者ユーザーが必要です。
+ Secrets Manager を使用してデータベースに接続する権限が追加されました。

詳細については、「[Amazon Redshift コンソールのクエリエディタを使用するために必要なアクセス許可](redshift-iam-access-control-identity-based.md#redshift-policy-resources.required-permissions.query-editor)」を参照してください。

新しいクエリエディターからクラスターに接続する場合、次の 2 つの認証方法のいずれかを使用できます。

クエリエディタを使用して、以下の操作を実行できます。
+ 単一の SQL ステートメントクエリを実行する。
+ 最大 100 MB の結果セットをカンマ区切り値 (CSV) ファイルにダウンロードする。
+ 再利用するためにクエリを保存する。ヨーロッパ (パリ) リージョン、アジアパシフィック (大阪) リージョン、アジアパシフィック (香港) リージョン、中東 (バーレーン) リージョンでは、クエリを保存できません。
+ ユーザー定義テーブルのクエリ実行の詳細を表示する。
+ 将来の時間に実行するようにクエリをスケジュールします。
+ クエリエディタで作成したクエリの履歴を表示します。
+ 拡張 VPC ルーティングを使用してクラスターに対してクエリを実行します。

## クエリエディタの考慮事項
<a name="query-editor-considerations"></a>

クエリエディタを使用するときは、クエリを操作する方法について次の操作を行います。
+ クエリの最大期間は 24 時間です。
+ クエリ結果の最大サイズは 100 MB です。100 MB を超えるレスポンスデータが返されると、その呼び出しは終了します。
+ クエリ結果の最大保持時間は 24 時間です。
+ クエリステートメントの最大サイズは 100 KB です。
+ クラスターは、Amazon VPC サービスに基づいて Virtual Private Cloud (VPC) で作成する必要があります。
+ クエリエディタでトランザクションを使用することはできません。トランザクションの詳細については、*Amazon Redshift データベースデベロッパーガイド*の「[BEGIN](https://docs.aws.amazon.com/redshift/latest/dg/r_BEGIN.html)」を参照してください。
+ クエリは最大 3,000 文字保存することができます。

# SQL クライアントツールを使用して Amazon Redshift データウェアハウスクラスターに接続する
<a name="connecting-to-cluster"></a>

Java Database Connectivity (JDBC)、Python、および Open Database Connectivity (ODBC) 接続を介して、SQL クライアントツールから Amazon Redshift データウェアハウスに接続できます。Amazon Redshift では、SQL クライアントツールまたはライブラリを提供またはインストールしません。これらのツールまたはライブラリを使用してデータウェアハウス内のデータを操作するには、それらをクライアントコンピュータまたは Amazon EC2 インスタンスにインストールします。JDBC、Python、または ODBC ドライバーをサポートするほとんどの SQL クライアントツールが使用可能です。

このトピックの最後にあるセクションのリストでは、JDBC、Python、または ODBC による接続を使用するために、ご自分のクライアントコンピュータまたは Amazon EC2 インスタンスを設定するプロセスを順を追って説明します。また、サーバーへのクライアント接続に関連するセキュリティオプションについても説明します。さらに、[Amazon Redshift RSQL](https://docs.aws.amazon.com/redshift/latest/mgmt/rsql-query-tool.html) などの SQL クライアントツールの設定と接続に関する情報も以下に記載されています。ビジネスインテリジェンスツールをまだ使用していない場合は、これらのツールを試すことができます。また、このセクションでは、データに接続する方法を理解することもできます。最後に、データウェアハウスに接続しようとして問題が発生した場合は、トラブルシューティング情報を参照して解決策を特定できます。

## クライアントツールとの接続に関する推奨事項
<a name="connecting-to-cluster-recommendations"></a>

IP アドレスを使用して Redshift クラスターに接続する場合、停止または接続が切断され、クラスターが新しいアベイラビリティーゾーン (AZ) でオンラインになる際に、別のダウンタイムが発生する可能性があります。それでも IP アドレスを使用してアプリケーションを Redshift に接続する場合は、クラスターの仮想プライベートクラウド (VPC) エンドポイントにアタッチされたプライベート IP アドレスを使用してください。これは、**[プロパティ]** タブの **[ネットワークとセキュリティ]** のクラスターの詳細に表示されます。

**注記**  
アプリケーションがリーダーノードの IP アドレスを使用して Redshift クラスターにアクセスする場合、推奨されるベストプラクティスは、クラスターエンドポイント URL を使用するように変更することです。詳細については、「[Amazon Redshift での接続の設定](https://docs.aws.amazon.com/redshift/latest/mgmt/configuring-connections.html)」を参照してください。

**Topics**
+ [クライアントツールとの接続に関する推奨事項](#connecting-to-cluster-recommendations)
+ [Amazon Redshift での接続の設定](configuring-connections.md)
+ [接続のセキュリティオプションを設定する](connecting-ssl-support.md)
+ [クライアントツールおよびコードからの接続](connecting-via-client-tools.md)
+ [認証プロファイルを使用して Amazon Redshift に接続する](connecting-with-authentication-profiles.md)
+ [Amazon Redshift での接続の問題のトラブルシューティング](troubleshooting-connections.md)

# Amazon Redshift での接続の設定
<a name="configuring-connections"></a>

次のセクションでは、SQL クライアントツールからクラスターに接続するために、JDBC、Python、および ODBC での接続を設定する方法について説明します。このセクションでは、JDBC、Python、ODBC での接続を設定する方法について説明します。また、Secure Sockets Layer (SSL) とサーバー証明書を使用して、クライアントとサーバー間の通信を暗号化する方法についても説明します。

## Amazon Redshift 用の JDBC、Python、および ODBC ドライバー
<a name="connecting-drivers"></a>

クラスター内のデータを操作するには、クライアントコンピュータまたはインスタンスから接続できるようにするために、JDBC、Python、または ODBC のドライバーが必要です。JDBC、Python、もしくは ODBC サポートする SQL クライアントツールを使用するために、JDBC、Python、ODBC のデータアクセス API オペレーションのいずれかを使用するように、アプリケーションを記述します。

Amazon Redshift では JDBC、Python、および ODBC ドライバーをダウンロードできます。これらのドライバーは サポート によってサポートされています。PostgreSQL ドライバーはテストされておらず、Amazon Redshift チームによってサポートされていません。Amazon Redshift クラスターに接続するときは、Amazon Redshift 固有のドライバーを使用してください。Amazon Redshift ドライバーには以下の利点があります。
+ IAM、SSO、およびフェデレーション認証のサポート。
+ 新しい Amazon Redshift データ型のサポート。
+ 認証プロファイルのサポート。
+ Amazon Redshift の機能強化に伴うパフォーマンスの向上。

 JDBC および ODBC ドライバーをダウンロードし、クラスターへの接続を設定する方法の詳細については、[Amazon Redshift での JDBC ドライバーバージョン 2.x による接続の構成](jdbc20-install.md)、[Amazon Redshift Python コネクタ](python-redshift-driver.md)および [Amazon Redshift での ODBC ドライバーのバージョン 2.x による接続の設定](odbc20-install.md) を参照してください。

IAM ロールのベストプラクティスを含む IAM ID の管理の詳細については、「[Amazon Redshift での Identity and Access Management](redshift-iam-authentication-access-control.md)」を参照してください。

# クラスター接続文字列を検索する
<a name="connecting-connection-string"></a>

SQL クライアントツールでクラスターに接続するには、クラスター接続文字列が必要です。クラスター接続文字列は、Amazon Redshift コンソールのクラスターの詳細ページにあります。

**クラスターの接続文字列を見つけるには**

1. AWS マネジメントコンソール にサインインして、[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/) で Amazon Redshift コンソールを開きます。

1. ナビゲーションメニューで **[クラスター]** を選択し、リストからクラスター名を選択してその詳細を開きます。

1. **JDBC URL** および **ODBC URL** 接続文字列は、追加の詳細とともに、[**General information (一般情報)**] セクションで手に入れることができます。各文字列はクラスターが実行される AWS リージョンに基づき決まります。適切な接続文字列の横にあるアイコンをクリックしてコピーします。

クラスターエンドポイントに接続するには、[DescribeClusters API リクエスト](https://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeClusters.html)のクラスターエンドポイント URL を使用できます。クラスターエンドポイント URL の例は次のとおりです。

```
mycluster.cmeaswqeuae.us-east-2.redshift.amazonaws.com
```

クラスターのカスタムドメイン名を設定している場合は、それを使用してクラスターに接続することもできます。カスタムドメイン名の作成の詳細については、「[カスタムドメイン名の設定](https://docs.aws.amazon.com/redshift/latest/mgmt/connecting-connection-CNAME-connect.html)」を参照してください。

**注記**  
接続するときは、クラスターノードの IP アドレスや VPC エンドポイントの IP アドレスを使用しないでください。不必要な停止を避けるため、必ず Redshift エンドポイントを使用してください。例外として、カスタムドメイン名を使用する場合に限り、エンドポイント URL を使用しません。詳細については、「[クライアント接続にカスタムドメイン名を使用する](https://docs.aws.amazon.com/redshift/latest/mgmt/connecting-connection-CNAME.html)」を参照してください。

# Amazon Redshift での JDBC ドライバーバージョン 2.x による接続の構成
<a name="jdbc20-install"></a>

JDBC ドライバーバージョン 2.x による接続を使用すると、多くのサードパーティー SQL クライアントツールから Amazon Redshift クラスターに接続できます。Amazon Redshift JDBC コネクタは、オープンソースのソリューションを提供します。ソースコードの閲覧、機能拡張のリクエスト、問題の報告、およびコントリビューションを行うことができます。

JDBC ドライバーの変更に関する最新情報については、「[変更ログ](https://github.com/aws/amazon-redshift-jdbc-driver/blob/master/CHANGELOG.md)」を参照してください。

デフォルトでは、Amazon Redshift JDBC ドライバーは TCP キープアライブを使用して接続がタイムアウトしないように設定されています。ドライバーがキープアライブパケットの送信を開始するタイミングを指定することや、この機能を無効にするために、接続 URL 内に関連するプロパティを設定することができます。接続 URL の構文の詳細については、[接続 URL の構築](jdbc20-build-connection-url.md)を参照してください。


| プロパティ | 説明 | 
| --- | --- | 
|  `TCPKeepAlive`  |  TCP キープアライブをオフにするには、このプロパティを `FALSE` に設定します。  | 

**Topics**
+ [Amazon Redshift JDBC ドライバーのバージョン 2.1 をダウンロードする](jdbc20-download-driver.md)
+ [Amazon Redshift JDBC ドライバーバージョン 2.2 のインストール](jdbc20-install-driver.md)
+ [JDBC URL の取得](jdbc20-obtain-url.md)
+ [接続 URL の構築](jdbc20-build-connection-url.md)
+ [Apache Maven を使用して JDBC 接続を設定する](configure-jdbc20-connection-with-maven.md)
+ [認証と SSL の設定](jdbc20-configure-authentication-ssl.md)
+ [ログ記録の構成](jdbc20-configuring-logging.md)
+ [データ型変換](jdbc20-data-type-mapping.md)
+ [プリペアドステートメントのサポートを使用する](jdbc20-prepared-statement-support.md)
+ [JDBC ドライバーバージョン 2.2 と 1.x での相違点](jdbc20-jdbc10-driver-differences.md)
+ [JDBC ドライバーバージョン 2.x 用の初期化 (.ini) ファイルの作成](jdbc20-ini-file.md)
+ [JDBC ドライバーバージョン 2.x の設定オプション](jdbc20-configuration-options.md)
+ [JDBC ドライバーバージョン 2.x の以前のバージョン](jdbc20-previous-driver-version-20.md)

# Amazon Redshift JDBC ドライバーのバージョン 2.1 をダウンロードする
<a name="jdbc20-download-driver"></a>

**注記**  
Amazon Redshift JDBC 2.x ドライバーはスレッドセーフな設計ではありません。同じ接続を同時に使用しようとするスレッドが 2 つ以上あると、デッドロック、エラー、誤った結果、またはその他の予期しない動作が発生する可能性があります。  
マルチスレッドアプリケーションを使用している場合は、同時アクセスを避けるために、ドライバーへのアクセスを同期することをお勧めします。

Amazon Redshift には、JDBC 4.2 API と互換性のあるツール用のドライバーが用意されています。このドライバーのクラス名は `com.amazon.redshift.Driver` です。

JDCBC ドライバーをインストールする方法、JDBC ドライバーライブラリを参照する方法、ドライバークラスを登録する方法の詳細については、以下のトピックを参照してください。

Amazon Redshift JDBC ドライバーバージョン 2.x を使用するコンピュータごとに、Java ランタイム環境 (JRE) 8.0 がインストールされていることを確認します。

データベース認証用に Amazon Redshift JDBC ドライバーを使用する場合、Java クラスパスに AWS SDK for Java 1.11.118 以降があることを確認してください。AWS SDK for Java をインストールしていない場合は、JDBC 4.2 互換のドライバーならびに AWS SDK 用のドライバー依存ライブラリが格納された、ZIP ファイルをダウンロードします。
+ [JDBC 4.2 互換ドライバーバージョン 2.x および AWS SDK ドライバー依存ライブラリ](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.5/redshift-jdbc42-2.2.5.zip) 

  この ZIP ファイルには、JDBC 4.2 互換ドライバーバージョン 2.xと、AWS SDK for Java 1.x のドライバー依存ライブラリファイルが含まれています。依存 jar ファイルを JDBC ドライバーと同じ場所に解凍します。CLASSPATH に含める必要があるのは、JDBC ドライバのみです。

  この ZIP ファイルには、AWSSDK for Java 1.x のすべては集録されていません。ただしこれには、AWS Identity and Access Management(IAM) データベース認証に必要な、AWSSDK for Java 1.x のドライバ依存ライブラリが含まれています。

  IAM データベース認証に必要な AWS SDK では、この Amazon Redshift JDBC ドライバーを使用します。

  AWS SDK for Java 1.x の完全版をインストールするには、*AWS SDK for Java デベロッパーガイド*の「[AWS SDK for Java 1.x](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/welcome.html)」を参照してください。
+ [JDBC 4.2 互換ドライバーバージョン 2.x (AWS SDK なし)](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.5/redshift-jdbc42-2.2.5.jar) 

JDBC ドライバーバージョン 2.x の、ソフトウェアライセンスと変更ログファイルを確認します。
+ [JDBC ドライバーバージョン 2.x ライセンス](https://github.com/aws/amazon-redshift-jdbc-driver/blob/master/LICENSE) 
+ [JDBC ドライバーバージョン 2.x 変更ログ](https://github.com/aws/amazon-redshift-jdbc-driver/blob/master/CHANGELOG.md)

JDBC ドライバーバージョン 1.2.27.1051 以降では Amazon Redshift のストアドプロシージャをサポートしています。詳細については、*Amazon Redshift データベースデベロッパーガイド*の [Amazon Redshift でのストアドプロシージャの作成](https://docs.aws.amazon.com/redshift/latest/dg/stored-procedure-overview.html)を参照してください。

# Amazon Redshift JDBC ドライバーバージョン 2.2 のインストール
<a name="jdbc20-install-driver"></a>

AWS SDK 用の、Amazon Redshift JDBC 4.2 互換ドライバーバージョン 2.x とドライバー依存ライブラリをインストールするには、ZIP アーカイブからファイルを抽出し任意のディレクトリに格納します。

Amazon Redshift JDBC 4.2 互換ドライバーバージョン 2.x を (AWS SDKを含めずに) インストールするには、JAR ファイルを任意のディレクトリにコピーします。

Amazon Redshift JDBC ドライバーを使用して Amazon Redshift データストアにアクセスするには、以下に説明するように設定を実行する必要があります。

**Topics**
+ [JDBC ドライバーライブラリの参照](jdbc20-driver-libraries.md)
+ [ドライバークラスの登録](jdbc20-register-driver-class.md)

# JDBC ドライバーライブラリの参照
<a name="jdbc20-driver-libraries"></a>

データへの接続に使用する JDBC アプリケーションまたは Java コードは、ドライバー JAR ファイルにアクセスする必要があります。アプリケーションまたはコードで、ZIP アーカイブから抽出したすべての JAR ファイルを指定します。

## JDBC アプリケーションでのドライバーの使用
<a name="jdbc20-use-driver-jdbc-app"></a>

JDBC アプリケーションは、通常、ドライバーライブラリファイルのリストを追加するための一連の設定オプションを提供します。提供されたオプションを使用して、ZIP アーカイブのすべての JAR ファイルをアプリケーションのドライバー設定の一部として含めます。詳細については、JDBC アプリケーションのドキュメントを参照してください。

## Java コードでのドライバーの使用
<a name="jdbc20-use-driver-java-code"></a>

すべてのドライバーライブラリファイルをクラスパスに含める必要があります。これは、Java ランタイム環境がクラスおよびその他のリソースファイルを検索するパスです。オペレーティングシステムでクラスパス設定をする場合は、適切な Java SE ドキュメントを参照し詳細を確認してください。
+ Windows の場合: [https://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html](https://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html)
+ Linux および Solaris: [https://docs.oracle.com/javase/7/docs/technotes/tools/solaris/classpath.html](https://docs.oracle.com/javase/7/docs/technotes/tools/solaris/classpath.html)
+ macOS: デフォルトの macOS クラスパスは、JDBC ドライバーがインストールされているディレクトリです。

# ドライバークラスの登録
<a name="jdbc20-register-driver-class"></a>

アプリケーションに適したクラスを登録していることを確認してください。Amazon Redshift JDBC ドライバーを Amazon Redshift データストアに接続するには、次のクラスを使用します。
+ `Driver` クラスは を拡張します。`java.sql.Driver`
+ `DataSource` クラスは `javax.sql.DataSource` と `javax.sql.ConnectionPoolDataSource` を拡張します。

ドライバーは、JDBC バージョンに依存しない次の完全修飾クラス名をサポートします。
+ `com.amazon.redshift.jdbc.Driver`
+ `com.amazon.redshift.jdbc.DataSource`

次の例は、DriverManager クラスを使用して JDBC 4.2 用の接続を確立する方法を示しています。

```
            private static Connection connectViaDM() throws Exception
{
Connection connection = null;
connection = DriverManager.getConnection(CONNECTION_URL);
return connection;
}
```

次の例では、`DataSource`クラスを使用して接続を確立する方法を示しています。

```
 private static Connection connectViaDS() throws Exception
{
Connection connection = null;
11
Amazon Redshift JDBC Driver Installation and Configuration Guide
DataSource ds = new com.amazon.redshift.jdbc.DataSource
();
ds.setURL(CONNECTION_URL);
connection = ds.getConnection();
return connection;
}
```

# JDBC URL の取得
<a name="jdbc20-obtain-url"></a>

SQL クライアントツールから Amazon Redshift クラスターに接続する前に、クラスターの JDBC URL を確認しておく必要があります。JDBC の URL 形式を次に示します。`jdbc:redshift://endpoint:port/database`

前述の形式のフィールドには、次の値があります。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/jdbc20-obtain-url.html)

JDBC URL の例を次に示します。`jdbc:redshift://examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev`

URL 値に次の URI 予約文字のいずれかが含まれている場合、値は URL エンコードされている必要があります。
+  ; 
+  \$1 
+  \$1 
+  \$1 
+  [ 
+  ] 
+  & 
+  = 
+  ? 
+  空のスペース 

例えば、`PWD` 値が `password:password` の場合、その値を使用する接続 URL は次のようになります。

`jdbc:redshift://redshift.company.us-west-1.redshift.amazonaws.com:9000/dev;UID=amazon;PWD=password%3Apassword`

JDBC 接続の取得方法については、「[クラスター接続文字列を検索する](connecting-connection-string.md)」を参照してください。

クライアントコンピューターがデータベースに接続できない場合、考えられる問題をトラブルシューティングすることができます。詳細については、「[Amazon Redshift での接続の問題のトラブルシューティング](troubleshooting-connections.md)」を参照してください。

# 接続 URL の構築
<a name="jdbc20-build-connection-url"></a>

接続 URL を使用して、アクセスしているデータストアに接続情報を指定します。以下は、Amazon Redshift JDBC ドライバーバージョン 2.x で使用する接続 URL の形式です。ここで、[Host] は Amazon Redshift サーバーのエンドポイントであり、[Port] は、サーバーがクライアントリクエストをリッスンするために使用する Transmission Control Protocol (TCP) のポート番号です。

```
jdbc:redshift://[Host]:[Port]
```

以下は、いくつかのオプション設定を指定する接続 URL の形式です。

```
jdbc:redshift://[Host]:[Port]/[database];[Property1]=[Value];
[Property2]=[Value];
```

URL 値に次の URI 予約文字のいずれかが含まれている場合、値は URL エンコードされている必要があります。
+  ; 
+  \$1 
+  \$1 
+  \$1 
+  [ 
+  ] 
+  & 
+  = 
+  ? 
+  空のスペース 

例えば、`PWD` 値が `password:password` の場合、その値を使用する接続 URL は次のようになります。

`jdbc:redshift://redshift.company.us-west-1.redshift.amazonaws.com:9000/dev;UID=amazon;PWD=password%3Apassword`

例えば、AWSの米国西部 (北カリフォルニア) リージョンにある、Amazon Redshift クラスターのポート 9000 に接続するとします。また、`dev` という名前のデータベースにアクセスし、データベースのユーザー名とパスワードを使用して接続を認証することもできます。この場合、次の接続 URL を使用します。

```
jdbc:redshift://redshift.company.us-west-1.redshift.amazonaws.com:9000/dev;UID=amazon;PWD=amazon
```

次の文字を使用して、残りの URL 文字列内の設定オプションを区切ることができます。
+ ;
+ ?

例えば、以下の URL 文字列はお互いに等価です。

```
jdbc:redshift://my_host:5439/dev;ssl=true;defaultRowFetchSize=100
```

```
jdbc:redshift://my_host:5439/dev?ssl=true;defaultRowFetchSize=100
```

次の文字を使用して、URL 文字列内で互いに設定オプションを区切ることができます。
+ ;
+ &

例えば、以下の URL 文字列はお互いに等価です。

```
jdbc:redshift://my_host:5439/dev;ssl=true;defaultRowFetchSize=100
```

```
jdbc:redshift://my_host:5439/dev;ssl=true&defaultRowFetchSize=100
```

次の URL の例では、ログレベル 6 とログのためのパスを指定しています。

```
jdbc:redshift://redshift.amazonaws.com:5439/dev;DSILogLevel=6;LogPath=/home/user/logs;
```

接続 URL ではプロパティを複製しないでください。

指定できる構成オプションの完全なリストについては、「[JDBC ドライバーバージョン 2.x の設定オプション](jdbc20-configuration-options.md)」を参照してください。

**注記**  
接続するときは、クラスターノードの IP アドレスや VPC エンドポイントの IP アドレスを使用しないでください。不必要な停止を避けるため、必ず Redshift エンドポイントを使用してください。例外として、カスタムドメイン名を使用する場合に限り、エンドポイント URL を使用しません。詳細については、「[クライアント接続にカスタムドメイン名を使用する](https://docs.aws.amazon.com/redshift/latest/mgmt/connecting-connection-CNAME.html)」を参照してください。

# Apache Maven を使用して JDBC 接続を設定する
<a name="configure-jdbc20-connection-with-maven"></a>

Apache Maven は、ソフトウェアプロジェクトを管理する包括的なツールです。AWS SDK for Java では、Apache Maven プロジェクトをサポートしています。詳細については、*AWS SDK for Javaデベロッパーガイド*の[[Apache Maven での SDK の使用](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-project-maven.html)]を参照してください。

Apache Maven を使用する場合、Amazon Redshift JDBC ドライバーを使用した Amazon Redshift クラスターへの接続を使用するようにプロジェクトを設定および構築できます。これを行うには、プロジェクトの `pom.xml` ファイルに JDBC ドライバーを依存関係として追加する必要があります。Maven を使用してプロジェクトを構築し JDBC 接続を使用するには、このセクションのステップに従ってください。

**Maven 依存関係として JDBC ドライバーを設定するには**

1. Amazon リポジトリまたは Maven Central リポジトリのいずれかを `pom.xml` ファイルのリポジトリセクションに追加します。
**注記**  
以下のコードの例の URL は、ブラウザーで使用するとエラーを返します。この URL は、Maven プロジェクトのコンテキストでのみ使用してください。

   接続に Secure Sockets Layer (SSL) を使用するには、`pom.xml`ファイルに次のリポジトリを追加します。

   ```
   <repositories>
       <repository>
         <id>redshift</id>
         <url>https://s3.amazonaws.com/redshift-maven-repository/release</url>
       </repository>
   </repositories>
   ```

   Maven Central のリポジトリの場合は、`pom.xml`ファイルに次を追加します。

   ```
   <repositories>
       <repository>
         <id>redshift</id>
         <url>https://repo1.maven.org/maven2</url>
       </repository>
   </repositories>
   ```

1. `pom.xml` ファイルの依存関係セクションで、使用するドライバーのバージョンを宣言します。

   Amazon Redshift には、JDBC 4.2 API と互換性のあるツール用のドライバーが用意されています。これらのドライバーでサポートされる機能については、[Amazon Redshift JDBC ドライバーのバージョン 2.1 をダウンロードする](jdbc20-download-driver.md)を参照してください。

   以下の例では、`driver-version`は実際のドライバーのバージョン (例えば `2.1.0.1`) に置き換えます。JDBC 4.2 互換ドライバの場合は、以下を使用します。

   ```
   <dependency>
      <groupId>com.amazon.redshift</groupId>
      <artifactId>redshift-jdbc42</artifactId>
      <version>driver-version</version>
   </dependency>
   ```

   このドライバーのクラス名は `com.amazon.redshift.Driver` です。

IAM データベース認証を使用する場合、Amazon Redshift Maven ドライバーには、次のオプションの依存関係が必要です。

```
<dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-core</artifactId>
      <version>1.12.23</version>
      <scope>runtime</scope>
      <optional>true</optional>
</dependency>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-redshift</artifactId>
      <version>1.12.23</version>
      <scope>runtime</scope>
      <optional>true</optional>
</dependency>
<dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-sts</artifactId>
      <version>1.12.23</version>
      <scope>runtime</scope>
      <optional>true</optional>
</dependency>
```

Amazon Redshift JDBC ドライバーを最新バージョンにアップグレードまたは変更するには、まず、依存関係のバージョンセクションをドライバーの最新バージョンに変更します。その後、以下で示すとおり、Maven Clean Plugin でプロジェクトをクリーニングします。

```
mvn clean
```

# 認証と SSL の設定
<a name="jdbc20-configure-authentication-ssl"></a>

不正なアクセスからデータを保護するために、Amazon Redshift データストアでは、すべての接続をユーザー認証情報を使用して認証する必要があります。一部のデータストアでは、一方向認証の有無にかかわらず、Secure Sockets Layer (SSL) プロトコル経由で接続を確立する必要があります。

Amazon Redshift JDBC ドライバーバージョン 2.x では、これらの認証プロトコルが完全にサポートされています。

ドライバーがサポートする SSL バージョンは、使用している JVM のバージョンによって異なります。Java の各バージョンでサポートされている SSL バージョンの詳細については、Java プラットフォームグループの製品管理ブログから [[TLS、SSL、および HTTPS の診断](https://blogs.oracle.com/java-platform-group/diagnosing-tls,-ssl,-and-https)]を参照してください。

接続に使用される SSL バージョンは、ドライバーとサーバーの両方でサポートされている最も高いバージョンであり、接続時に決定されます。

接続先の Amazon Redshift サーバーのセキュリティ要件に従って接続を認証するように、Redshift JDBC ドライバーバージョン 2.x を設定します。

接続を認証するには、常に Redshift ユーザー名とパスワードを入力する必要があります。SSL が有効で、サーバー上で必要であるかどうかに応じて、SSL 経由で接続するようにドライバーを設定する必要もあります。または、クライアント (ドライバー自体) がサーバーの身元を確認するために、一方向の SSL 認証を使用する場合もあります。

接続 URL でドライバーに構成情報を提供します。接続 URL の構文の詳細については、[接続 URL の構築](jdbc20-build-connection-url.md)を参照してください。

*SSL* は、Transport Layer Security と Secure Sockets Layer の両方の TLS/SSL を示します。このドライバーは、業界標準バージョンの TLS/SSL をサポートしています。

## IAM 認証の設定
<a name="jdbc20-configure-iam-authentication"></a>

IAM 認証を使用して Amazon Redshift サーバーに接続する場合は、データソース接続文字列の一部として次のプロパティを設定します。

 IAM 認証の詳細については、「[Amazon Redshift での Identity and Access Management](redshift-iam-authentication-access-control.md)」 を参照してください。

IAM 認証を使用するには、以下のいずれかの接続文字列形式を使用します。


| 接続文字列 | 説明 | 
| --- | --- | 
|  `jdbc:redshift:iam:// [host]:[port]/[db]`  |  通常の接続文字列。ドライバーは、ホストから ClusterID とリージョンを推測します。  | 
|  `jdbc:redshift:iam:// [cluster-id]: [region]/[db]`  |  ドライバーは、ClusterID とリージョンを指定して、ホストの情報を取得します。  | 
|  `jdbc:redshift:iam:// [host]/[db]`  |  デフォルトでドライバーはポート 5439 に設定され、ホストから ClusterID とリージョンを推測します。クラスターの作成、変更、または移行時に選択したポートに応じて、選択したポートへのアクセスを許可します。  | 

## プロファイルの指定
<a name="jdbc20-aws-credentials-profiles"></a>

IAM 認証を使用している場合は、プロファイル名の下で、必須またはオプションの追加接続プロパティを指定できます。これにより、接続文字列に特定の情報を直接入力することを回避できます。プロファイルのプロパティを使用して、接続文字列でプロファイル名を指定します。

プロファイルは AWS 認証情報ファイルに追加できます。このファイルのデフォルトの場所は、`~/.aws/credentials`です。

次の環境変数 `AWS_CREDENTIAL_PROFILES_FILE` でパスを設定することにより、デフォルト値を変更できます。

 プロファイルの詳細については、*AWS SDK for Java*の「[Working with AWS Credentials](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html)」を参照してください。

## インスタンスプロファイルの認証情報の使用
<a name="jdbc20-instance-profile-credentials"></a>

IAM ロールに関連付けられている Amazon EC2 インスタンスでアプリケーションを実行している場合は、インスタンスプロファイルの認証情報を使用して接続することができます。

これを行うには、前のテーブルで IAM 接続文字列形式のいずれかを使用し、dbuser 接続プロパティを、接続に使用する Amazon Redshift ユーザー名に設定します。

インスタンスプロファイルの詳細については、*IAM ユーザーガイド*の「[アクセス管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)」を参照してください。

## 認証情報プロバイダーの使用
<a name="jdbc20-aws-credentials-provider"></a>

ドライバーは、次のサービスからの認証情報プロバイダーのプラグインもサポートします。
+ AWS IAM アイデンティティーセンター
+ Active Directory フェデレーションサービス (ADFS)
+ JSON ウェブトークン (JWT) サービス
+ Microsoft Azure アクティブディレクトリ (AD) サービスと Browser Microsoft Azure Active Directory (AD) サービス
+ Okta サービス
+ PingFederate サービス 
+ Okta、Ping、ADFS などの SAML サービス用のブラウザ SAML

これらのサービスのいずれかを使用する場合は、接続 URL で次のプロパティを指定する必要があります。
+ **Plugin\$1Name** – 認証情報プロバイダーのプラグインクラスの完全修飾クラスパスです。
+ **IdP\$1Host:** – Amazon Redshift による認証に使用しているサービスのホストです。
+ **IdP\$1Port** – 認証サービスのホストがリッスンするポートです。Okta には必要ありません。
+ **ユーザー** – idp\$1host サーバーのユーザー名。
+ **パスワード** – idp\$1host ユーザー名に関連付けられたパスワード。
+ **DbUser** – 接続している Amazon Redshift ユーザー名。
+ **SSL\$1Insecure** – IDP サーバー証明書を検証する必要があるかどうかを示します。
+ **Client\$1ID** – Azure AD ポータルのユーザー名に関連付けられているクライアント ID。Azure AD にのみ使用されます。
+ **Client\$1Secret** – Azure AD ポータルのクライアント ID に関連付けられたクライアントシークレットです。Azure AD にのみ使用されます。
+ **IdP\$1Tenant** – Amazon Redshift アプリケーションの Azure AD テナント ID です。Azure AD にのみ使用されます。
+ **App\$1ID** – Amazon Redshift アプリケーションの Okta アプリケーション ID です。Okta にのみ使用されます。
+ **App\$1Name** – Amazon Redshift アプリケーションのオプションの Okta アプリケーション名です。Okta にのみ使用されます。
+ **Partner\$1SPID** – オプションのパートナー SPID (サービスプロバイダー ID) 値です。PingFederate にのみ使用されます。
+ **Idc\$1Region** – AWS IAM アイデンティティセンターインスタンスが配置されている AWS リージョン リージョン。AWS IAM アイデンティティセンターでのみ使用されます。
+ **Issuer\$1Url** – AWS IAM アイデンティティセンターサーバーのインスタンスエンドポイント。AWS IAM アイデンティティセンターでのみ使用されます。

これらのサービスのいずれかにブラウザプラグインを使用している場合は、接続 URL に以下を含めることもできます。
+ **Login\$1URL** – ブラウザのプラグインを介して Security Assertion Markup Language (SAML) または Azure AD サービスを使用するための、ID プロバイダーのウェブサイト上のリソース URL です。このパラメータは、ブラウザプラグインを使用している場合に必要です。
+ **Listen\$1Port** – ブラウザのプラグインを介して SAML、Azure AD サービスまたは AWS IAM アイデンティティセンターのサービスを使用する場合に、ID プロバイダーから SAML レスポンスを取得するためにドライバーが使用するポートです。
+ **IdP\$1Response\$1Timeout** – ブラウザのプラグインを介して SAML、Azure AD または AWS IAM アイデンティティセンターのサービスを使用する場合に、ドライバーが ID プロバイダーからの SAML レスポンスを待機する時間 (秒単位) です。

追加された接続文字列のプロパティの詳細については、[JDBC ドライバーバージョン 2.x の設定オプション](jdbc20-configuration-options.md)を参照してください。

# ユーザー名とパスワードのみを使用する
<a name="jdbc20-authentication-username-password"></a>

接続先のサーバーが SSL を使用しない場合は、Redshift ユーザー名とパスワードのみを入力して接続を認証できます。

**Redshift ユーザー名とパスワードのみを使用して認証を設定するには**

1. `UID` プロパティを Amazon Redshift サーバーにアクセスするための Redshift ユーザー名に設定します。

1. PWD プロパティを Redshift ユーザー名に対応するパスワードに設定します。

# 本人確認なしで SSL を使用する
<a name="jdbc20-use-ssl-without-identity-verification"></a>

接続しているサーバーが SSL を使用していて、ID 検証を必要としない場合には、検証されていない SSL ファクトリを使用するようにドライバーを設定できます。

**本人確認を行わずに SSL 接続を構成するには**

1. `UID` プロパティを Amazon Redshift サーバーにアクセスするための Redshift ユーザー名に設定します。

1. `PWD` プロパティを Redshift ユーザー名に対応するパスワードに設定します。

1. `SSLFactory` プロパティを `com.amazon.redshift.ssl.NonValidatingFactory` に設定します。

# 一方向 SSL 認証の使用
<a name="jdbc20-use-one-way-SSL-authentication"></a>

接続しているサーバーが SSL を使用し、証明書がある場合は、一方向認証を使用してサーバーの ID を検証するようにドライバーを構成できます。

一方向認証では、サーバーの ID を検証するために、署名された信頼できる SSL 証明書が必要です。特定の証明書を使用するようにドライバーを構成するか、適切な証明書を含む TrustStore にアクセスするようにドライバーを構成することができます。証明書または TrustStore を指定しない場合、ドライバーは、デフォルトの Java TrustStore (通常は `jssecacerts` または `cacerts` ) を使用します。

**一方向 SSL 認証を構成するには**

1. UID プロパティを Amazon Redshift サーバーにアクセスするための Redshift ユーザー名に設定します。

1. PWD プロパティを Redshift ユーザー名に対応するパスワードに設定します。

1. SSL プロパティを true に設定します。

1. SSLRootCert プロパティを、ルート CA 証明書がある場所に設定します。

1. デフォルトの Java TrustStores のいずれかを使用していない場合は、次のいずれかの操作を行います。
   + サーバー証明書を指定するには、SSLRootCert プロパティを証明書のフルパスに設定します。
   + TrustStore を指定するには、以下の操作を行います。

     1. keytool プログラムを使用して、使用する TrustStore にサーバー証明書を追加します。

     1. ドライバーを使用して Java アプリケーションを起動するときに使用する TrustStore とパスワードを指定します。次に例を示します。

        ```
        -Djavax.net.ssl.trustStore=[TrustStoreName]
        -Djavax.net.ssl.trustStorePassword=[TrustStorePassword]
        -Djavax.net.ssl.trustStoreType=[TrustStoreType]
        ```

1. 1 つを選択してください。
   + 証明書を検証するには、SSLMode プロパティを verify-ca に設定します。
   + 証明書を検証し、証明書のホスト名を検証するには、SSLMode プロパティに verify-full を設定します。

# ログ記録の構成
<a name="jdbc20-configuring-logging"></a>

ドライバーのログ記録を有効にすると、問題の診断に利用することができます。

ドライバーに関する情報は、次の方法を使用してログに記録できます。
+ ログに記録された情報を .log ファイルに保存するには、[ログファイルの使用](jdbc20-using-log-files.md)を参照してください。
+ ログに記録された情報を DriverManager で指定された LogStream または LogWriter に送信するには、[LogStream または LogWriter の使用](jdbc20-logstream-option.md)を参照してください。

接続 URL でドライバーに構成情報を提供します。接続 URL の構文の詳細については、[接続 URL の構築](jdbc20-build-connection-url.md)を参照してください。

# ログファイルの使用
<a name="jdbc20-using-log-files"></a>

問題をキャプチャするのに十分な時間だけログ記録を起動します。ログ記録によってパフォーマンスが低下し、ディスク容量が大量に消費される可能性があります。

接続 URL での LogLevel キーを設定して、ログファイルに含まれる詳細情報の量を指定しながら、ログ記録を有効にします。次の表に、Amazon Redshift JDBC ドライバーバージョン 2.x で提供されるログレベルを、冗長性の低いものから高いものの順に示します。


| LogLevel 値 | 説明 | 
| --- | --- | 
|  1  |  ドライバーの中断につながる重大なエラーイベントを記録します。  | 
|  2  |  ドライバーの実行を続行するよう許可する可能性があるエラーイベントを記録します。  | 
|  3  |  アクションが実行されなかった場合にエラーが発生する可能性のあるイベントをログに記録します。このレベルのロギングと、このレベルを超えるロギングのレベルでは、ユーザーのクエリもログに記録されます。  | 
|  4  |  ドライバーの進行状況を示す全般的な情報を記録します。  | 
|  5  |  ドライバーのデバッグに役立つ詳細な情報を記録します。  | 
|  6  |  すべてのドライバーアクティビティを記録します。  | 

**ログファイルを使用するログを設定するには**

1. LogLevel プロパティを、ログファイルに含める必要があるレベルの情報に設定します。

1. LogPath プロパティを、ログファイルを保存するフォルダへのフルパスに指定します。

   例えば、次の接続 URL はログレベル 3 を有効にし、ログファイルを C:\$1temp フォルダ `jdbc:redshift://redshift.company.us-west- 1.redshift.amazonaws.com:9000/Default;DSILogLevel=3;LogPath=C:\temp` に保存します。

1. 新しい設定が有効になっていることを確認するには、JDBC アプリケーションを再起動し、サーバーに再接続します。

   Amazon Redshift JDBC ドライバーは、LogPath プロパティで指定された場所に次のログファイルを生成します。
   +  接続に固有ではないドライバーのアクティビティをログに記録する redshift\$1jdbc.log ファイルです。
   + データベースへの接続ごとに redshift\$1jdbc\$1connection\$1[Number].log ファイル。[Number] は各ログファイルを識別する番号です。このファイルは、接続に固有のドライバーアクティビティをログに記録します。

LogPath 値が無効な場合、ドライバーはログに記録された情報を標準出力ストリームに送信します (`System.out`)。

# LogStream または LogWriter の使用
<a name="jdbc20-logstream-option"></a>

問題をキャプチャするのに十分な時間だけログ記録を起動します。ログ記録によってパフォーマンスが低下し、ディスク容量が大量に消費される可能性があります。

接続 URL で LogLevel キーを設定し、DriverManager で指定された LogStream または LogWriter に送信される詳細情報の量を指定しながら、ログ記録を有効にします。

**LogStream または LogWriter を使用するログ記録を有効にするには**

1. ドライバーの進行状況を示す一般情報をログに記録するようにドライバーを構成するには、LogLevel プロパティを 1 または INFO に設定します。

1. 新しい設定が有効になっていることを確認するには、JDBC アプリケーションを再起動し、サーバーに再接続します。

# データ型変換
<a name="jdbc20-data-type-mapping"></a>

Amazon Redshift JDBC ドライバーバージョン 2.x では、Amazon Redshift、SQL、および Java データ型の変換を行う多くの一般的なデータ形式がサポートされています。

サポートされているデータ型のマッピングを以下の表に示しています。


| Amazon Redshift のタイプ | SQL タイプ | Java 型 | 
| --- | --- | --- | 
|  BIGINT  |  SQL\$1BIGINT  |  Long  | 
|  BOOLEAN  |  SQL\$1BIT  |  ブール値  | 
|  CHAR  |  SQL\$1CHAR  |  文字列  | 
|  DATE  |  SQL\$1TYPE\$1DATE  |  java.sql.Date  | 
|  DECIMAL  |  SQL\$1NUMERIC  |  BigDecimal  | 
|  DOUBLE PRECISION  |  SQL\$1DOUBLE  |  Double  | 
|  GEOMETRY  |  SQL\$1LONGVARBINARY  |  byte[]  | 
|  INTEGER  |  SQL\$1INTEGER  |  整数  | 
|  OID  |  SQL\$1BIGINT  |  Long  | 
|  SUPER  |  SQL\$1LONGVARCHAR  |  文字列  | 
|  REAL  |  SQL\$1REAL  |  浮動小数点  | 
|  SMALLINT  |  SQL\$1SMALLINT  |  ショート  | 
|  TEXT  |  SQL\$1VARCHAR  |  文字列  | 
|  TIME  |  SQL\$1TYPE\$1TIME  |  java.sql.Time  | 
|  TIMETZ  |  SQL\$1TYPE\$1TIME  |  java.sql.Time  | 
|  TIMESTAMP  |  SQL\$1TYPE\$1TIMESTAMP  |  java.sql.Timestamp  | 
|  TIMESTAMPTZ  |  SQL\$1TYPE\$1TIMESTAMP  |  java.sql.Timestamp  | 
|  VARCHAR  |  SQL\$1VARCHAR  |  文字列  | 

# プリペアドステートメントのサポートを使用する
<a name="jdbc20-prepared-statement-support"></a>

Amazon Redshift JDBC ドライバーは、プリペアドステートメントをサポートしています。プリペアドステートメントを使用すると、同じ接続中に複数回実行する必要がある、パラメータ化されたクエリのパフォーマンスを向上できます。

*プリペアドステートメント*は、サーバー側でコンパイルされますが、すぐには実行されない SQL ステートメントです。コンパイルされたステートメントは、オブジェクトまたは接続を閉じるまで、PreparedStatement オブジェクトとしてサーバーに保存されます。そのオブジェクトが存在している間は、ステートメントを再度コンパイルすることなく、異なるパラメータ値を使用して必要な回数だけプリペアドステートメントを実行できます。これによってオーバーヘッドが軽減され、一連のクエリをより迅速に実行することが可能になります。

プリペアドステートメントの詳細については、[Oracle からの JDBC の基礎チュートリアル](https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html)の「プリペアドステートメントの使用」を参照してください。

複数のクエリを含むステートメントを準備できます。例えば、次のプリペアドステートメントには、2 つの INSERT クエリが含まれています。

```
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO
MyTable VALUES (1, 'abc'); INSERT INTO CompanyTable VALUES
(1, 'abc');");
```

これらのクエリは、同じプリペアドステートメント内で指定された他のクエリの結果に依存しないように注意してください。準備ステップの間はクエリが実行されないため、結果はまだ返されておらず、同じ準備済みステートメント内の他のクエリでは使用できません。

例えば、テーブルを作成してから、新しく作成されたテーブルに値を挿入する次のプリペアドステートメントは許可されていません。

```
PreparedStatement pstmt = conn.prepareStatement("CREATE
TABLE MyTable(col1 int, col2 varchar); INSERT INTO myTable
VALUES (1, 'abc');");
```

このステートメントを準備しようとすると、サーバーは送信先のテーブル (myTable) がまだ存在していないことを示すエラーを返します。INSERT クエリを準備する前に、CREATE クエリを実行する必要があります。

# JDBC ドライバーバージョン 2.2 と 1.x での相違点
<a name="jdbc20-jdbc10-driver-differences"></a>

このセクションでは、JDBC ドライバーの 2.2 と 1.x バージョンが返す情報の違いについて説明します。JDBC ドライバーのバージョン 1.x の使用は終了されています。

次のテーブルでは、JDBC ドライバーの各バージョンについて、getDatabaseProductName() 関数および getDatabaseProductVersion() 関数によって返される DatabaseMetadata 情報を表示します。JDBC ドライバーバーのジョン 2.2 は、接続の確立中に値を取得します。JDBC ドライバーのバージョン 1.x は、クエリの結果として値を取得します。


| JDBC ドライバーのバージョン | getDatabaseProductName() の結果 | getDatabaseProductVersion() の結果 | 
| --- | --- | --- | 
|  2.2  |  Redshift  |  8.0.2  | 
|  1.x  |  PostgreSQL  |  08.00.0002  | 

次のテーブルは、JDBC ドライバーのバージョンごとに getTypeInfo 関数によって返される DatabaseMetadata 情報を示します。


| JDBC ドライバーのバージョン | getTypeInfo 結果 | 
| --- | --- | 
|  2.2  |  Redshift データ型との整合性  | 
|  1.x  |  PostgreSQL データ型と一貫性がある  | 

# JDBC ドライバーバージョン 2.x 用の初期化 (.ini) ファイルの作成
<a name="jdbc20-ini-file"></a>

Amazon Redshift JDBC ドライバーバージョン 2.x で初期化 (.ini) ファイルを使用すると、システムレベルの設定パラメータを指定できます。例えば、フェデレーション IdP 認証パラメータなどは、アプリケーションごとに異なっている場合があります。.ini ファイルにより、SQL クライアントに必要な構成パラメータを集約することができます。

JDBC ドライバーバージョン 2.x 用に初期化 (.ini) ファイルを作成して、その中に SQL クライアントの構成オプションを記述します。このファイルのデフォルトの名前は `rsjdbc.ini` です。JDBC ドライバーバージョン 2.x は、以下に示す場所から.ini ファイルを探します (優先順位に従いリストされています)。
+ `IniFile`SQL クライアントの接続 URL または 接続プロパティダイアログボックス内にある パラメータ。`IniFile` パラメータには、.ini ファイルへのファイル名を含む完全なパスが記述されている必要があります。`IniFile` パラメータの詳細については、「[IniFile](jdbc20-configuration-options.md#jdbc20-inifile-option)」を参照してください。`IniFile` パラメータで.ini ファイルの場所を誤って指定した場合には、エラーが表示されます。
+ ファイル名を含む完全なパスを指定する環境変数 (AMAZON\$1REDSHIFT\$1JDBC\$1INI\$1FILE など)。`rsjdbc.ini` を使用するか、ファイル名を指定することができます。AMAZON\$1REDSHIFT\$1JDBC\$1INI\$1FILE 環境変数で、.ini ファイルの場所が正しく指定されていない場合は、エラーが表示されます。
+ ドライバの JAR ファイルが置かれているディレクトリ。
+ ユーザーのホームディレクトリ。
+ システムの一時ディレクトリ。

.ini ファイルは、[DRIVER] などのセクションにより整理することが可能です。各セクションには、さまざまな接続パラメータを指定するキーと値のペアが含まれます。.ini ファイル内のセクションは、`IniSection`パラメータによりを指定します。`IniSection` パラメータの詳細については、「[IniSection](jdbc20-configuration-options.md#jdbc20-inisection-option)」を参照してください。

次に、[DRIVER]、[DEV]、[QA]、および [PRODD] のセクションを使用する .ini ファイル形式の例を示します。[DRIVER] セクションは任意の接続に適用できます。

```
[DRIVER]
key1=val1
key2=val2

[DEV]
key1=val1
key2=val2

[QA]
key1=val1
key2=val2

[PROD]
key1=val1
key2=val2
```

JDBC ドライバーバージョン 2.x は、次の場所から設定パラメータをロードします (優先順位に従いリストされています)。
+ アプリケーションコード内のデフォルト設定パラメータ。
+ INIファイルの [DRIVER] セクションのプロパティ (含まれている場合)。
+ カスタムセクションの設定パラメータ (`IniSection` オプションが、SQL クライアントの接続 URL または 接続プロパティダイアログボックスで指定されている場合)。
+ `getConnection` 呼び出しの中で指定された、接続プロパティオブジェクトに含まれるプロパティ。
+ 接続 URL 内で指定されている設定パラメータ。

# JDBC ドライバーバージョン 2.x の設定オプション
<a name="jdbc20-configuration-options"></a>

以下に、Amazon Redshift JDBC ドライバーのバージョン 2.2 で指定できるオプションの説明を示します。設定オプションでは、大文字と小文字を区別しません。

接続 URL を使用して、構成プロパティを設定できます。詳細については、「[接続 URL の構築](jdbc20-build-connection-url.md)」を参照してください。

**Topics**
+ [AccessKeyID](#jdbc20-accesskeyid-option)
+ [AllowDBUserOverride](#jdbc20-allowdbuseroverride-option)
+ [App\$1ID](#jdbc20-app-id-option)
+ [App\$1Name](#jdbc20-app-name-option)
+ [ApplicationName](#jdbc20-applicationname-option)
+ [AuthProfile](#jdbc20-authprofile-option)
+ [AutoCreate](#jdbc20-autocreate-option)
+ [Client\$1ID](#jdbc20-client_id-option)
+ [Client\$1Secret](#jdbc20-client_secret-option)
+ [ClusterID](#jdbc20-clusterid-option)
+ [圧縮](#jdbc20-compression-option)
+ [connectTimeout](#jdbc20-connecttimeout-option)
+ [connectionTimezone](#jdbc20-connecttimezone-option)
+ [databaseMetadataCurrentDbOnly](#jdbc20-databasemetadatacurrentdbonly-option)
+ [DbUser](#jdbc20-dbuser-option)
+ [DbGroups](#jdbc20-dbgroups-option)
+ [DBNAME](#jdbc20-dbname-option)
+ [defaultRowFetchSize](#jdbc20-defaultrowfetchsize-option)
+ [DisableIsValidQuery](#jdbc20-disableisvalidquery-option)
+ [enableFetchRingBuffer](#jdbc20-enablefetchringbuffer-option)
+ [enableMultiSqlSupport](#jdbc20-enablemultisqlsupport-option)
+ [fetchRingBufferSize](#jdbc20-fetchringbuffersize-option)
+ [ForceLowercase](#jdbc20-forcelowercase-option)
+ [groupFederation](#jdbc20-groupFederation-option)
+ [HOST](#jdbc20-host-option)
+ [IAMDisableCache](#jdbc20-iamdisablecache-option)
+ [IAMDuration](#jdbc20-iamduration-option)
+ [Idc\$1Client\$1Display\$1Name](#jdbc20-idc_client_display_name)
+ [Idc\$1Region](#jdbc20-idc_region)
+ [IdP\$1Host](#jdbc20-idp_host-option)
+ [IdP\$1Partition](#jdbc20-idp_partition-option)
+ [IdP\$1Port](#jdbc20-idp_port-option)
+ [IdP\$1Tenant](#jdbc20-idp_tenant-option)
+ [IdP\$1Response\$1Timeout](#jdbc20-idp_response_timeout-option)
+ [IniFile](#jdbc20-inifile-option)
+ [IniSection](#jdbc20-inisection-option)
+ [isServerless](#jdbc20-isserverless-option)
+ [Issuer\$1Url](#jdbc20-issuer-url)
+ [listen\$1port](#jdbc20-listen-port)
+ [Login\$1URL](#jdbc20-login_url-option)
+ [loginTimeout](#jdbc20-logintimeout-option)
+ [loginToRp](#jdbc20-logintorp-option)
+ [LogLevel](#jdbc20-loglevel-option)
+ [LogPath](#jdbc20-logpath-option)
+ [OverrideSchemaPatternType](#jdbc20-override-schema-pattern-type)
+ [Partner\$1SPID](#jdbc20-partner_spid-option)
+ [パスワード](#jdbc20-password-option)
+ [Plugin\$1Name](#jdbc20-plugin_name-option)
+ [PORT](#jdbc20-port-option)
+ [Preferred\$1Role](#jdbc20-preferred_role-option)
+ [プロファイル](#jdbc20-profile-option)
+ [PWD](#jdbc20-pwd-option)
+ [queryGroup](#jdbc20-querygroup-option)
+ [readOnly](#jdbc20-readonly-option)
+ [リージョン](#jdbc20-region-option)
+ [reWriteBatchedInserts](#jdbc20-rewritebatchedinserts-option)
+ [reWriteBatchedInsertsSize](#jdbc20-rewritebatchedinsertssize-option)
+ [roleArn](#jdbc20-rolearn-option)
+ [roleSessionName](#jdbc20-roleaessionname-option)
+ [scope](#jdbc20-scope-option)
+ [SecretAccessKey](#jdbc20-secretaccesskey-option)
+ [SessionToken](#jdbc20-sessiontoken-option)
+ [serverlessAcctId](#jdbc20-serverlessacctid-option)
+ [serverlessWorkGroup](#jdbc20-serverlessworkgroup-option)
+ [socketFactory](#jdbc20-socketfactory-option)
+ [socketTimeout](#jdbc20-sockettimeout-option)
+ [SSL](#jdbc20-ssl-option)
+ [SSL\$1Insecure](#jdbc20-ssl_insecure-option)
+ [SSLCert](#jdbc20-sslcert-option)
+ [SSLFactory](#jdbc20-sslfactory-option)
+ [SSLKey](#jdbc20-sslkey-option)
+ [SSLMode](#jdbc20-sslmode-option)
+ [SSLPassword](#jdbc20-sslpassword-option)
+ [SSLRootCert](#jdbc20-sslrootcert-option)
+ [StsEndpointUrl](#jdbc20-stsendpointurl-option)
+ [tcpKeepAlive](#jdbc20-tcpkeepalive-option)
+ [トークン](#jdbc20-token-option)
+ [token\$1type](#jdbc20-token-type-option)
+ [UID](#jdbc20-uid-option)
+ [ユーザー](#jdbc20-user-option)
+ [webIdentityToken](#jdbc20-webidentitytoken-option)

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

このパラメータを指定して、ユーザーまたはロールの IAM アクセスキーを入力できます。通常、既存の文字列またはユーザープロファイルを確認することで、キーを見つけることができます。このパラメータを指定する場合は、`SecretAccessKey`パラメータも指定する必要があります。JDBC URL で渡す場合は、AccessKeyID を URL エンコードする必要があります。

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

## AllowDBUserOverride
<a name="jdbc20-allowdbuseroverride-option"></a>
+ **デフォルト値**: 0
+ **データ型** – 文字列

このオプションは、ドライバーが SAML アサーションの `DbUser` 値を使用するか、接続 URL の `DbUser` 接続プロパティで指定された値を使用するかを指定します。

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

**1**  
ドライバーは SAML アサーションの `DbUser` 値を使用します。  
SAML アサーションで `DBUser` の値が指定されていない場合、ドライバーは接続プロパティ `DBUser` で指定された値を使用します。この接続プロパティでも値が指定されていない場合、ドライバーは接続プロファイルで指定された値を使用します。

**0**  
ドライバーは、`DBUser`接続プロパティで指定された `DBUser` 値を使用します。  
接続プロパティ `DBUser` で値が指定されていない場合、ドライバーは接続プロファイルで指定された値を使用します。接続プロファイルでも値が指定されていない場合、ドライバーは SAML アサーションの値を使用します。

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

Okta が提供する Amazon Redshift アプリケーションに関連付けられた一意の ID。

このパラメータは、Okta サービスを介して認証する場合に必要です。

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

Amazon Redshift への接続を認証するために使用する Okta アプリケーションの名前。

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

## ApplicationName
<a name="jdbc20-applicationname-option"></a>
+ **デフォルト値** – null
+ **データ型** - 文字列

監査目的のために Amazon Redshift に渡すアプリケーションの名前。

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

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

Amazon Redshift への接続に使用する認証プロファイルの名前。

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

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

このオプションは、指定されたユーザーが存在しない場合に、ドライバーが新しいユーザーを作成するかどうかを指定します。

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

**true**  
`DBUser` または固有 ID (UID) のいずれかで指定されたユーザーが存在していない場合は、その名前の新しいユーザーが作成されます。

**false**  
ドライバーが新しいユーザーを作成することはありません。指定したユーザーが存在しない場合、認証は失敗します。

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

Azure AD サービスを使用して接続を認証する際に使用するクライアント ID。

このパラメータは、Azure AD サービスを介して認証する場合に必要です。

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

Azure AD サービスを使用して接続を認証するときに使用するクライアントシークレット。

このパラメータは、Azure AD サービスを介して認証する場合に必要です。

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

接続する Amazon Redshift クラスターの名前。ドライバーは、指定されたホストからこのパラメータを検出しようとします。Network Load Balancer (NLB) を使用しており IAM を介して接続する場合、ドライバーはそれを検出できないため、この接続オプションを使用して設定することができます。

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

## 圧縮
<a name="jdbc20-compression-option"></a>
+ **デフォルト値** - オフ
+ **データ型** - 文字列

Amazon Redshift サーバーとクライアントまたはドライバー間のワイヤプロトコル通信に使用される圧縮方法。

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

次の値を指定できます。
+ **lz4**

  Amazon Redshift とのワイヤプロトコル通信に使用される圧縮方法を lz4 に設定します。
+ **off**

  Amazon Redshift とのワイヤプロトコル通信には圧縮を使用しません。

## connectTimeout
<a name="jdbc20-connecttimeout-option"></a>
+ **デフォルト値** – 10
+ **データ型** – 整数

ソケット接続操作に使用するタイムアウト値。Amazon Redshift 接続の確立に必要な時間がこの値を超えると、接続は利用不可であると見なされます。タイムアウトは秒単位で指定されます。0 の値は、タイムアウトが指定されていないことを意味します。

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

## connectionTimezone
<a name="jdbc20-connecttimezone-option"></a>
+ **デフォルト値** – LOCAL
+ **データ型** - 文字列

セッションレベルのタイムゾーン。

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

次の値を指定できます。

**LOCAL**  
セッションレベルのタイムゾーンを LOCAL JVM タイムゾーンに設定します。

**SERVER**  
セッションレベルのタイムゾーンを、Amazon Redshift サーバー上のユーザーに設定されたタイムゾーンに設定します。次のコマンドを使用して、ユーザーのセッションレベルのタイムゾーンを設定できます。  

```
ALTER USER
[...]
SET TIMEZONE TO [...];
```

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

このオプションは、メタデータ API が、アクセス可能なすべてのデータベースからデータを取得するか、接続しているデータベースからのみデータを取得するかを指定します。

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

次の値を指定できます。

**true**  
アプリケーションは、単一のデータベースからメタデータを取得します。

**false**  
アプリケーションは、アクセス可能なすべてのデータベースからメタデータを取得します。

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

Amazon Redshift アカウントで使用するユーザー ID。AutoCreate プロパティを有効にしている場合は、現在存在しない ID を使用できます。

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

## DbGroups
<a name="jdbc20-dbgroups-option"></a>
+ **デフォルト値** – PUBLIC
+ **データ型** – 文字列

`DBUser` が現在のセッションで参加する、既存のデータベースグループ名のコンマ区切りリスト。

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

## DBNAME
<a name="jdbc20-dbname-option"></a>
+ **デフォルト値** – null
+ **データ型** - 文字列

接続先のデータベースの名前です。このオプションは、JDBC 接続 URL にデータベース名を指定するために使用できます。

このパラメータは必須です。データベース名は、接続 URL、またはクライアントアプリケーションの接続プロパティで指定する必要があります。

## defaultRowFetchSize
<a name="jdbc20-defaultrowfetchsize-option"></a>
+ **デフォルト値**: 0
+ **データ型** – 整数

このオプションは、getFetchSize のデフォルト値を指定します。

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

次の値を指定できます。

**0**  
1 回のオペレーションですべての行をフェッチします。

**正の整数**  
ResultSet のフェッチを繰り返すごとに、データベースからフェッチする行の数。

## DisableIsValidQuery
<a name="jdbc20-disableisvalidquery-option"></a>
+ **デフォルト値** – False
+ **データ型** – ブール型

このオプションは、Connection.isValid() メソッドを使用してデータベース接続がアクティブかどうかを判断するときに、ドライバーが新しいデータベースクエリを送信するかどうかを指定します。

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

**true**  
Connection.isValid() を使用してデータベース接続がアクティブかどうかを判断する場合、ドライバーはクエリを送信しません。これにより、データベースサーバーが予期せずシャットダウンした場合、ドライバーがデータベース接続をアクティブとして誤って識別することがあります。

**false**  
Connection.isValid () を使用してデータベース接続がアクティブかどうかを判断する場合、ドライバーはクエリを送信します。

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

このオプションは、ドライバーが別のスレッドのリングバッファを使用して行をフェッチすることを指定します。fetchRingBufferSize パラメータは、リングバッファのサイズを指定します。

リングバッファは JDBC に自動メモリ管理を実装し、データ取り出しオペレーション中のメモリ不足 (OOM) エラーを防止します。リングバッファは、バッファされたデータの実際のサイズをリアルタイムでモニタリングし、ドライバーの合計メモリ使用量が設定された制限内に収まるようにします。バッファ容量に達すると、ドライバーはデータフェッチ操作を一時停止し、手動操作を必要とせずにメモリのオーバーフローを防止します。この組み込みのセーフガードにより、OOM エラーが自動的に排除され、ユーザーによる設定は必要ありません。

トランザクションがセミコロンで区切られた複数の SQL コマンドを含むステートメントを検出した場合、そのトランザクションのフェッチリングバッファは false に設定されます。enableFetchRingBuffer の値は変わりません。

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

**注記**  
リングバッファが無効になっており、フェッチサイズが正しく設定されていない場合、メモリ不足 (OOM) の問題が発生する可能性があります。フェッチサイズの設定の詳細については、[こちら](https://docs.aws.amazon.com/redshift/latest/dg/set-the-JDBC-fetch-size-parameter.html)を参照してください。

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

このオプションは、ステートメント内でセミコロンで区切られた複数の SQL コマンドを処理するかどうかを指定します。

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

次の値を指定できます。

**true**  
ドライバーは、Statement オブジェクト内でセミコロンで区切られた複数の SQL コマンドを処理します。

**false**  
ドライバーは、単一のステートメントで複数の SQL コマンドに対してエラーを返します。

## fetchRingBufferSize
<a name="jdbc20-fetchringbuffersize-option"></a>
+ **デフォルト値** – 1G
+ **データ型** – 文字列

このオプションは、結果セットの取得時に使用するリングバッファのサイズを指定します。サイズはバイト単位で指定できます。例えば、1 KB の場合は 1K、5,000 バイトの場合は 5000、1 MB の場合は 1M、1 GB の場合は 1G などです。ヒープメモリの割合を指定することもできます。ドライバーは、制限に達すると行のフェッチを停止します。アプリケーションが行を読み込み、リングバッファのスペースを解放すると、フェッチが再開されます。

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

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

このオプションは、シングルサインオン認証を使用するときに ID プロバイダーから Amazon Redshift に送信されたすべてのデータベースグループ (DbGroups) をドライバーが小文字にするかどうかを指定します。

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

**true**  
ドライバーは、ID プロバイダーから送信されるすべてのデータベースグループを小文字にします。

**false**  
ドライバーは、データベースグループを変更しません。

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

このオプションは、Amazon Redshift IDP グループを使用するかどうかを指定します。これは GetClusterCredentialsV2 API でサポートされています。

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

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

**false**  
ユーザーフェデレーションに STS API と GetClusterCredentials を使用し、接続に DbGroups を明示的に指定します。

## HOST
<a name="jdbc20-host-option"></a>
+ **デフォルト値** – null
+ **データ型** - 文字列

接続先の Amazon Redshift サーバーのホスト名。このオプションは、JDBC 接続 URL にホスト名を指定するために使用できます。

このパラメータは必須です。ホスト名は、接続 URL、またはクライアントアプリケーションの接続プロパティで指定する必要があります。

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

このオプションは、IAM 認証情報をキャッシュするかどうかを指定します。

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

**true**  
IAM 認証情報はキャッシュされません。

**false**  
IAM 認証情報はキャッシュされます。これにより、API ゲートウェイへのリクエストが抑制された場合のパフォーマンスが向上します。

## IAMDuration
<a name="jdbc20-iamduration-option"></a>
+ **デフォルト値** – 900
+ **データ型** – 整数

一時的な IAM 認証情報が期限切れになるまでの時間 (秒単位)。
+ **最小値** – 900
+ **最大値 **– 3,600

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

## Idc\$1Client\$1Display\$1Name
<a name="jdbc20-idc_client_display_name"></a>
+ **デフォルト値** - Amazon Redshift JDBC ドライバー
+ **データ型** - 文字列

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

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

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

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

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

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

Amazon Redshift への認証に使用する IdP (ID プロバイダー) のホスト。これは、接続文字列またはプロファイルのいずれかで指定できます。

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

## IdP\$1Partition
<a name="jdbc20-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` を使用します。

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

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

IdP (アイデンティティプロバイダー) が使用するポート。ポートは、接続文字列またはプロファイルで指定できます。デフォルトのポート番号は 5439 です。クラスターの作成、変更、または移行時に選択したポートに応じて、選択したポートへのアクセスを許可します。

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

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

Amazon Redshift アプリケーションの Azure AD テナント ID です。

このパラメータは、Azure AD サービスを介して認証する場合に必要です。

## IdP\$1Response\$1Timeout
<a name="jdbc20-idp_response_timeout-option"></a>
+ **デフォルト値** – 120
+ **データ型** – 整数

ブラウザのプラグインを介して SAML または Azure AD サービスを使用する場合に、ドライバーが ID プロバイダーからの SAML 応答を待機する時間 (秒単位) です。

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

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

.ini ファイルのファイル名を含む完全なパス。例:

```
IniFile="C:\tools\rsjdbc.ini"
```

.ini ファイルの詳細については、「[JDBC ドライバーバージョン 2.x 用の初期化 (.ini) ファイルの作成](jdbc20-ini-file.md)」を参照してください。

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

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

構成オプションを含む.iniファイル内のセクションの名前。.ini ファイルの詳細については、「[JDBC ドライバーバージョン 2.x 用の初期化 (.ini) ファイルの作成](jdbc20-ini-file.md)」を参照してください。

次の例では、.ini ファイル内の [Prod] セクションを指定しています。

```
IniSection="Prod"
```

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

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

このオプションは、Amazon Redshift エンドポイントホストがサーバーレス インスタンスであるかどうか指定します。ドライバーは、指定されたホストからこのパラメータを検出しようとします。Network Load Balancer (NLB) を使用している場合、ドライバーはそれを検出できないため、ここで設定できます。

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

**true**  
Amazon Redshift エンドポイントホストはサーバーレスインスタンスです。

**false**  
Amazon Redshift エンドポイント ホストはプロビジョニングされたクラスターです。

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

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

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

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

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

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

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

ブラウザのプラグインを介して SAML または Azure AD サービスを使用する場合に、ID プロバイダーのウェブサイト上のリソース URL です。

このパラメータは、ブラウザプラグインを介して SAML または Azure AD サービスで認証する場合に必要です。

## loginTimeout
<a name="jdbc20-logintimeout-option"></a>
+ **デフォルト値**: 0
+ **データ型** – 整数

サーバーに接続して認証するときにタイムアウトするまで待つ秒数。接続を確立するときにこのしきい値よりも時間がかかると、接続は中止されます。

このプロパティが 0 に設定されている場合、接続はタイムアウトしません。

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

## loginToRp
<a name="jdbc20-logintorp-option"></a>
+ **デフォルト値** – `urn:amazon:webservices`
+ **データ型** – 文字列

AD FS 認証の種類に使用する証明書利用者の信頼。

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

## LogLevel
<a name="jdbc20-loglevel-option"></a>
+ **デフォルト値**: 0
+ **データ型** – 整数

このプロパティを使用して、ログファイルに含まれる詳細情報の量を指定しながら、ドライバーのログ記録を有効または無効にします。

問題をキャプチャするのに十分な時間だけログを有効にします。ログ記録によってパフォーマンスが低下し、ディスク容量が大量に消費される可能性があります。

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

パラメータを次のいずれかの値に設定します。

**0**  
すべてのログ記録を無効にします。

**1**  
FATAL レベルでログ記録を有効にします。これにより、ドライバーの中止につながる非常に重大なエラーイベントがログに記録されます。

**2**  
ERROR レベルでのログ記録を有効にし、ドライバーの実行を続行できるように許可する可能性があるエラーイベントがログに記録されます。

**3**  
WARNING レベルでのログ記録を有効にします。これにより、アクションを実行しないとエラーが発生する可能性のあるイベントがログに記録されます。

**4**  
INFO レベルでログ記録を有効にし、ドライバーの進行状況を示す全般的な情報をログに記録します。

**5**  
DEBUG レベルでログ記録を有効にします。このレベルでは、ドライバーのデバッグに役立つ詳細な情報がログに記録されます。

**6**  
TRACE レベルでのログ記録を有効にします。これにより、すべてのドライバーのアクティビティがログに記録されます。

ログ記録を有効にすると、ドライバーは `LogPath` プロパティで指定された場所に次のログファイルを生成します。
+ **`redshift_jdbc.log`** – 接続に固有ではないドライバーのアクティビティをログに記録するファイル。
+ **`redshift_jdbc_connection_[Number].log`** – データベースに対して行われた各接続のファイル。ここで、`[Number]`は各ログファイルを他のログファイルと区別する番号です。このファイルは、接続に固有のドライバーアクティビティをログに記録します。

LogPath 値が無効な場合、ドライバーはログに記録された情報を標準出力ストリーム `System.out` に送信します。

## LogPath
<a name="jdbc20-logpath-option"></a>
+ **デフォルト値** – 現在の作業ディレクトリです。
+ **データ型** – 文字列

DSILogLevel プロパティが有効になっている場合に、ドライバーがログファイルを保存するフォルダへのフルパスです。

接続 URL がすべての JDBC アプリケーションと互換性があることを確認するには、別のバックスラッシュを入力して、ファイルパス内のバックスラッシュ (\$1) をエスケープすることをお勧めします。

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

## OverrideSchemaPatternType
<a name="jdbc20-override-schema-pattern-type"></a>
+ **デフォルト値** – null
+ **データ型** – 整数

このオプションによって、GetTables コールで使用されるクエリのタイプを無視するかどうかを指定します。

**0**  
スキーマユニバーサルクエリなし

**1**  
ローカルスキーマクエリ

**2**  
外部スキーマクエリ

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

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

PingFederate サービスを使用して接続を認証するときに使用するパートナー SPID (サービスプロバイダー ID) の値。

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

## パスワード
<a name="jdbc20-password-option"></a>
+ **デフォルト値** - なし
+ **データ型** – 文字列

IDP を介して IAM 認証を使用して接続する場合、これは IDP\$1Host サーバーのパスワードです。標準認証を使用する場合、PWD の代わりに Amazon Redshift データベースのパスワードにこれを使用できます。

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

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

特定の認証情報プロバイダーのプログインを実装する完全修飾クラス名。

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

以下のプロバイダーオプションがサポートされています。
+ **`AdfsCredentialsProvider`** – Active Directory フェデレーションサービス。
+ **`AzureCredentialsProvider`** – Microsoft Azure Active Directory (AD) サービス。
+ **`BasicJwtCredentialsProvider`** – JSON ウェブトークン (JWT) サービス。
+ **`BasicSamlCredentialsProvider`** – Security Assertion Markup Language (SAML) 認証情報。多数の SAML サービスプロバイダーで使用できます。
+ **`BrowserAzureCredentialsProvider`** – Microsoft Azure Active Directory (AD) サービスのブラウザ。
+ **`BrowserAzureOAuth2CredentialsProvider` ** – ネイティブ認証用の Microsoft Azure Active Directory (AD) サービスのブラウザ。
+ **`BrowserIdcAuthPlugin` ** – AWS IAM アイデンティティセンターを使用する認可プラグイン。
+ **`BrowserSamlCredentialsProvider`** – Okta、Ping、ADFS などの SAML サービス用のブラウザ SAML。
+ **`IdpTokenAuthPlugin`** — AWS IAM アイデンティティセンターのトークン、または AWS IAM アイデンティティセンターにリンクされているウェブ ID プロバイダーからの OpenID Connect (OIDC) JSON ベースの ID トークン (JWT) を受け入れる認可プラグイン。
+ **`OktaCredentialsProvider`** – Okta サービス。
+ **`PingCredentialsProvider`** – PingFederate サービス。

## PORT
<a name="jdbc20-port-option"></a>
+ **デフォルト値** – null
+ **データ型** – 整数

接続先の Amazon Redshift サーバーのポート。このオプションは、JDBC 接続 URL にポート名を指定するために使用できます。

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

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

Amazon Redshift への接続中に引き受ける IAM ロール。

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

## プロファイル
<a name="jdbc20-profile-option"></a>
+ **デフォルト値** - なし
+ **データ型** – 文字列

IAM 認証に使用するプロファイルの名前。このプロファイルには、接続文字列で指定されていない追加の接続プロパティが含まれます。

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

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

プロパティ UID を使用して指定した Amazon Redshift ユーザー名に対応するパスワード。

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

## queryGroup
<a name="jdbc20-querygroup-option"></a>
+ **デフォルト値** – null
+ **データ型** – 文字列

このオプションは、適切なクエリグループにクエリを割り当てることで、実行時にクエリをキューに割り当てます。セッションに対してクエリグループが設定されます。接続で実行されるすべてのクエリは、このクエリグループに属します。

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

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

このプロパティは、ドライバーが読み込み専用モードであるかどうかを指定します。

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

**true**  
接続は読み込み専用モードであり、データストアに書き込むことはできません。

**false**  
接続は読み込み専用モードではなく、データストアに書き込むことができます。

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

このオプションは、クラスターが配置されている AWS リージョンを指定します。StsEndPoint オプションを指定すると、[Region (リージョン)] オプションは無視されます。Redshift `GetClusterCredentials` API オペレーションは、リージョンオプションも使用します。

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

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

このオプションは、互換性のある INSERT ステートメントを書き換えてバッチに統合する最適化を有効にします。

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

## reWriteBatchedInsertsSize
<a name="jdbc20-rewritebatchedinsertssize-option"></a>
+ **デフォルト値** – 128
+ **データ型** – 整数

このオプションは、互換性のある INSERT ステートメントを書き換えてバッチに統合する最適化を有効にします。この値は、2 の累乗だけ指数関数的に増加する必要があります。

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

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

ロールの Amazon リソースネーム (ARN)。Plugin\$1Name オプションに BasicJwtCredentialsProvider を指定する場合、必ずこのパラメータを指定してください。ARN は次の形式で指定します。

`arn:partition:service:region:account-id:resource-id`

Plugin\$1Name オプションに BasicJwtCredentialsProvider を指定する場合、このパラメータは必須です。

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

引き受けたロールセッションの識別子。通常は、アプリケーションのユーザーに関連付けられている名前または識別子を渡します。アプリケーションが使用する一時的なセキュリティ認証情報は、そのユーザーに関連付けられます。Plugin\$1Name オプションに BasicJwtCredentialsProvider を指定する場合、このパラメータを指定できます。

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

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

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

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

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

ユーザーまたはロールの IAM アクセスキー。これを指定する場合は、AccessKeyID も指定する必要があります。JDBC URL で渡す場合は、SecretAccessKey を URL エンコードする必要があります。

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

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

認証に使用している IAM ロールに関連付けられた一時的な IAM セッショントークン。JDBC URL で渡される場合、一時的な IAM セッショントークンは URL エンコードされている必要があります。

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

## serverlessAcctId
<a name="jdbc20-serverlessacctid-option"></a>
+ **デフォルト値** – null
+ **データ型** - 文字列

Amazon Redshift Serverless アカウント ID。ドライバーは、指定されたホストからこのパラメータを検出しようとします。Network Load Balancer (NLB) を使用している場合、ドライバーはそれを検出できないため、ここで設定できます。

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

## serverlessWorkGroup
<a name="jdbc20-serverlessworkgroup-option"></a>
+ **デフォルト値** – null
+ **データ型** - 文字列

Amazon Redshift Serverless ワークグループ名。ドライバーは、指定されたホストからこのパラメータを検出しようとします。Network Load Balancer (NLB) を使用している場合、ドライバーはそれを検出できないため、ここで設定できます。

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

## socketFactory
<a name="jdbc20-socketfactory-option"></a>
+ **デフォルト値** – null
+ **データ型** - 文字列

このオプションは、ソケット作成用のソケットファクトリを指定します。

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

## socketTimeout
<a name="jdbc20-sockettimeout-option"></a>
+ **デフォルト値**: 0
+ **データ型** – 整数

タイムアウトする前にソケット読み込みオペレーションを待つ秒数。このオペレーションにこのしきい値よりも時間がかかると、接続は閉じます。このプロパティが 0 に設定されていると、接続はタイムアウトしません。

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

## SSL
<a name="jdbc20-ssl-option"></a>
+ **デフォルト値** – TRUE
+ **データ型** – 文字列

このプロパティを使用して、SSL による接続を有効または無効にします。

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

次の値を指定できます。

**TRUE**  
ドライバーは SSL 経由でサーバーに接続します。

**FALSE**  
ドライバーは SSL を使用せずにサーバーに接続します。このオプションは IAM 認証ではサポートされていません。

または、AuthMech プロパティを構成することもできます。

## SSL\$1Insecure
<a name="jdbc20-ssl_insecure-option"></a>
+ **デフォルト値** – true
+ **データ型** – 文字列

このプロパティは、IDP ホストサーバー証明書を検証する必要があるかどうかを示します。

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

次の値を指定できます。

**true**  
ドライバーは IDP サーバー証明書の信頼性を確認しません。

**false**  
ドライバーは、IDP サーバー証明書の信頼性をチェックします。

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

SSL を使用するときに Amazon Redshift サーバーインスタンスを確認するための信頼できる追加 CA 証明書を含む .pem または .crt ファイルのフルパス。

このパラメータは、SSLKey を指定した場合に必要です。

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

サーバー証明書を使用せずに TLS/SSL 経由でサーバーに接続するときに使用する SSL ファクトリ。

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

SSLCert で指定された証明書を検証するための PKCS8 キーファイルを含む .der ファイルのフルパス。

このパラメータは、SSLCert を指定した場合に必要です。

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

このプロパティを使用して、TLS/SSL が有効になっている場合にドライバーが証明書を検証する方法を指定します。

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

次の値を指定できます。

**verify-ca**  
ドライバーは、証明書が信頼できる認定権限 (CA) から送信されていることを確認します。

**verify-full**  
ドライバは、証明書が信頼できる CA から取得されていること、および証明書のホスト名が接続 URL で指定されたホスト名と一致することを確認します。

## SSLPassword
<a name="jdbc20-sslpassword-option"></a>
+ **デフォルト値**: 0
+ **データ型** – 文字列

SSLKey で指定された暗号化キーファイルのパスワード。

SSLKey が指定され、キーファイルが暗号化されている場合、このパラメータは必須です。

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

SSL を使用するときに Amazon Redshift サーバーインスタンスを確認するためのルート CA 証明書を含む .pem または .crt ファイルのフルパス。

## StsEndpointUrl
<a name="jdbc20-stsendpointurl-option"></a>
+ **デフォルト値** – null
+ **データ型** – 文字列

AWS Security Token Service(AWS STS) エンドポイントを指定することができます。このオプションを指定すると、リージョンオプションは無視されます。このエンドポイントにはセキュアプロトコル (HTTPS) のみを指定できます。

## tcpKeepAlive
<a name="jdbc20-tcpkeepalive-option"></a>
+ **デフォルト値** – TRUE
+ **データ型** – 文字列

このプロパティを使用して、TCP キープアライブを有効または無効にします。

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

次の値を指定できます。

**TRUE**  
接続のタイムアウトを防ぐために TCP キープアライブを使用するようにドライバーを設定します。

**FALSE**  
ドライバーは TCP キープアライブを使用しません。

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

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

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

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

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

次の値を指定できます。

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

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

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

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

データベースへのアクセスに使用するデータベースユーザー名。

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

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

IDP を介して IAM 認証を使用して接続する場合、これは idp\$1host サーバーのユーザー名です。標準認証を使用する場合、これを Amazon Redshift データベースユーザー名として使用できます。

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

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

ID プロバイダによって提供される OAuth 2.1 アクセストークンまたは OpenID Connect ID トークン。アプリケーションは、ウェブアイデンティティのプロバイダーを使用してアプリケーションのユーザーを認証することによって、このトークンを取得する必要があります。Plugin\$1Name オプションに BasicJwtCredentialsProvider を指定する場合、必ずこのパラメータを指定してください。

Plugin\$1Name オプションに BasicJwtCredentialsProvider を指定する場合、このパラメータは必須です。

# JDBC ドライバーバージョン 2.x の以前のバージョン
<a name="jdbc20-previous-driver-version-20"></a>

ツールに特定のバージョンのドライバーが必要な場合にのみ、Amazon Redshift JDBC ドライバーバージョン 2.x の以前のバージョンをダウンロードします。

以前の JDBC 4.2 互換 JDBC ドライバーバージョン 2.x のドライバーを以下に示します。
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.4/redshift-jdbc42-2.2.4.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.4/redshift-jdbc42-2.2.4.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.3/redshift-jdbc42-2.2.3.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.3/redshift-jdbc42-2.2.3.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.2/redshift-jdbc42-2.2.2.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.2/redshift-jdbc42-2.2.2.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.1/redshift-jdbc42-2.2.1.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.1/redshift-jdbc42-2.2.1.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.0/redshift-jdbc42-2.2.0.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.0/redshift-jdbc42-2.2.0.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.34/redshift-jdbc42-2.1.0.34.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.34/redshift-jdbc42-2.1.0.34.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.33/redshift-jdbc42-2.1.0.33.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.33/redshift-jdbc42-2.1.0.33.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.32/redshift-jdbc42-2.1.0.32.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.32/redshift-jdbc42-2.1.0.32.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.30/redshift-jdbc42-2.1.0.30.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.30/redshift-jdbc42-2.1.0.30.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.29/redshift-jdbc42-2.1.0.29.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.29/redshift-jdbc42-2.1.0.29.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.28/redshift-jdbc42-2.1.0.28.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.28/redshift-jdbc42-2.1.0.28.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.26/redshift-jdbc42-2.1.0.26.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.26/redshift-jdbc42-2.1.0.26.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.25/redshift-jdbc42-2.1.0.25.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.25/redshift-jdbc42-2.1.0.25.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.24/redshift-jdbc42-2.1.0.24.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.24/redshift-jdbc42-2.1.0.24.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.23/redshift-jdbc42-2.1.0.23.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.23/redshift-jdbc42-2.1.0.23.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.22/redshift-jdbc42-2.1.0.22.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.22/redshift-jdbc42-2.1.0.22.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.21/redshift-jdbc42-2.1.0.21.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.21/redshift-jdbc42-2.1.0.21.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.20/redshift-jdbc42-2.1.0.20.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.20/redshift-jdbc42-2.1.0.20.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.19/redshift-jdbc42-2.1.0.19.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.19/redshift-jdbc42-2.1.0.19.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.18/redshift-jdbc42-2.1.0.18.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.18/redshift-jdbc42-2.1.0.18.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.17/redshift-jdbc42-2.1.0.17.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.17/redshift-jdbc42-2.1.0.17.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.16/redshift-jdbc42-2.1.0.16.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.16/redshift-jdbc42-2.1.0.16.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.15/redshift-jdbc42-2.1.0.15.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.15/redshift-jdbc42-2.1.0.15.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.14/redshift-jdbc42-2.1.0.14.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.14/redshift-jdbc42-2.1.0.14.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.13/redshift-jdbc42-2.1.0.13.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.13/redshift-jdbc42-2.1.0.13.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.12/redshift-jdbc42-2.1.0.12.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.12/redshift-jdbc42-2.1.0.12.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.11/redshift-jdbc42-2.1.0.11.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.11/redshift-jdbc42-2.1.0.11.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.10/redshift-jdbc42-2.1.0.10.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.10/redshift-jdbc42-2.1.0.10.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.9/redshift-jdbc42-2.1.0.9.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.9/redshift-jdbc42-2.1.0.9.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.8/redshift-jdbc42-2.1.0.8.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.8/redshift-jdbc42-2.1.0.8.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.7/redshift-jdbc42-2.1.0.7.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.7/redshift-jdbc42-2.1.0.7.zip) 

# 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()
```

# Apache Spark 用の Amazon Redshift の統合
<a name="spark-redshift-connector"></a>

 [Apache Spark](https://aws.amazon.com/emr/features/spark/) は、機械学習、ストリーム処理、グラフ分析に役立つ分散処理フレームワークおよびプログラミングモデルです。Apache Spark は、Apache Hadoop と同様に、ビッグデータのワークロードを処理するために一般的に使用されているオープンソースの分散処理システムです。Spark には最適化された有向非循環グラフ (DAG) 実行エンジンが搭載されており、データをメモリ内に積極的にキャッシュします。これにより、特に特定のアルゴリズムやインタラクティブクエリのパフォーマンスを向上させることができます。

 この統合により、Amazon Redshift と Amazon Redshift Serverless のデータを読み書きする Apache Spark アプリケーションを構築するために使用できる Spark コネクタが提供されます。これらのアプリケーションは、アプリケーションのパフォーマンスやデータのトランザクションの一貫性を損なうことはありません。この統合は自動的に [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/) および [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/) に含まれるため、データインジェストと変換パイプラインの一部として Amazon Redshift のデータにアクセスしてロードする Apache Spark ジョブをすぐに実行できます。

現在、この統合では Spark のバージョン 3.3.x、3.4.x、3.5.x、および 4.0.0 を使用できます。

 この統合により、次のことが可能になります。
+  AWS Identity and Access Management (IAM) 認証。詳細については、「[Amazon Redshift での Identity and Access Management](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-authentication-access-control.html)」を参照してください。
+ パフォーマンスを向上させるための述語とクエリのプッシュダウン
+  Amazon Redshift のデータ型 
+ Amazon Redshift および Amazon Redshift Serverless への接続

## Spark コネクタを使用する際の考慮事項と制限事項
<a name="spark-redshift-connector-considerations"></a>
+  tempdir URI は Amazon S3 の場所を指します。この一時ディレクトリは自動的にはクリーンアップされないため、追加コストが発生する可能性があります。*Amazon Simple Storage Service ユーザーガイド*の [Amazon S3 ライフサイクルポリシー](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)を使用して、Amaxon S3 バケットの保持ルールを定義することをお勧めします。
+  デフォルトでは、S3 バケットと Redshift クラスターが異なる AWS リージョンにある場合、Amazon S3 と Redshift 間のコピーは機能しません。個別の AWS リージョンを使用するには、`tempdir_region` パラメータを、`tempdir` に使用する S3 バケットのリージョンに設定します。
+ `tempformat` パラメータを使用して Parquet データを書き込む場合、S3 と Redshift の間でクロスリージョンの書き込みが行われます。
+ [Amazon S3 サーバー側の暗号化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)を使用して、使用する Amazon S3 バケットを暗号化することをお勧めします。
+ [Amazon S3 バケットへのパブリックアクセスをブロックする](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html)ことをお勧めします。
+  Amazon Redshift クラスターがパブリックにアクセスできないようにすることをお勧めします。
+  [Amazon Redshift 監査ログ作成](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing.html)を有効にすることをお勧めします。
+  [Amazon Redshift 保管時の暗号化](https://docs.aws.amazon.com/redshift/latest/mgmt/security-server-side-encryption.html)を有効にすることをお勧めします。
+  Amazon EMR 上の Spark から Amazon Redshift への JDBC 接続に対して SSL を有効にすることをお勧めします。
+ Amazon Redshift 認証パラメータのパラメータ `aws_iam_role` を使用して IAM ロールを渡すことをお勧めします。

# Spark コネクタによる認証
<a name="redshift-spark-connector-authentication"></a>

次の図は、Amazon S3、Amazon Redshift、Spark ドライバー、および Spark エグゼキューター間の認証を示しています。

![\[これは Spark コネクタ認証の図です。\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/images/spark-connector-authentication.png)


## Redshift と Spark 間の認証
<a name="redshift-spark-authentication"></a>

 Amazon Redshift が提供する JDBC ドライバーバージョン 2.x を使用し、サインイン認証情報を指定して Spark コネクタで Amazon Redshift に接続できます。IAM を使用するには、[IAM 認証を使用するように JDBC URL を設定します](https://docs.aws.amazon.com/redshift/latest/mgmt/generating-iam-credentials-configure-jdbc-odbc.html)。Amazon EMR または AWS Glue から Redshift クラスターに接続するには、IAM ロールに一時的な IAM 認証情報を取得するために必要なアクセス権限があることを確認します。次のリストは、IAM ロールが認証情報を取得して Amazon S3 オペレーションを実行するために必要なすべての権限を示しています。
+ [Redshift:GetClusterCredentials](https://docs.aws.amazon.com/redshift/latest/APIReference/API_GetClusterCredentials.html) (プロビジョニングされた Redshift クラスターの場合)
+ [Redshift:DescribeClusters](https://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeClusters.html) (プロビジョニングされた Redshift クラスターの場合)
+ [Redshift:GetWorkgroup](https://docs.aws.amazon.com/redshift-serverless/latest/APIReference/API_GetWorkgroup.html) (Amazon Redshift Serverless ワークグループの場合)
+ [Redshift:GetCredentials](https://docs.aws.amazon.com/redshift-serverless/latest/APIReference/API_GetCredentials.html) (Amazon Redshift Serverless の場合、ワークグループ)
+ [ s3:ListBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)
+ [s3:GetBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetBucket.html)
+ [s3:GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [s3:PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [s3:GetBucketLifecycleConfiguration](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)

 GetClusterCredentials の詳細については、「[GetClusterCredentials のIAM ポリシー](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html#redshift-policy-resources.getclustercredentials-resources)」を参照してください。

また、`COPY` および `UNLOAD` オペレーション中に Amazon Redshift が IAM ロールを引き継げるようにする必要があります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "redshift.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

最新の JDBC ドライバーを使用している場合、ドライバーは Amazon Redshift の自己署名証明書から ACM 証明書への移行を自動的に管理します。ただし、[JDBC URL に SSL オプションを指定する](https://docs.aws.amazon.com/redshift/latest/mgmt/jdbc20-configuration-options.html#jdbc20-ssl-option)必要があります。

 以下は、JDBC ドライバーの URL と `aws_iam_role` を指定して Amazon Redshiftに接続する方法の例です。

```
df.write \
  .format("io.github.spark_redshift_community.spark.redshift ") \
  .option("url", "jdbc:redshift:iam://<the-rest-of-the-connection-string>") \
  .option("dbtable", "<your-table-name>") \
  .option("tempdir", "s3a://<your-bucket>/<your-directory-path>") \
  .option("aws_iam_role", "<your-aws-role-arn>") \
  .mode("error") \
  .save()
```

## Amazon S3 と Spark 間の認証
<a name="spark-s3-authentication"></a>

 IAM ロールを使用して Spark と Amazon S3 間での認証を行う場合は、以下のいずれかの方法を使用します。
+ AWS SDK for Java は、DefaultAWSCredentialsProviderChain クラスによって実装されたデフォルトの認証情報プロバイダーチェーンを使用して、AWS 認証情報を自動的に見つけようとします。詳細については、「[デフォルトの認証情報プロバイダチェーンの使用](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-default)」を参照してください。
+ [Hadoop 設定プロパティ](https://github.com/apache/hadoop/blob/trunk/hadoop-tools/hadoop-aws/src/site/markdown/tools/hadoop-aws/index.md)で AWS キーを指定することができます。例えば、`tempdir` 設定が `s3n://` ファイルシステムを指している場合、Hadoop XML 設定ファイルで `fs.s3n.awsAccessKeyId` および `fs.s3n.awsSecretAccessKey` プロパティを設定するか、`sc.hadoopConfiguration.set()` を呼び出して Spark のグローバル Hadoop 設定を変更します。

例えば、s3n ファイルシステムを使用している場合は、以下を追加します。

```
sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "YOUR_KEY_ID")
sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", "YOUR_SECRET_ACCESS_KEY")
```

s3a ファイルシステムの場合は、以下を追加します。

```
sc.hadoopConfiguration.set("fs.s3a.access.key", "YOUR_KEY_ID")
sc.hadoopConfiguration.set("fs.s3a.secret.key", "YOUR_SECRET_ACCESS_KEY")
```

Python を使用している場合は、以下のオペレーションを使用します。

```
sc._jsc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", "YOUR_KEY_ID")
sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", "YOUR_SECRET_ACCESS_KEY")
```
+ `tempdir` URL で認証キーをエンコードします。例えば、URI `s3n://ACCESSKEY:SECRETKEY@bucket/path/to/temp/dir` では キーペア (`ACCESSKEY`、`SECRETKEY`) をエンコードします。

## Redshift と Amazon S3 間の認証
<a name="redshift-s3-authentication"></a>

 クエリで COPY コマンドと UNLOAD コマンドを使用している場合は、ユーザーに代わってクエリを実行するために Amazon S3 に Amazon Redshift へのアクセス権を付与する必要もあります。そのためには、まず [Amazon Redshift が他の AWS のサービスにアクセスすることを許可し](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html)、次に [IAM ロールを使用して COPY オペレーションと UNLOAD オペレーション](https://docs.aws.amazon.com/redshift/latest/mgmt/copy-unload-iam-role.html)を許可します。

ベストプラクティスとして、アクセス許可ポリシーを IAM ロールにアタッチし、それを必要に応じてユーザーやグループに割り当てることをお勧めします。詳細については、「[Amazon Redshift での Identity and Access Management](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-authentication-access-control.html)」を参照してください。

## AWS Secrets Manager との統合
<a name="redshift-secrets-manager-authentication"></a>

Redshift のユーザー名とパスワードの認証情報は、AWS Secrets Manager に保存されているシークレットから取得できます。Redshift 認証情報を自動的に提供するには、`secret.id` パラメータを使用します。Redshift 認証情報シークレットを作成する方法の詳細については、「[AWS Secrets Manager データベースシークレットを作成する](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_database_secret.html)」を参照してください。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/redshift-spark-connector-authentication.html)

**注記**  
 謝辞: このドキュメントには、[Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) ライセンスの下でライセンス提供された [Apache Software Foundation](http://www.apache.org/) によって開発されたサンプルコードと説明が含まれています。

# プッシュダウンによるパフォーマンスの向上
<a name="spark-redshift-connector-pushdown"></a>

 Spark コネクタは、述語とクエリのプッシュダウンを自動的に適用してパフォーマンスを最適化します。このサポートは、クエリでサポートされている関数を使用している場合、Spark コネクタがその関数を SQL クエリに変換し、Amazon Redshift でそのクエリを実行することを意味します。この最適化により、取得されるデータが少なくなるため、Apache Spark が処理するデータが少なくなり、パフォーマンスが向上します。デフォルトでは、プッシュダウンは自動的に有効になります。非アクティブにするには、`autopushdown` を false に設定します。

```
import sqlContext.implicits._val 
 sample= sqlContext.read
    .format("io.github.spark_redshift_community.spark.redshift")
    .option("url",jdbcURL )
    .option("tempdir", tempS3Dir)
    .option("dbtable", "event")
    .option("autopushdown", "false")
    .load()
```

 プッシュダウンでは以下の機能がサポートされています。このリストにない関数を使用している場合、Spark コネクタは Amazon Redshift ではなく Spark でその関数を実行するため、パフォーマンスが最適化されません。Spark の関数の一覧については、「[Built-in Functions](https://spark.apache.org/docs/latest/api/sql/index.html)」(組み込み関数) を参照してください。
+ 集計関数
  + avg
  + count
  + max
  + min
  + sum
  + stddev\$1samp
  + stddev\$1pop
  + var\$1samp
  + var\$1pop
+ ブール演算子
  + in
  + isnull
  + isnotnull
  + contains
  + endswith
  + startswith
+ 論理演算子
  + and
  + or
  + not (または \$1)
+ 数学関数
  + \$1
  + -
  + \$1
  + /
  + - (単項)
  + abs
  + acos
  + asin
  + atan
  + ceil
  + cos
  + exp
  + floor
  + greatest
  + least
  + log10
  + pi
  + pow
  + round
  + sin
  + sqrt
  + tan
+ その他の関数
  + cast
  + coalesce
  + decimal
  + if
  + 情報
+ リレーショナル演算子
  + \$1=
  + =
  + >
  + >=
  + <
  + <=
+ 文字列関数
  + ascii
  + lpad
  + rpad
  + translate
  + upper
  + lower
  + length
  + trim
  + ltrim
  + rtrim
  + like
  + substring
  + concat
+ 日付および時刻関数
  + add\$1months
  + date
  + date\$1add
  + date\$1sub
  + date\$1trunc
  + timestamp
  + trunc
+ 数学オペレーション
  + CheckOverflow
  + PromotePrecision
+ リレーショナルオペレーション
  + Aliases (例、AS)
  + CaseWhen
  + Distinct
  + InSet
  + 結合とクロス結合
  + Limits
  + Unions、union all
  + ScalarSubquery
  + Sorts (ascending および descending)
  + UnscaledValue

# その他の設定オプション
<a name="spark-redshift-connector-other-config"></a>

このページでは、Amazon Redshift Spark コネクタのために指定できるオプションを説明しています。

## 文字列列の最大サイズ
<a name="spark-redshift-connector-other-config-max-size"></a>

Redshift は、テーブルの作成時に文字列列をテキスト列として作成し、VARCHAR (256) として格納します。より大きなサイズをサポートする列が必要な場合は、maxlength を使用して文字列列の最大長を指定できます。`maxlength` を指定する方法の例を次に示します。

```
columnLengthMap.foreach { case (colName, length) =>
  val metadata = new MetadataBuilder().putLong("maxlength", length).build()
  df = df.withColumn(colName, df(colName).as(colName, metadata))
}
```

## 列のタイプ
<a name="spark-redshift-connector-other-config-column-type"></a>

列タイプを設定するには、`redshift_type` フィールドを使用します。

```
columnTypeMap.foreach { case (colName, colType) =>
  val metadata = new MetadataBuilder().putString("redshift_type", colType).build()
  df = df.withColumn(colName, df(colName).as(colName, metadata))
}
```

## 列の圧縮エンコード
<a name="spark-redshift-connector-other-config-compression-encoding"></a>

 列に特定の圧縮エンコードを使用するには、エンコードフィールドを使用します。サポートされている圧縮エンコードの詳細なリストについては、「[圧縮エンコード](https://docs.aws.amazon.com/redshift/latest/dg/c_Compression_encodings.html)」を参照してください。

## 列の説明
<a name="spark-redshift-connector-other-config-description"></a>

説明を設定するには、`description` フィールドを使用します。

## Redshift と Amazon S3 間の認証
<a name="spark-redshift-connector-other-config-unload-as-text"></a>

 デフォルトでは、結果は Parquetet 形式で Amazon S3 にアンロードされます。結果をパイプ区切りのテキストファイルとしてアンロードするには、次のオプションを指定します。

```
.option("unload_s3_format", "TEXT")
```

## プッシュダウンステートメント
<a name="spark-redshift-connector-other-config-lazy-pushdown"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/spark-redshift-connector-other-config.html)

## コネクタパラメータ
<a name="spark-redshift-connector-other-config-spark-parameters"></a>

パラメータマップまたは Spark SQL の `OPTIONS` は次の設定をサポートしています。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/spark-redshift-connector-other-config.html)

**注記**  
 謝辞: このドキュメントには、[Apache 2.0 ライセンス](https://www.apache.org/licenses/LICENSE-2.0)の下でライセンス提供された [Apache Software Foundation](http://www.apache.org/) によって開発されたサンプルコードと説明が含まれています。

# サポートされているデータ型
<a name="spark-redshift-connector-data-types"></a>

Amazon Redshift の以下のデータ型は Spark コネクタでサポートされています。Amazon Redshift でサポートされているデータ型の完全なリストについては、「[データ型](https://docs.aws.amazon.com//redshift/latest/dg/c_Supported_data_types.html)」を参照してください。データ型が下の表にない場合、そのデータ型は Spark コネクタではサポートされていません。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/spark-redshift-connector-data-types.html)

## 複雑なデータ型
<a name="spark-redshift-connector-complex-data-types"></a>

 Spark コネクタを使用して、Redshift の SUPER データ型列との間で、`ArrayType`、`MapType`、`StructType` のような Spark の複雑なデータ型を読み書きできます。読み取りオペレーションにスキーマを指定すると、列のデータは Spark 内の対応する複合型 (ネストされた型も含む) に変換されます。さらに、`autopushdown` を有効にすると、ネストされた属性、マップ値、配列インデックスの投影が Redshift にプッシュダウンされるため、データの一部だけにアクセスするときに、ネストされたデータ構造全体をアンロードする必要がなくなります。

コネクタから DataFrames を書き込む場合、`MapType` 型の列 (`StringType` を使用)、`StructType`、または `ArrayType` は、Redshift SUPER データ型列に書き込まれます。これらのネストされたデータ構造を記述する場合、`tempformat` パラメータは `CSV`、`CSV GZIP`、または `PARQUET` である必要があります。`AVRO` を使用すると、例外が発生します。また、`StringType` 以外のキータイプを持つ `MapType` データ構造を記述すると、例外が発生します。

### StructType
<a name="spark-redshift-connector-complex-data-types-examples-structtype"></a>

次の例は、構造体を含む SUPER データ型のテーブルを作成する方法を示しています。

```
create table contains_super (a super);
```

その後、次の例のようなスキーマを使用して、テーブルの SUPER 列 `a` から `StringType` フィールド `hello` をクエリできます。

```
import org.apache.spark.sql.types._

val sc = // existing SparkContext
val sqlContext = new SQLContext(sc)

val schema = StructType(StructField("a", StructType(StructField("hello", StringType) ::Nil)) :: Nil)

val helloDF = sqlContext.read
.format("io.github.spark_redshift_community.spark.redshift")
.option("url", jdbcURL )
.option("tempdir", tempS3Dir)
.option("dbtable", "contains_super")
.schema(schema)
.load().selectExpr("a.hello")
```

次の例は、構造体を `a` 列に書き込む方法を示しています。

```
import org.apache.spark.sql.types._
import org.apache.spark.sql._

val sc = // existing SparkContext
val sqlContext = new SQLContext(sc)

val schema = StructType(StructField("a", StructType(StructField("hello", StringType) ::Nil)) :: Nil)
val data = sc.parallelize(Seq(Row(Row("world"))))
val mydf = sqlContext.createDataFrame(data, schema)

mydf.write.format("io.github.spark_redshift_community.spark.redshift").
option("url", jdbcUrl).
option("dbtable", tableName).
option("tempdir", tempS3Dir).
option("tempformat", "CSV").
mode(SaveMode.Append).save
```

### MapType
<a name="spark-redshift-connector-complex-data-types-examples-maptype"></a>

`MapType` を使用してデータを表す場合は、スキーマ内の `MapType` データ構造を使用して、マップ内のキーに対応する値を取得します。`MapType` データ構造のすべてのキーは String 型でなければならず、すべての値は int のように同じ型でなければなりません。

次の例は、列 `a` のキー `hello` の値を取得する方法を示しています。

```
import org.apache.spark.sql.types._

val sc = // existing SparkContext
val sqlContext = new SQLContext(sc)

val schema = StructType(StructField("a", MapType(StringType, IntegerType))::Nil)

val helloDF = sqlContext.read
    .format("io.github.spark_redshift_community.spark.redshift")
    .option("url", jdbcURL )
    .option("tempdir", tempS3Dir)
    .option("dbtable", "contains_super")
    .schema(schema)
    .load().selectExpr("a['hello']")
```

### ArrayType
<a name="spark-redshift-connector-complex-data-types-examples-arraytype"></a>

列に構造体ではなく配列が含まれている場合は、コネクタを使用して配列の最初の要素をクエリできます。

```
import org.apache.spark.sql.types._

val sc = // existing SparkContext
val sqlContext = new SQLContext(sc)

val schema = StructType(StructField("a", ArrayType(IntegerType)):: Nil)

val helloDF = sqlContext.read
    .format("io.github.spark_redshift_community.spark.redshift")
    .option("url", jdbcURL )
    .option("tempdir", tempS3Dir)
    .option("dbtable", "contains_super")
    .schema(schema)
    .load().selectExpr("a[0]")
```

### 制限事項
<a name="spark-redshift-connector-complex-data-types-limitations"></a>

Spark コネクタで複雑なデータ型を使用する場合は、次の制限があります。
+ ネストされた構造体フィールド名とマップキーはすべて小文字でなければなりません。大文字を含む複雑なフィールド名をクエリする場合は、回避策として、スキーマを省略し、`from_json` spark 関数を使用して、返された文字列をローカルに変換するよう試みることができます。
+ 読み取りまたは書き込みオペレーションで使用されるマップフィールドには、`StringType` キーのみが必要です。
+ `CSV`、`CSV GZIP`、および `PARQUET ` のみが、複合型を Redshift に書き込むためにサポートされる tempformat 値です。`AVRO ` を使用しようとすると、例外が発生します。

# Amazon Redshift での ODBC ドライバーのバージョン 2.x による接続の設定
<a name="odbc20-install"></a>

ODBC 接続を使用すると、多くのサードパーティー SQL クライアントツールおよびアプリケーションから Amazon Redshift クラスターに接続できます。クライアントツールで JDBC がサポートされる場合、JDBC に用意された設定が簡単なため、ODBC ではなくその接続タイプを使用することを選択できます。クライアントツールで JDBC がサポートされていない場合は、このセクションの手順に従って、クライアントコンピュータまたは Amazon EC2 インスタンスで ODBC 接続を設定できます。

Amazon Redshift には、Linux、Windows、Mac オペレーティングシステム用の 64 ビット ODBC ドライバーが用意されています。32 ビット ODBC ドライバーは廃止されています。今後、緊急のセキュリティパッチを除き、32 ビット ODBC ドライバーのアップデートはリリースされません。

ODBC ドライバーの変更に関する最新情報については、「[変更ログ](https://github.com/aws/amazon-redshift-odbc-driver/blob/master/CHANGELOG.md)」を参照してください。

**Topics**
+ [ODBC URL の取得](odbc20-getting-url.md)
+ [Microsoft Windows での Amazon Redshift ODBC ドライバーの使用](odbc20-install-config-win.md)
+ [Linux での Amazon Redshift ODBC ドライバーの使用](odbc20-install-config-linux.md)
+ [Apple macOS での Amazon Redshift ODBC ドライバーの使用](odbc20-install-config-mac.md)
+ [認証方法](odbc20-authentication-ssl.md)
+ [データ型変換](odbc20-converting-data-types.md)
+ [ODBC ドライバーオプション](odbc20-configuration-options.md)
+ [以前のバージョンの ODBC ドライバー](odbc20-previous-versions.md)

# ODBC URL の取得
<a name="odbc20-getting-url"></a>

Amazon Redshift では、Amazon Redshift コンソールに、クラスターの ODBC URL が表示されます。この URL には、クライアントコンピュータとデータベースの間の接続をセットアップするために必要な情報が含まれています。

ODBC の URL 形式を次に示します。

```
Driver={driver}; Server=endpoint_host; Database=database_name; UID=user_name; PWD=password; Port=port_number
```

前述の形式のフィールドには、次の値があります。


| フィールド | 値 | 
| --- | --- | 
| Driver | 使用する 64 ビット ODBC ドライバーの名前: [Amazon Redshift ODBC Driver (x64)] (Amazon Redshift ODBC ドライバー (x64)) | 
| Server | Amazon Redshift クラスターのエンドポイント ホスト。 | 
| Database | クラスター用に作成したデータベース。 | 
| UID | データベースに接続するアクセス許可を持つデータベースユーザーアカウントのユーザー名。この値はクラスターレベルのアクセス許可ではなくデータベースレベルのアクセス許可ですが、クラスターの起動時に設定した Redshift 管理者ユーザーアカウントを使用できます。 | 
| PWD | データベースに接続するデータベースユーザーアカウントのパスワード。 | 
| Port | クラスターを起動したときに指定したポート番号。ファイアウォールがある場合、このポートが開いていて使用できることを確認します。 | 

ODBC URL の例を次に示します。

```
Driver={Amazon Redshift ODBC Driver (x64)}; Server=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com; Database=dev; UID=adminuser; PWD=insert_your_admin_user_password_here; Port=5439
```

ODBC URL の場所については、「[クラスター接続文字列を検索する](https://docs.aws.amazon.com/redshift/latest/mgmt/configuring-connections.html#connecting-connection-string)」を参照してください。

# Microsoft Windows での Amazon Redshift ODBC ドライバーの使用
<a name="odbc20-install-config-win"></a>

Amazon Redshift データウェアハウスにアクセスするクライアントコンピュータに Amazon Redshift ODBC ドライバーをインストールする必要があります。ドライバーをインストールするコンピュータには、それぞれ以下の最小要件があります。
+ マシンの管理者権限。
+ マシンは、以下のシステム要件を満たしている。
  + 次のいずれかの OS。
    + Windows 10 または 8.1。
    + Windows Server 2019、2016、または 2012。
  + 100 MB の使用可能なディスク容量。
  + 64 ビット Windows 用の Visual Studio 2015 の Visual C\$1\$1 再頒布可能パッケージがインストールされている。インストールパッケージは、Microsoft ウェブサイトの「[Visual Studio 2022 の Visual C\$1\$1 再頒布可能パッケージのダウンロード](https://visualstudio.microsoft.com/downloads/#microsoft-visual-c-redistributable-for-visual-studio-2022)」からダウンロードできます。

# Amazon Redshift ODBC ドライバーをダウンロードしてインストールする
<a name="odbc20-install-win"></a>

Windows オペレーティングシステム用の Amazon Redshift ODBC ドライバーをダウンロードしてインストールするには、次の手順に従います。Amazon Redshift での使用が認定されているサードパーティーアプリケーションと固有のドライバーを必要とするアプリケーションを実行している場合にのみ、これらとは異なるドライバーを使用できます。

ODBC ドライバーをダウンロードしてインストールするには 

1. 次のドライバーをダウンロードします: [64 ビット ODBC ドライバーバージョン 2.1.15.0](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.15.0/AmazonRedshiftODBC64-2.1.15.0.msi) 

   このドライバーの名前は **[Amazon Redshift ODBC Driver (x64)]** (Amazon Redshift ODBC ドライバー (x64)) です。

1. 「[Amazon Redshift ODBC ドライバーバージョン 2.x ライセンス](https://github.com/aws/amazon-redshift-odbc-driver/blob/master/LICENSE)」を確認します。

1. .msi ファイルをダブルクリックし、ウィザードの手順に従ってドライバーをインストールします。

# ODBC 接続用のシステム DSN エントリの作成
<a name="odbc20-dsn-win"></a>

ODBC ドライバーをダウンロードしてインストールした後、クライアントマシンか Amazon EC2 インスタンスにデータソース名 (DSN) エントリを追加します。SQL クライアントツールは、このデータソースを使用して Amazon Redshift データベースに接続できます。

ユーザー DSN の代わりにシステム DSN を作成することをお勧めします。一部のアプリケーションでは、データのロードに使用しているデータベースユーザーアカウントとは異なるデータベースユーザーアカウントで作成されたユーザー DSN を検出できないことがあります。

**注記**  
AWS Identity and Access Management (IAM) 認証情報または ID プロバイダー (IdP) 認証情報を使用した認証には、追加の手順が必要です。詳細については、「[IAM 認証情報を使用するように JDBC または ODBC 接続を設定する](https://docs.aws.amazon.com/redshift/latest/mgmt/generating-iam-credentials-configure-jdbc-odbc.html)」を参照してください。

ODBC 接続用のシステム DSN エントリを作成するには

1. **[Start]** (スタート) メニューで、「ODBC Data Sources」と入力します。**[ODBC Data Sources]** (ODBC データソース) を選択します。

   Amazon Redshift への接続に使用するクライアントアプリケーションと同じビット数を持つ ODBC Data Source Administrator を選択してください。

1. **[ODBC Data Source Administrator]** (ODBC データソース管理者) で、**[Driver]** (ドライバー) タブを選択し、次のドライバーフォルダ **[Amazon Redshift ODBC Driver (x64)]** (Amazon Redshift ODBC ドライバー (x64)) を探します。

1. コンピューターのすべてのユーザーに対してドライバーを設定する場合は **[システム DSN]** タブを選択し、データベースユーザーアカウント別にドライバーを設定する場合は **[ユーザー DSN]** タブを選択します。

1. **[追加]** を選択します。**[新しいデータソースを作成]** ウィンドウが開きます。

1. **[Amazon Redshift ODBC driver (x64)]** (Amazon Redshift ODBC ドライバー (x64)) を選択し、**[Finish]** (完了) を選択します。[**Amazon Redshift ODBC Driver DSN Setup (ODBC ドライバー DSN セットアップ)**] ウィンドウが開きます。

1. **[Connection Settings]** (接続の設定) セクションで以下の情報を入力します。
   + 

**データソース名**  
 データソースの名前を入力します。例えば、「**Amazon Redshift 入門ガイド」に従っているのであれば、この DSN に関連付けるクラスターを覚えやすくするために `exampleclusterdsn` と入力します。
   + 

**サーバー**  
 Amazon Redshift クラスターのエンドポイントホストを指定します。この情報は、クラスターの詳細ページの Amazon Redshift コンソールで見つけることができます。詳細については、「[Amazon Redshift での接続の設定](https://docs.aws.amazon.com/redshift/latest/mgmt/configuring-connections.html)」を参照してください。
   + 

**ポート**  
 データベースが使用するポート番号を入力します。クラスターの作成、変更、または移行時に選択したポートに応じて、選択したポートへのアクセスを許可します。
   + 

**データベース**  
 Amazon Redshift データベースの名前を入力します。データベース名を指定せずにクラスターを起動した場合は、`dev`を入力します。それ以外の場合は、起動プロセスで選択した名前を使用します。「Amazon Redshift 入門ガイド」**に従っているのであれば、`dev` と入力します。

1. **[Authentication]** (認証) セクションで、標準認証または IAM 認証を設定する設定オプションを指定します。

1. **[SSL Options]** (SSL オプション) を選択し、次の値を指定します。
   + 

**認証モード**  
Secure Sockets Layer (SSL) を処理するモードを選択します。テスト環境では、`prefer`を使用できます。ただし、本番稼働環境の場合、および安全なデータ交換が必要な場合は、`verify-ca` または `verify-full` を使用します。
   + 

**最小 TLS**  
オプションとして、ドライバーがデータストアで接続の暗号化に使用できる TLS/SSL の最小バージョンを選択します。例えば、TLS 1.2 を指定すると、接続の暗号化に TLS 1.1 は使用できません。デフォルトのバージョンは、TLS 1.2 です。

1.  **[Proxy]** (プロキシ) タブで、任意のプロキシ接続設定を指定します。

1. **[Cursor]** (カーソル) タブで、クエリ結果を SQL クライアントツールまたはアプリケーションに返す方法に関するオプションを指定します。

1. **[詳細オプション]** で、`logLevel`、`logPath`、`compression`、および他のオプションの値を指定します。

1. **[テスト]** を選択します。クライアントコンピュータが Amazon Redshift データベースに接続できる場合は、**[Connection successful]** (接続成功) というメッセージが表示されます。クライアントコンピュータがデータベースに接続できない場合、ログファイルを生成して AWS のサポートに連絡し、潜在的な問題をトラブルシューティングすることができます。ログの生成については、「(リンク)」を参照してください。

1.  [**OK**] を選択してください。

# Linux での Amazon Redshift ODBC ドライバーの使用
<a name="odbc20-install-config-linux"></a>

Amazon Redshift データウェアハウスにアクセスするクライアントコンピュータに Amazon Redshift ODBC ドライバーをインストールする必要があります。ドライバーをインストールするコンピュータには、それぞれ以下の最小要件があります。
+ マシン上のルートアクセス。
+ 以下のいずれかのディストリビューション。
  + Red Hat® Enterprise Linux® (RHEL) 8 以降
  + CentOS 8 以降。
+ 150 MB の使用可能なディスク容量。
+ unixODBC 2.2.14 以降。
+ glibc 2.26 以降。

# Amazon Redshift ODBC ドライバーをダウンロードしてインストールする
<a name="odbc20-install-linux"></a>

Linux 用の Amazon Redshift ODBC ドライバーバージョン 2.x をダウンロードしてインストールするには

1.  次のドライバーをダウンロードします。
   + [x86 64 ビット RPM ドライバーバージョン 2.1.15.0](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.15.0/AmazonRedshiftODBC-64-bit-2.1.15.0.x86_64.rpm) 
   + [ARM 64 ビット RPM ドライバーバージョン 2.1.15.0](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.15.0/AmazonRedshiftODBC-64-bit-2.1.15.0.aarch64.rpm) 
**注記**  
32 ビット ODBC ドライバーの提供は終了しました。今後、緊急のセキュリティパッチを除きアップデートはリリースされません。

1.  パッケージをダウンロードした場所に移動し、以下のいずれかのコマンドを実行します。使用している Linux ディストリビューションに対応するコマンドを使用します。

   RHEL および CentOS オペレーティングシステムでは、次のコマンドを実行します。

   ```
   yum --nogpgcheck localinstall RPMFileName
   ```

   `RPMFileName` を RPM パッケージファイル名に置き換えます。たとえば、次のコマンドは 64 ビットドライバーのインストールを示しています。

   ```
   yum --nogpgcheck localinstall AmazonRedshiftODBC-64-bit-2.x.xx.xxxx.x86_64.rpm
   ```

# ODBC ドライバーマネージャーを使用して ODBC ドライバーを設定する
<a name="odbc20-config-linux"></a>

Linux では、ODBC ドライバーマネージャーを使用して ODBC 接続を設定します。ODBC ドライバーマネージャーは設定ファイルを使用して ODBC データソースおよびドライバーを定義および設定します。使用する ODBC ドライバーマネージャーは、使用するオペレーティングシステムによって異なります。

## unixODBC ドライバーマネージャーを使用して ODBC ドライバーを設定する
<a name="odbc20-config-unixodbc-linux"></a>

Amazon Redshift ODBC ドライバーを設定するには、以下のファイルが必要です。
+ ` amazon.redshiftodbc.ini `
+ ` odbc.ini `
+ ` odbcinst.ini `

 デフォルトの場所にインストールした場合、`amazon.redshiftodbc.ini` 設定ファイルは `/opt/amazon/redshiftodbcx64` にあります。

 また、`/opt/amazon/redshiftodbcx64` の下に、`odbc.ini` と `odbcinst.ini` のサンプルファイルがあります。これらのファイルは、Amazon Redshift ODBC ドライバーとデータソース名 (DSN) の設定例として使用できます。

 設定ファイルに Amazon Redshift ODBC ドライバーのインストールディレクトリを使用することは推奨されません。インストール済みのディレクトリのサンプルファイルは例示のみを目的としています。Amazon Redshift ODBC ドライバーを後で再インストールするか、新しいバージョンにアップグレードすると、インストールディレクトリが上書きされます。インストールディレクトリ内のファイルに加えた変更はすべて失われます。

 これを回避するには、インストールディレクトリ以外のディレクトリに `amazon.redshiftodbc.ini` ファイルをコピーします。このファイルをユーザーのホームディレクトリにコピーする場合は、隠しファイルにするためにファイル名の先頭にピリオド (.) を追加します。

 `odbc.ini` および `odbcinst.ini` ファイルについては、ユーザーのホームディレクトリにある設定ファイルを使用するか、別のディレクトリに新しいバージョンを作成します。デフォルトでは、Linux オペレーティングシステムには、ユーザーのホームディレクトリ (`/home/$USER` または `~/.`) に `odbc.ini` ファイルと `odbcinst.ini` ファイルが必要です。これらの既定のファイルは隠しファイルで、各ファイル名の前にドット (.) が表示されます。これらのファイルは、`-a`フラグを使用してディレクトリの内容をリストした場合にのみ表示されます。

 `odbc.ini` ファイルと `odbcinst.ini` ファイルに対してどちらのオプションを選択しても、ファイルを変更してドライバーと DSN 設定情報を追加します。新しいファイルを作成する場合は、これらの設定ファイルの場所を指定する環境変数を設定する必要もあります。

 デフォルトでは、ODBC ドライバーマネージャーは、隠しバージョンの `odbc.ini` および `odbcinst.ini` 設定ファイル (`.odbc.ini` と `.odbcinst.ini` という名前) を使用して設定し、ホームディレクトリに配置します。また、ドライバーのインストールディレクトリの `amazon.redshiftodbc.ini` ファイルを使用するように設定されています。これらの設定ファイルを他の場所に保存する場合は、ドライバーマネージャーがファイルを見つけることができるように、次に説明する環境変数を設定します。

 unixODBC を使用している場合は、次の手順に従います。
+  `odbc.ini` のファイルのフルパスとファイル名に `ODBCINI` を設定します。
+  `odbcinst.ini` のファイルを含むディレクトリのフルパスに `ODBCSYSINI` を設定します。
+  `amazon.redshiftodbc.ini` のファイルのフルパスとファイル名に `AMAZONREDSHIFTODBCINI` を設定します。

以下は、上記の値を設定する例です。

```
export ODBCINI=/usr/local/odbc/odbc.ini 
export ODBCSYSINI=/usr/local/odbc 
export AMAZONREDSHIFTODBCINI=/etc/amazon.redshiftodbc.ini
```

## Linux でデータソース名 (DSN) を使用して接続を設定する
<a name="odbc20-dsn-linux"></a>

データソース名 (DSN) を使用してデータストアに接続する場合は、データソース名 (DSN) を定義するように `odbc.ini` ファイルを設定します。`odbc.ini` ファイルのプロパティを設定して、データストアの接続情報を指定する DSN を作成します。

Linux オペレーティングシステムでは次の形式を使用します。

```
[ODBC Data Sources]
driver_name=dsn_name

[dsn_name]
Driver=path/driver_file
Host=cluster_endpoint
Port=port_number
Database=database_name
locale=locale
```

次に、Linux オペレーティングシステムでの、64 ビット ODBC ドライバーを使用する `odbc.ini` の設定の例を示します。

```
[ODBC Data Sources]
Amazon_Redshift_x64=Amazon Redshift ODBC Driver (x64)

[Amazon_Redshift_x64]
Driver=/opt/amazon/redshiftodbcx64/librsodbc64.so
Host=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com
Port=5932Database=dev
locale=en-US
```

## Linux で DSN を使用しない接続を設定する
<a name="odbc20-no-dsn-linux"></a>

 DSN を使用しない接続を介してデータストアに接続するには、`odbcinst.ini` ファイルでドライバーを定義します。次に、アプリケーションに DSN を使用しない接続文字列を指定します。

Linux オペレーティングシステムでは次の形式を使用します。

```
[ODBC Drivers]
driver_name=Installed
...
                            
[driver_name]
Description=driver_description
Driver=path/driver_file
    
...
```

次に、Linux オペレーティングシステムでの、64 ビット ODBC ドライバーを使用する `odbcinst.ini` の設定の例を示します。

```
[ODBC Drivers]
Amazon Redshift ODBC Driver (x64)=Installed

[Amazon Redshift ODBC Driver (x64)]
Description=Amazon Redshift ODBC Driver (64-bit)
Driver=/opt/amazon/redshiftodbcx64/librsodbc64.so
```

# Apple macOS での Amazon Redshift ODBC ドライバーの使用
<a name="odbc20-install-config-mac"></a>

Amazon Redshift データウェアハウスにアクセスするクライアントコンピュータに Amazon Redshift ODBC ドライバーをインストールする必要があります。ドライバーをインストールするコンピュータには、それぞれ以下の最小要件があります。
+ マシン上のルートアクセス。
+ Apple macOS システム要件
  + Apple macOS バージョン 11.7 以降 (Apple macOS Big Sur、Monterey、Ventura 以降など) の 64 ビットバージョンが必要です。Redshift ODBC ドライバーは 64 ビットクライアントアプリケーションのみをサポートします。
  + 150 MB の使用可能なディスク容量。
  + ドライバーは、iODBC 3.52.9\$1 または unixODBC 2.3.7\$1 で構築されたアプリケーションをサポートします。

# Amazon Redshift ODBC ドライバーをダウンロードしてインストールする
<a name="odbc20-install-mac"></a>

Apple macOS で Amazon Redshift ODBC ドライバーをダウンロードしてインストールするには、次の手順に従います。Amazon Redshift での使用が認定されているサードパーティーアプリケーションと固有のドライバーを必要とするアプリケーションを実行している場合にのみ、これらとは異なるドライバーを使用できます。

ODBC ドライバーをダウンロードしてインストールするには 

1. 次のドライバーをダウンロードします: [64 ビット ODBC ドライバーバージョン 2.1.15.0](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.15.0/AmazonRedshiftODBC-64-bit.2.1.15.0.universal.pkg) 

   このドライバーは、x86\$164 アーキテクチャと arm64 アーキテクチャの両方でサポートされています。このドライバーの名前は **[Amazon Redshift ODBC Driver (x64)]** (Amazon Redshift ODBC ドライバー (x64)) です。

1. 「[Amazon Redshift ODBC ドライバーバージョン 2.x ライセンス](https://github.com/aws/amazon-redshift-odbc-driver/blob/master/LICENSE)」を確認します。

1. .pkg ファイルをダブルクリックし、ウィザードの手順に従ってドライバーをインストールします。または、以下のコマンドを実行します。

   ```
   sudo installer -pkg PKGFileName -target /
   ```

   `PKGFileName` を pkg パッケージファイル名に置き換えます。たとえば、次のコマンドは 64 ビットドライバーのインストールを示しています。

   ```
   sudo installer -pkg ./AmazonRedshiftODBC-64-bit.X.X.XX.X.universal.pkg -target /
   ```

# ODBC ドライバーマネージャーを使用して ODBC ドライバーを設定する
<a name="odbc20-config-mac"></a>

Mac では、ODBC ドライバーマネージャーを使用して ODBC 接続を設定します。ODBC ドライバーマネージャーは設定ファイルを使用して ODBC データソースおよびドライバーを定義および設定します。使用する ODBC ドライバーマネージャーは、使用するオペレーティングシステムによって異なります。

## iODBC または unixODBC ドライバーマネージャーを使用して ODBC ドライバーを設定する
<a name="odbc20-config-iodbc-mac"></a>

Amazon Redshift ODBC ドライバーを設定するには、以下のファイルが必要です。
+ ` amazon.redshiftodbc.ini `
+ ` odbc.ini `
+ ` odbcinst.ini `

 デフォルトの場所にインストールした場合、`amazon.redshiftodbc.ini` 設定ファイルは `/opt/amazon/redshiftodbcx64` にあります。

 また、`/opt/amazon/redshiftodbcx64` の下に、`odbc.ini` と `odbcinst.ini` のサンプルファイルがあります。これらのファイルは、Amazon Redshift ODBC ドライバーとデータソース名 (DSN) の設定例として使用できます。インストール済みのディレクトリのサンプルファイルは例示のみを目的としています。

 設定ファイルに Amazon Redshift ODBC ドライバーのインストールディレクトリを使用することは推奨されません。Amazon Redshift ODBC ドライバーを後で再インストールするか、新しいバージョンにアップグレードすると、インストールディレクトリが上書きされます。インストールディレクトリ内のファイルに加えた変更はすべて失われます。

 これを回避するには、インストールディレクトリ以外のディレクトリに `odbc.ini`、`odbcinst.ini`、`amazon.redshiftodbc.ini` ファイルをコピーします。これのファイルをユーザーのホームディレクトリにコピーする場合は、隠しファイルにするためにファイル名の先頭にピリオド (.) を追加します。

 ファイルを変更して DSN 設定情報を追加します。新しいファイルを作成する場合は、これらの設定ファイルの場所を指定する環境変数を設定する必要もあります。

以下に、環境変数を設定する方法の例を示します。

```
export ODBCINI=/Library/ODBC/odbc.ini
export ODBCSYSINI=/Library/ODBC
export ODBCINSTINI=${ODBCSYSINI}/odbcinst.ini
```

コマンドラインアプリケーションの場合: エクスポートコマンドをシェルスタートアップファイル (例: `~/.bash_profile` または `~/.zshrc`) に追加します。

サポートされているバージョンのドライバーマネージャーについては、[こちら](https://docs.aws.amazon.com/redshift/latest/mgmt/odbc20-install-config-mac.html)を参照してください。

### Apple macOS でデータソース名 (DSN) を使用して接続を設定する
<a name="odbc20-dsn-mac"></a>

データソース名 (DSN) を使用してデータストアに接続する場合は、データソース名 (DSN) を定義するように `odbc.ini` ファイルを設定します。`odbc.ini` ファイルのプロパティを設定して、Redshift データウェアハウスの接続情報を指定する DSN を作成します。

Apple macOS では、次の形式を使用します。

```
[ODBC Data Sources]
driver_name=dsn_name

[dsn_name]
Driver=path/driver_file
Host=cluster_endpoint
Port=port_number
Database=database_name
locale=locale
```

次に、Apple macOS で 64 ビット ODBC ドライバーを使用する `odbc.ini` の設定の例を示します。

```
[ODBC Data Sources]
Amazon_Redshift_x64=Amazon Redshift ODBC Driver (x64)

[Amazon_Redshift_x64]
Driver=/opt/amazon/redshiftodbcx64/librsodbc64.dylib
Host=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com
Port=5932
Database=dev
locale=en-US
```

### Apple macOS で DSN を使用しない接続を設定する
<a name="odbc20-no-dsn-mac"></a>

 DSN を使用しない接続を介して Redshift データウェアハウスに接続するには、`odbcinst.ini` ファイルでドライバーを定義します。次に、アプリケーションに DSN を使用しない接続文字列を指定します。

Apple macOS では、次の形式を使用します。

```
[ODBC Drivers]
driver_name=Installed
...
                            
[driver_name]
Description=driver_description
Driver=path/driver_file
    
...
```

次に、Apple macOS で 64 ビット ODBC ドライバーを使用する `odbcinst.ini` の設定の例を示します。

```
[ODBC Drivers]
Amazon Redshift ODBC Driver (x64)=Installed

[Amazon Redshift ODBC Driver (x64)]
Description=Amazon Redshift ODBC Driver (64-bit)
Driver=/opt/amazon/redshiftodbcx64/librsodbc64.dylib
```

# 認証方法
<a name="odbc20-authentication-ssl"></a>

不正なアクセスからデータを保護するために、Amazon Redshift データストアでは、すべての接続をユーザー認証情報を使用して認証する必要があります。

次の表は、Amazon Redshift ODBC ドライバーバージョン 2.x への接続に使用できる各認証方法の必須および選択可能な接続オプションを示しています。


| 認証方法 | 必須 | オプションです。 | 
| --- | --- | --- | 
|  標準  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |   | 
|  IAM プロフィール  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)   **[ClusterID]** と **[Region]** (リージョン) が別々に設定されていない場合、**[Host]** (ホスト) で設定する必要があります。   | 
|  IAM 認証情報  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)   **[ClusterID]** と **[Region]** (リージョン) が別々に設定されていない場合、**[Host]** (ホスト) で設定する必要があります。   | 
|  AD FS  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)   **[ClusterID]** と **[Region]** (リージョン) が別々に設定されていない場合、**[Host]** (ホスト) で設定する必要があります。   | 
|  Azure AD  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)   **[ClusterID]** と **[Region]** (リージョン) が別々に設定されていない場合、**[Host]** (ホスト) で設定する必要があります。   | 
|  JWT  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)  | 
|  Okta  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)   **[ClusterID]** と **[Region]** (リージョン) が別々に設定されていない場合、**[Host]** (ホスト) で設定する必要があります。   | 
|  Ping Federate  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)   **[ClusterID]** と **[Region]** (リージョン) が別々に設定されていない場合、**[Host]** (ホスト) で設定する必要があります。   | 
|  Browser Azure AD  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)   **[ClusterID]** と **[Region]** (リージョン) が別々に設定されていない場合、**[Host]** (ホスト) で設定する必要があります。   | 
|  Browser SAML  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)   **[ClusterID]** と **[Region]** (リージョン) が別々に設定されていない場合、**[Host]** (ホスト) で設定する必要があります。   | 
|  Auth プロファイル  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |   | 
|  Browser Azure AD OAUTH2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)   **[ClusterID]** と **[リージョン]** が別々に設定されていない場合、**[ホスト]** で設定する必要があります。   | 
|  AWS IAM アイデンティティーセンター  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/odbc20-authentication-ssl.html)  | 

## 外部認証情報サービスの使用
<a name="odbc20-authentication-external"></a>

また、AD FS、Azure AD、および Okta の組み込みサポートに加えて、Windows バージョンの Amazon Redshift ODBC ドライバーは、他の認証情報サービスのサポートを提供します。ドライバーは、任意の SAML ベースの認証情報プロバイダープラグインを使用して接続を認証できます。

Windows で外部認証情報サービスを設定するには

1. 必要に応じて、認証情報プロバイダープラグインとその他の認証パラメータを指定する IAM プロファイルを作成します。プロファイルは ASCII でエンコードされている必要があり、次のキーと値のペアが含まれている必要があります。`PluginPath` はプラグインアプリケーションのフルパスです。

   ```
   plugin_name = PluginPath
   ```

   例:

   ```
   plugin_name = C:\Users\kjson\myapp\CredServiceApp.exe 
   ```

   プロファイルの作成方法については、「Amazon Redshift クラスター管理ガイド」の「[設定プロファイルを使用する](https://docs.aws.amazon.com/redshift/latest/mgmt/options-for-providing-iam-credentials.html#using-configuration-profile)」を参照してください。

1. このプロファイルを使用するようにドライバーを設定します。ドライバーは、プロファイルで指定された認証設定を検出して使用します。

# データ型変換
<a name="odbc20-converting-data-types"></a>

Amazon Redshift ODBC ドライバーのバージョン 2.x では、Amazon Redshift および SQL データ型の変換を行う多くの一般的なデータ形式がサポートされています。

サポートされているデータ型のマッピングを以下の表に示しています。


| Amazon Redshift のタイプ | SQL タイプ | 
| --- | --- | 
|  BIGINT  |  SQL\$1BIGINT  | 
|  BOOLEAN  |  SQL\$1BIT  | 
|  CHAR  |  SQL\$1CHAR  | 
|  DATE  |  SQL\$1TYPE\$1DATE  | 
|  DECIMAL  |  SQL\$1NUMERIC  | 
|  DOUBLE PRECISION  |  SQL\$1DOUBLE  | 
|  GEOGRAPHY  |  SQL\$1LONGVARBINARY  | 
|  GEOMETRY  |  SQL\$1LONGVARBINARY  | 
|  INTEGER  |  SQL\$1INTEGER  | 
|  REAL  |  SQL\$1REAL  | 
|  SMALLINT  |  SQL\$1SMALLINT  | 
|  SUPER  |  SQL\$1LONGVARCHAR  | 
|  TEXT  |  SQL\$1LONGVARCHAR  | 
|  TIME  |  SQL\$1TYPE\$1TIME  | 
|  TIMETZ  |  SQL\$1TYPE\$1TIME  | 
|  TIMESTAMP  |  SQL\$1TYPE\$1TIMESTAMP  | 
|  TIMESTAMPTZ  |  SQL\$1TYPE\$1TIMESTAMP  | 
|  VARBYTE  |  SQL\$1LONGVARBINARY  | 
|  VARCHAR  |  SQL\$1VARCHAR  | 

# ODBC ドライバーオプション
<a name="odbc20-configuration-options"></a>

ドライバー設定オプションを使用して、Amazon Redshift ODBC ドライバーの動作を制御できます。ドライバーオプションでは、大文字と小文字を区別しません。

Microsoft Windows では、通常、データソース名 (DSN) を設定するときにドライバーオプションを設定します。プログラムを使用して接続するとき、または `HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\your_DSN` でレジストリキーを追加または変更することによって、接続文字列にドライバーオプションを設定することもできます。

Linux では、`odbc.ini` および `amazon.redshiftodbc.ini` ファイルでドライバー設定オプションを設定します。`amazon.redshiftodbc.ini` ファイルに設定されている設定オプションは、すべての接続に適用されます。これに対して、`odbc.ini`ファイルで設定されている設定オプションは接続に固有です。`odbc.ini` で設定された設定オプションは、`amazon.redshiftodbc.ini` で設定された設定オプションよりも優先されます。

以下に、Amazon Redshift ODBC バージョン 2.x ドライバーで指定できるオプションの説明を示します。

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

 ユーザーまたはロールの IAM アクセスキー。このパラメータを設定する場合は、**SecretAccessKey** も指定する必要があります。

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

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

Okta が提供する Amazon Redshift アプリケーションに関連付けられた一意の ID。

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

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

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

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

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

Amazon Redshift への接続を認証するために使用する Okta アプリケーションの名前。

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

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

接続設定を管理するために使用される認証プロファイル。このパラメータを設定する場合は、**AccessKeyID** と **SecretAccessKey** も設定する必要があります。

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

## AuthType
<a name="odbc20-authtype-option"></a>
+ **デフォルト値** - 標準
+ **データ型** - 文字列

このオプションは、[Amazon Redshift ODBC Driver DSN Setup] (Amazon Redshift ODBC ドライバー DSN セットアップ) ダイアログボックスを使用して DSN を設定するときにドライバーが使用する認証モードを指定します。
+  標準: Amazon Redshift ユーザー名とパスワードを使用した標準認証。
+  AWS プロファイル: プロファイルを使用した IAM 認証。
+  AWS IAM 認証情報: IAM 認証情報を使用した IAM 認証。
+  ID プロバイダー: AD FS: Active Directory フェデレーションサービス (AD FS) を使用した IAM 認証。
+  ID プロバイダー: 認可プラグイン: AWS IAM アイデンティティセンターのトークン、または AWS IAM アイデンティティセンターにリンクされているウェブ ID プロバイダーからの OpenID Connect (OIDC) JSON ベースの ID トークン (JWT) を受け入れる認可プラグイン。
+  ID プロバイダー: Azure AD: Azure AD ポータルを使用した IAM 認証。
+  ID プロバイダー: JWT: JSON ウェブトークン (JWT) を使用した IAM 認証。
+  ID プロバイダー: Okta: Okta を使用した IAM 認証。
+  ID プロバイダー: PingFederate: PingFederate を使用した IAM 認証。

このオプションは、Windows ドライバーの [Amazon Redshift ODBC Driver DSN Setup] (Amazon Redshift ODBC ドライバー DSN セットアップ) ダイアログボックスを使用して DSN を設定する場合にのみ使用できます。接続文字列または Windows 以外のマシンを使用して接続を設定すると、ドライバーは標準、AWS プロファイル、または指定した認証情報に基づく AWS のIAM 認証情報の認証を使用するかどうかを自動的に決定します。ID プロバイダーを使用するには、**plugin\$1name** プロパティを設定する必要があります。

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

## AutoCreate
<a name="odbc20-autocreate-option"></a>
+ **デフォルト値**: 0
+ **データ型** – ブール型

指定されたユーザーが存在しない場合に、ドライバーが新しいユーザーを作成するかどうかを指定するブール値。
+  1 \$1 TRUE: **[UID]** で指定されたユーザーが存在しない場合、ドライバーは新しいユーザーを作成します。
+  0 \$1 FALSE: ドライバーは新しいユーザーを作成しません。指定したユーザーが存在しない場合、認証は失敗します。

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

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

IAM 認証のいくつかの形式で使用される CA 証明書ファイルへのファイルパス。

 このパラメータは Linux でのみ使用できます。

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

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

Azure AD の Amazon Redshift アプリケーションに関連付けられたクライアント ID。

このパラメータは、Azure AD サービスを介して認証する場合に必要です。

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

 Azure AD の Amazon Redshift アプリケーションに関連付けられたシークレットキー。

このパラメータは、Azure AD サービスを介して認証する場合に必要です。

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

接続する Amazon Redshift クラスターの名前。IAM 認証に使用されます。クラスター ID は **Server** パラメータでは指定されません。

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

## compression
<a name="odbc20-compression-option"></a>
+ **デフォルト値** - オフ
+ **データ型** - 文字列

Amazon Redshift サーバーとクライアントまたはドライバーとの間のワイヤプロトコル通信で使用する圧縮方法。

次の値を指定できます。
+ lz4: Amazon Redshift とのワイヤプロトコル通信で使用する圧縮方法を `lz4` に設定します。
+ zstd: Amazon Redshift とのワイヤプロトコル通信で使用する圧縮方法を `zstd` に設定します。
+  off: Amazon Redshift とのワイヤプロトコル通信では圧縮を使用しません。

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

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

アクセスする Amazon Redshift データベースの名前。

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

## DatabaseMetadataCurrentDbOnly
<a name="odbc20-database-metadata-option"></a>
+ **デフォルト値** - 1
+ **データ型** – ブール型

ドライバーが複数のデータベースとクラスターからメタデータを返すかどうかを指定するブール値。
+ 1 \$1 TRUE: ドライバーは、現在のデータベースからのみメタデータを返します。
+  0 \$1 FALSE。ドライバーは、複数の Amazon Redshift データベースとクラスターにわたってメタデータを返します。

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

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

Azure、Browser Azure、および Browser SAML 認証型を使用しているときに Amazon Redshift への SAML レスポンスから受信する DbGroups を除外するために指定できる正規表現。

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

## ドライバー
<a name="odbc20-driver-option"></a>
+ **デフォルト値** - Amazon Redshift ODBC ドライバー (x64)
+ **データ型** - 文字列

ドライバーの名前。**[Amazon Redshift ODBC Driver (X64)]** (Amazon Redshift ODBC ドライバー (x64)) はサポートされる唯一の値です。

**DSN** を設定しない場合、このパラメータは必須です。

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

ドライバーデータソースの名前。アプリケーションは、SQLDriverConnect API で DSN を指定します。

**[Driver]** (ドライバー) を設定しない場合、このパラメータは必須です。

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

IAM 認証のために Amazon Redshift Coral サービスと通信するために使用される優先エンドポイント。

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

## ForceLowercase
<a name="odbc20-forcelowercase-option"></a>
+ **デフォルト値**: 0
+ **データ型** – ブール型

シングルサインオン認証を使用するときに ID プロバイダーから Amazon Redshift に送信されたすべてのデータベースグループ (DbGroups) をドライバーが小文字にするかどうかを指定するブール値。
+  1 \$1 TRUE: ドライバーは、ID プロバイダーから送信されるすべての DbGroups を小文字にします。
+  0 \$1 FALSE: ドライバーは DbGroups を変更しません。

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

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

プロビジョニングされたクラスターでの一時的なクラスター認証情報を取得するために `getClusterCredentialsWithIAM` API を使用するかどうかを指定するブール値。このオプションにより、IAM ユーザーは、プロビジョニングされたクラスターでの Redshift データベースロールと統合できます。このオプションは Redshift Serverless の名前空間には適用されないことに注意してください。
+  1 \$1 TRUE: ドライバーは `getClusterCredentialsWithIAM` API を使用して、プロビジョニングされたクラスターでの一時的なクラスター認証情報を取得します。
+  0 \$1 FALSE: ドライバーは、プロビジョニングされたクラスターでの一時的なクラスター認証情報を取得するためにデフォルトの `getClusterCredentials` API を使用します。

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

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

IAM 認証プロセスを渡すプロキシサーバーのホスト名または IP アドレス。

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

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

プロキシサーバーにアクセスするために使用するパスワード。IAM 認証に使用されます。

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

## https\$1proxy\$1port
<a name="odbc20-https-proxy-port-option"></a>
+ **デフォルト値** - なし
+ **データ型** – 整数

プロキシサーバーがクライアント接続をリッスンするために使用するポートの番号。IAM 認証に使用されます。

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

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

プロキシサーバーへのアクセスに使用するユーザー名。IAM 認証に使用されます。

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

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

ドライバーが接続を認証するために IAM 認証方法を使用するかどうかを指定するブール値。
+  1 \$1 TRUE: ドライバーは、IAM 認証方法の 1 つを使用します (アクセスキーと秘密キーのペア、プロファイル、または認証情報サービスを使用)。
+  0 \$1 FALSE。ドライバーは標準認証を使用します (データベースのユーザー名とパスワードを使用)。

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

## idc\$1client\$1display\$1name
<a name="odbc20-idc_client_display_name-option"></a>
+ **デフォルト値** - Amazon Redshift ODBC ドライバー
+ **データ型** - 文字列

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

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

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

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

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

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

Amazon Redshift への認証に使用する IdP (ID プロバイダー) のホスト。

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

## idp\$1port
<a name="odbc20-idp-port-option"></a>
+ **デフォルト値** - なし
+ **データ型** – 整数

Amazon Redshift への認証に使用する IdP (ID プロバイダー) のポート。クラスターの作成、変更、または移行時に選択したポートに応じて、選択したポートへのアクセスを許可します。

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

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

ブラウザのプラグインを介して SAML または Azure AD サービスを使用する場合に、ドライバーが ID プロバイダーからの SAML 応答を待機する秒数です。

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

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

 Amazon Redshift アプリケーションに関連付けられた Azure AD のテナント ID。

このパラメータは、Azure AD サービスを介して認証する場合に必要です。

## idp\$1partition
<a name="odbc20-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` を使用します。

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

## idp\$1use\$1https\$1proxy
<a name="odbc20-idp-use-https-proxy-option"></a>
+ **デフォルト値**: 0
+ **データ型** – ブール型

ドライバーがプロキシサーバー経由で ID プロバイダー (IdP) の認証プロセスを渡すかどうかを指定するブール値。
+  1 \$1 TRUE: ドライバーは、プロキシサーバーを介して IdP 認証プロセスを渡します。
+  0 \$1 FALSE。ドライバーはプロキシサーバー経由で IdP 認証プロセスを渡しません。

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

## InstanceProfile
<a name="odbc20-instanceprofile-option"></a>
+ **デフォルト値**: 0
+ **データ型** – ブール型

認証にプロファイルを使用するように設定されている場合に、ドライバーが Amazon EC2 インスタンスプロファイルを使用するかどうかを指定するブール値。
+  1 \$1 TRUE: ドライバーは Amazon EC2 インスタンスプロファイルを使用します。
+  0 \$1 FALSE。代わりに、ドライバーは、[Profile Name] (プロファイル名) オプション (**[Profile]** (プロファイル)) で指定されたプロファイルの連鎖ロールを使用します。

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

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

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

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

## KeepAlive
<a name="odbc20-keepalive-option"></a>
+ **デフォルト値** - 1
+ **データ型** – ブール型

接続のタイムアウトを防ぐために TCP キープアライブを使用するようにドライバーを指定するブール値。
+  1 \$1 TRUE: ドライバーは、TCP キープアライブを使用して、接続がタイムアウトするのを防ぎます。
+  0 \$1 FALSE。ドライバーは TCP キープアライブを使用しません。

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

## KeepAliveCount
<a name="odbc20-keepalivecount-option"></a>
+ **デフォルト値**: 0
+ **データ型** – 整数

接続が切断されていると見なされる前に失うことが許容される TCP キープアライブパケットの数。このパラメータが 0 に設定されていると、ドライバーはこの設定のためにシステムデフォルトを使用します。

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

## KeepAliveInterval
<a name="odbc20-keepaliveinterval-option"></a>
+ **デフォルト値**: 0
+ **データ型** – 整数

TCP キープアライブを再送信する間隔の秒数。このパラメータが 0 に設定されていると、ドライバーはこの設定のためにシステムデフォルトを使用します。

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

## KeepAliveTime
<a name="odbc20-keepalivetime-option"></a>
+ **デフォルト値**: 0
+ **データ型** – 整数

ドライバーが TCP キープアライブパケットを送信する前にアイドル状態である秒数。このパラメータが 0 に設定されていると、ドライバーはこの設定のためにシステムデフォルトを使用します。

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

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

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

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

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

汎用 Browser SAML プラグインを使用する場合に、ID プロバイダーのウェブサイト上のリソース URL です。

このパラメータは、ブラウザプラグインを介して SAML または Azure AD サービスで認証する場合に必要です。

## loginToRp
<a name="odbc20-logintorp-option"></a>
+ **デフォルト値** - urn:amazon:webservices
+ **データ型** - 文字列

AD FS 認証の種類に使用する証明書利用者の信頼。

この設定はオプションです。

## LogLevel
<a name="odbc20-loglevel-option"></a>
+ **デフォルト値**: 0
+ **データ型** – 整数

このプロパティを使用して、ドライバーのログ記録を有効または無効にし、ログファイルに含まれる詳細の量を指定します。ログ記録によってパフォーマンスが低下し、ディスク容量が大量に消費される可能性があるため、問題をキャプチャするのに十分な時間だけログ記録を有効にすることをお勧めします。

 プロパティは以下のいずれかの値に設定します。
+  0: OFF。すべてのログ記録を無効にします。
+  1: ERROR。ドライバーの実行を続行するよう許可してもエラーを発生する可能性があるエラーイベントを記録します。
+  2: API\$1CALL。ODBC API 関数呼び出しを関数の引数の値とともにログに記録します。
+  3: INFO。ドライバーの進行状況を示す全般的な情報を記録します。
+  4: MSG\$1PROTOCOL。ドライバーのメッセージプロトコルの詳細情報を記録します。
+  5: DEBUG。すべてのドライバーアクティビティを記録します。
+  6: DEBUG\$1APPEND。すべてのドライバーアクティビティのログを追加し続けます。

ログ記録を有効にすると、ドライバーは **LogPath** プロパティで指定された場所に次のログファイルを生成します。
+  接続のハンドシェイク中に発生したドライバーのアクティビティをログに記録する `redshift_odbc.log.1` ファイル。
+  データベースに接続した後のすべてのドライバーのアクティビティ用 `redshift_odbc.log` ファイル。

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

## LogPath
<a name="odbc20-logpath-option"></a>
+ **デフォルト値** - OS 固有の TEMP ディレクトリ
+ **データ型** - 文字列

**LogLevel** が 0 より大きい場合にドライバーがログファイルを保存するフォルダへのフルパス。

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

## Min\$1TLS
<a name="odbc20-min-tls-option"></a>
+ **デフォルト値** - 1.2
+ **データ型** - 文字列

 ドライバーがデータストアが接続の暗号化に使用することを許可する TLS/SSL の最小バージョン。例えば、TLS 1.2 を指定すると、接続の暗号化に TLS 1.1 は使用できません。

Min\$1TLS には、次の値を使用できます。
+  1.0: 接続は少なくとも TLS 1.0 を使用する必要があります。
+  1.1: 接続は少なくとも TLS 1.1 を使用する必要があります。
+  1.2: 接続は少なくとも TLS 1.2 を使用する必要があります。

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

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

PingFederate サービスを使用して接続を認証するときに使用するパートナー SPID (サービスプロバイダー ID) の値。

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

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

[ユーザー] フィールドに入力したデータベースユーザー名に対応するパスワード (**[UID]** \$1 **[ユーザー]** \$1 **[LogonID]**)。

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

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

認証に使用する認証情報プロバイダープラグイン名。

 サポートされる値は次のとおりです。
+  `ADFS`: 認証に Active Directory フェデレーションサービスを使用する。
+  `AzureAD`: 認証に Microsoft Azure Active Directory (AD) サービスを使用する。
+  `BrowserAzureAD`: 認証に Microsoft Azure Active Directory (AD) サービス用のブラウザプラグインを使用する。
+  `BrowserIdcAuthPlugin `: AWS IAM アイデンティティセンターを使用する認可プラグイン。
+  `BrowserSAML`: 認証に Okta や Ping などの SAML サービス用のブラウザプラグインを使用する。
+  `IdpTokenAuthPlugin`: AWS IAM アイデンティティセンターのトークン、または AWS IAM アイデンティティセンターにリンクされているウェブ ID プロバイダーからの OpenID Connect (OIDC) JSON ベースの ID トークン (JWT) を受け入れる認可プラグイン。
+  `JWT`: 認証に JSON ウェブトークン (JWT) を使用する。
+  `Ping`: 認証に PingFederate サービスを使用する。
+  `Okta`: 認証に Okta サービスを使用する。

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

## Port \$1 PortNumber
<a name="odbc20-port-option"></a>
+ **デフォルト値** - 5439
+ **データ型** – 整数

Amazon Redshift サーバーがクライアント接続をリッスンするために使用する TCP ポートの番号。

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

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

Amazon Redshift への接続中に引き受けるロール。IAM 認証に使用されます。

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

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

Amazon Redshift への認証に使用されるユーザーの AWS プロファイルの名前。
+  Use Instance Profile パラメータ (**InstanceProfile** プロパティ) が 1 \$1 TRUE に設定されている場合、その設定が優先され、ドライバーは代わりに Amazon EC2 インスタンスプロファイルを使用します。
+  プロファイルを含む認証情報ファイルのデフォルトの場所は `~/.aws/Credentials` です。`AWS_SHARED_CREDENTIALS_FILE` 環境変数を使用すると、別の認証情報ファイルを指定できます。

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

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

CREATE IDENTITY PROVIDER クエリを使用してユーザーが作成した認証プロバイダー。ネイティブの Amazon Redshift 認証で使用されます。

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

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

接続に使用するプロキシサーバーのホスト名または IP アドレス。

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

## ProxyPort
<a name="odbc20-proxyport-option"></a>
+ **デフォルト値** - なし
+ **データ型** – 整数

プロキシサーバーがクライアント接続をリッスンするために使用するポートの番号。

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

## ProxyPwd
<a name="odbc20-proxypwd-option"></a>
+ **デフォルトの ValPrevious ODBC ドライバーのバージョン** – なし
+ **データ型** - 文字列

プロキシサーバーにアクセスするために使用するパスワード。

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

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

プロキシサーバーへのアクセスに使用するユーザー名。

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

## ReadOnly
<a name="odbc20-readonly-option"></a>
+ **デフォルト値**: 0
+ **データ型** – ブール型

ドライバーが読み込み専用モードにするかどうかを指定するブール値。
+  1 \$1 TRUE: 接続は読み取り専用モードであり、データストアに書き込むことができません。
+  0 \$1 FALSE: 接続は読み取り専用モードではなく、データストアに書き込むことができます。

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

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

クラスターのある AWS リージョン。

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

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

 ユーザーまたはロールの IAM シークレットキー。このパラメータを設定する場合は、**AccessKeyID** も設定する必要があります。

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

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

 認証に使用している IAM ロールに関連付けられた一時的な IAM セッショントークン。

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

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

接続先のエンドポイントサーバー。

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

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

ドライバーが IdP サーバー証明書の信頼性をチェックするかどうかを指定するブール値。
+  1 \$1 TRUE: ドライバーは、IdP サーバー証明書の信頼性をチェックしません。
+  0 \$1 FALSE: ドライバーは、IdP サーバー証明書の信頼性をチェックします。

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

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

Amazon Redshift に接続するときに使用する SSL 証明書認証モード。以下の値を指定できます。
+  `verify-full`: SSL、信頼できる認証機関、および証明書に一致するサーバー名のみを使用して接続します。
+  `verify-ca`: SSL と信頼できる認証機関のみを使用して接続します。
+  `require`: SSL のみを使用して接続します。
+  `prefer`: 可能な場合は SSL を使用して接続します。それ以外の場合は、SSL を使用せずに接続します。
+  `allow`: デフォルトでは、SSL を使用せずに接続します。サーバーが SSL 接続を必要とする場合は、SSL を使用します。
+  `disable`: SSL を使用せずに接続します。

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

## StsConnectionTimeout
<a name="odbc20-stsconnectiontimeout-option"></a>
+ **デフォルト値**: 0
+ **データ型** – 整数

IAM 接続の最大待機時間 (秒)。0 に設定されている、または指定されていない場合、ドライバーは AWS STS の呼び出しに、それぞれ 60 秒間待機します。

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

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

このオプションは、AWS Security Token Service (AWS STS) との通信に使用される優先エンドポイントを指定します。

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

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

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

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

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

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

次の値を指定できます。

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

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

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

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

Amazon Redshift サーバーへのアクセスに使用するユーザー名。

このパラメータは、データベース認証を使用する場合に必要です。

## UseUnicode
<a name="odbc20-useunicode-option"></a>
+ **デフォルト値**: 0
+ **データ型** – ブール型

ドライバーが Redshift データを Unicode または通常の SQL タイプとして返すかどうかを指定するブール値。
+  1 \$1 TRUE: ドライバーは、文字データ型に対してワイド SQL 型を返します。
  + SQL\$1CHAR の代わりに SQL\$1WCHAR が返されます。
  + SQL\$1VARCHAR の代わりに SQL\$1WVARCHAR が返されます。
  + SQL\$1LONGVARCHAR の代わりに SQL\$1WLONGVARCHAR が返されます。
+  0 \$1 FALSE: ドライバーは、文字データ型に対して通常の SQL 型を返します。
  + SQL\$1WCHAR の代わりに SQL\$1CHAR が返されます。
  + SQL\$1WVARCHAR の代わりに SQL\$1VARCHAR が返されます。
  + SQL\$1WLONGVARCHAR の代わりに SQL\$1LONGVARCHAR が返されます。

このパラメータはオプションです。ドライバーバージョン 2.1.15 以降で有効です。

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

ID プロバイダーによって提供される OAUTH トークン。JWT プラグインで使用されます。

BasicJwtCredentialsProvider に **plugin\$1name** パラメータを設定する場合、このパラメータは必須です。

# 以前のバージョンの ODBC ドライバー
<a name="odbc20-previous-versions"></a>

Amazon Redshift JDBC ドライバーバージョン 2.x より前のバージョンをダウンロードするのは、そのバージョンのドライバーがツールに必要な場合に限ります。

## Microsoft Windows 用の以前の ODBC ドライバーバージョンを使用する
<a name="odbc20-previous-versions-windows"></a>

以下は、Microsoft Windows 用の以前のバージョンの Amazon Redshift ODBC ドライバーバージョン 2.x です。
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC64-2.1.14.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC64-2.1.14.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC64-2.1.13.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC64-2.1.13.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC64-2.1.12.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC64-2.1.12.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.11.0/AmazonRedshiftODBC64-2.1.11.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.11.0/AmazonRedshiftODBC64-2.1.11.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.10.0/AmazonRedshiftODBC64-2.1.10.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.10.0/AmazonRedshiftODBC64-2.1.10.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.9.0/AmazonRedshiftODBC64-2.1.9.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.9.0/AmazonRedshiftODBC64-2.1.9.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.9.0/AmazonRedshiftODBC64-2.1.9.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.9.0/AmazonRedshiftODBC64-2.1.9.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.8.0/AmazonRedshiftODBC64-2.1.8.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.8.0/AmazonRedshiftODBC64-2.1.8.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.7.0/AmazonRedshiftODBC64-2.1.7.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.7.0/AmazonRedshiftODBC64-2.1.7.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.6.0/AmazonRedshiftODBC64-2.1.6.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.6.0/AmazonRedshiftODBC64-2.1.6.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.4.0/AmazonRedshiftODBC64-2.1.4.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.4.0/AmazonRedshiftODBC64-2.1.4.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.3.0/AmazonRedshiftODBC64-2.1.3.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.3.0/AmazonRedshiftODBC64-2.1.3.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.2.0/AmazonRedshiftODBC64-2.1.2.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.2.0/AmazonRedshiftODBC64-2.1.2.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.1.0/AmazonRedshiftODBC64-2.1.1.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.1.0/AmazonRedshiftODBC64-2.1.1.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.0.0/AmazonRedshiftODBC64-2.1.0.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.0.0/AmazonRedshiftODBC64-2.1.0.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.1.0/AmazonRedshiftODBC64-2.0.1.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.1.0/AmazonRedshiftODBC64-2.0.1.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.11/AmazonRedshiftODBC64-2.0.0.11.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.11/AmazonRedshiftODBC64-2.0.0.11.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.9/AmazonRedshiftODBC64-2.0.0.9.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.9/AmazonRedshiftODBC64-2.0.0.9.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.8/AmazonRedshiftODBC64-2.0.0.8.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.8/AmazonRedshiftODBC64-2.0.0.8.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.7/AmazonRedshiftODBC64-2.0.0.7.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.7/AmazonRedshiftODBC64-2.0.0.7.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.6/AmazonRedshiftODBC64-2.0.0.6.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.6/AmazonRedshiftODBC64-2.0.0.6.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.5/AmazonRedshiftODBC64-2.0.0.5.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.5/AmazonRedshiftODBC64-2.0.0.5.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.3/AmazonRedshiftODBC64-2.0.0.3.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.3/AmazonRedshiftODBC64-2.0.0.3.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.1/AmazonRedshiftODBC64-2.0.0.1.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.1/AmazonRedshiftODBC64-2.0.0.1.msi) 

## 旧バージョンの ODBC ドライバー (Linux 用)
<a name="odbc20-previous-versions-linux"></a>

以下は、Linux 用の以前のバージョンの Amazon Redshift ODBC ドライバーバージョン 2.x です。
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC-64-bit-2.1.14.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC-64-bit-2.1.14.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC-64-bit-2.1.14.0.aarch64.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC-64-bit-2.1.14.0.aarch64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC-64-bit-2.1.13.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC-64-bit-2.1.13.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC-64-bit-2.1.13.0.aarch64.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC-64-bit-2.1.13.0.aarch64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC-64-bit-2.1.12.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC-64-bit-2.1.12.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC-64-bit-2.1.12.0.aarch64.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC-64-bit-2.1.12.0.aarch64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.11.0/AmazonRedshiftODBC-64-bit-2.1.11.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.11.0/AmazonRedshiftODBC-64-bit-2.1.11.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.11.0/AmazonRedshiftODBC-64-bit-2.1.11.0.aarch64.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.11.0/AmazonRedshiftODBC-64-bit-2.1.11.0.aarch64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.10.0/AmazonRedshiftODBC-64-bit-2.1.10.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.10.0/AmazonRedshiftODBC-64-bit-2.1.10.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.9.0/AmazonRedshiftODBC-64-bit-2.1.9.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.9.0/AmazonRedshiftODBC-64-bit-2.1.9.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.8.0/AmazonRedshiftODBC-64-bit-2.1.8.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.8.0/AmazonRedshiftODBC-64-bit-2.1.8.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.7.0/AmazonRedshiftODBC-64-bit-2.1.7.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.7.0/AmazonRedshiftODBC-64-bit-2.1.7.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.6.0/AmazonRedshiftODBC-64-bit-2.1.6.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.6.0/AmazonRedshiftODBC-64-bit-2.1.6.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.4.0/AmazonRedshiftODBC-64-bit-2.1.4.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.4.0/AmazonRedshiftODBC-64-bit-2.1.4.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.3.0/AmazonRedshiftODBC-64-bit-2.1.3.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.3.0/AmazonRedshiftODBC-64-bit-2.1.3.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.2.0/AmazonRedshiftODBC-64-bit-2.1.2.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.2.0/AmazonRedshiftODBC-64-bit-2.1.2.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.1.0/AmazonRedshiftODBC-64-bit-2.1.1.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.1.0/AmazonRedshiftODBC-64-bit-2.1.1.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.0.0/AmazonRedshiftODBC-64-bit-2.1.0.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.0.0/AmazonRedshiftODBC-64-bit-2.1.0.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.1.0/AmazonRedshiftODBC-64-bit-2.0.1.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.1.0/AmazonRedshiftODBC-64-bit-2.0.1.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.11/AmazonRedshiftODBC-64-bit-2.0.0.11.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.11/AmazonRedshiftODBC-64-bit-2.0.0.11.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.9/AmazonRedshiftODBC-64-bit-2.0.0.9.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.9/AmazonRedshiftODBC-64-bit-2.0.0.9.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.8/AmazonRedshiftODBC-64-bit-2.0.0.8.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.8/AmazonRedshiftODBC-64-bit-2.0.0.8.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.7/AmazonRedshiftODBC-64-bit-2.0.0.7.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.7/AmazonRedshiftODBC-64-bit-2.0.0.7.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.6/AmazonRedshiftODBC-64-bit-2.0.0.6.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.6/AmazonRedshiftODBC-64-bit-2.0.0.6.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.5/AmazonRedshiftODBC-64-bit-2.0.0.5.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.5/AmazonRedshiftODBC-64-bit-2.0.0.5.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.3/AmazonRedshiftODBC-64-bit-2.0.0.3.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.3/AmazonRedshiftODBC-64-bit-2.0.0.3.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.1/AmazonRedshiftODBC-64-bit-2.0.0.1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.1/AmazonRedshiftODBC-64-bit-2.0.0.1.x86_64.rpm) 

## 旧バージョンの ODBC ドライバー (Apple macOS 用)
<a name="odbc20-previous-versions-mac"></a>

以下は、Apple macOS 用の以前のバージョンの Amazon Redshift ODBC ドライバーバージョン 2.x です。
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC-64-bit.2.1.14.0.universal.pkg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC-64-bit.2.1.14.0.universal.pkg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC-64-bit.2.1.13.0.universal.pkg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC-64-bit.2.1.13.0.universal.pkg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC-64-bit.2.1.12.0.universal.pkg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC-64-bit.2.1.12.0.universal.pkg) 

# ODBC ドライバーバージョン 1.x の接続の設定
<a name="configure-odbc-connection"></a>

ODBC 接続を使用すると、多くのサードパーティー SQL クライアントツールおよびアプリケーションから Amazon Redshift クラスターに接続できます。これを行うには、クライアントコンピュータまたは Amazon EC2 インスタンスで接続をセットアップします。クライアントツールで JDBC がサポートされる場合、JDBC に用意された設定が簡単なため、ODBC ではなくその接続タイプを使用することを選択できます。クライアントツールで JDBC がサポートされていない場合は、このセクションの手順に従って ODBC 接続を設定します。

Amazon Redshift には、Linux、Windows、macOS X オペレーティングシステム用の 64 ビット ODBC ドライバーが用意されています。32 ビット ODBC ドライバの提供は終了しました。今後、緊急のセキュリティパッチを除きアップデートはリリースされません。

ODBC ドライバーの機能と前提条件に関する最新情報については、[Amazon Redshift ODBC ドライバーのリリースノート](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Release+Notes.pdf)を参照してください。

Amazon Redshift ODBC ドライバーのインストールおよび設定の詳細については、[Amazon Redshift ODBC connector installation and configuration guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf) を参照してください。 

**Topics**
+ [ODBC URL の取得](obtain-odbc-url.md)
+ [Microsoft Windows での Amazon Redshift ODBC ドライバーの使用](install-odbc-driver-windows.md)
+ [Linux での Amazon Redshift ODBC ドライバーの使用](install-odbc-driver-linux.md)
+ [macOS X での Amazon Redshift ODBC ドライバーの使用](install-odbc-driver-mac.md)
+ [ODBC ドライバーオプション](configure-odbc-options.md)
+ [以前のバージョンの ODBC ドライバー](odbc-previous-versions.md)

# ODBC URL の取得
<a name="obtain-odbc-url"></a>

Amazon Redshift では、Amazon Redshift コンソールに、クラスターの ODBC URL が表示されます。この URL には、クライアントコンピュータとデータベースの間の接続をセットアップするために必要な情報が含まれています。

 ODBC の URL 形式を次に示します。`Driver={driver};Server=endpoint;Database=database_name;UID=user_name;PWD=password;Port=port_number`

前述の形式のフィールドには、次の値があります。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/obtain-odbc-url.html)

 前述のテーブルのフィールドには、次の特殊文字を含めることができます。

```
[]{}(),;?*=!@ 
```

 これらの特殊文字を使用する場合は、値を中かっこで囲む必要があります。例えば、接続文字列内のパスワード値 `Your;password123` は `PWD={Your;password123};` として表されます。

 `Field=value` ペアはセミコロンで区切られるため、`}` と `;` の間に任意の数のスペースがある組み合わせは、`Field={value};` ペアの終わりと見なされます。フィールド値のシーケンス `};` を避けることをお勧めします。例えば、パスワードの値を `PWD={This is a passwor} ;d};` に設定するとパスワードは `This is a passwor} ;` となり、URL はエラーになります。

ODBC URL の例を次に示します。

```
Driver={Amazon Redshift (x64)};
                    Server=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com;
                    Database=dev; 
                    UID=adminuser;
                    PWD=insert_your_admin_user_password_here;
                    Port=5439
```

ODBC 接続の取得方法については、「[クラスター接続文字列を検索する](connecting-connection-string.md)」を参照してください。

# Microsoft Windows での Amazon Redshift ODBC ドライバーの使用
<a name="install-odbc-driver-windows"></a>

Amazon Redshift データウェアハウスにアクセスするクライアントコンピュータに Amazon Redshift ODBC ドライバーをインストールします。ドライバーをインストールするコンピューターは、それぞれ以下の最小システム要件を満たしている必要があります。最小システム要件については、[Amazon Redshift ODBC コネクターのインストールおよび設定ガイド](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)を参照してください。

**Topics**
+ [Amazon Redshift ODBC ドライバーをダウンロードしてインストールする](odbc-driver-windows-how-to-install.md)
+ [ODBC 接続用のシステム DSN エントリの作成](create-dsn-odbc-windows.md)

# Amazon Redshift ODBC ドライバーをダウンロードしてインストールする
<a name="odbc-driver-windows-how-to-install"></a>

Windows オペレーティングシステム用の Amazon Redshift ODBC ドライバーをダウンロードするには、次の手順に従います。Amazon Redshift での使用が認定されている、固有のドライバーを必要とするサードパーティーアプリケーションを実行している場合にのみ、これらとは異なるドライバーを使用できます。

**ODBC ドライバーをインストールするには**

1. 使用する SQL クライアントツールまたはアプリケーションのシステムアーキテクチャに応じて、次のいずれかをダウンロードします。
   + [64 ビット ODBC ドライバーバージョン 1.6.3](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/AmazonRedshiftODBC64-1.6.3.1008.msi) 

     このドライバーの名前は、Amazon Redshift (x64) です。
   + [32 ビット ODBC ドライバーバージョン 1.4.52](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC32-1.4.52.1000.msi) 

     このドライバーの名前は、Amazon Redshift (x86) です。32 ビット ODBC ドライバの提供は終了しました。今後、緊急のセキュリティパッチを除きアップデートはリリースされません。
**注記**  
SQL クライアントツールまたはアプリケーションのシステムアーキテクチャに対応する MSI パッケージをダウンロードします。例えば、SQL クライアントツールが 64 ビットである場合は、64 ビットドライバーをインストールします。

    次に、[Amazon Redshift ODBC および JDBC ドライバーのライセンス契約](https://s3.amazonaws.com/redshift-downloads/drivers/Amazon+Redshift+ODBC+and+JDBC+Driver+License+Agreement.pdf)をダウンロードして確認します。

1.  .msi ファイルをダブルクリックし、ウィザードの手順に従ってドライバーをインストールします。

# ODBC 接続用のシステム DSN エントリの作成
<a name="create-dsn-odbc-windows"></a>

ODBC ドライバーをダウンロードしてインストールした後、クライアントマシンか Amazon EC2 インスタンスにデータソース名 (DSN) エントリを追加します。SQL クライアントツールは、このデータソースを使用して Amazon Redshift データベースに接続します。

ユーザー DSN の代わりにシステム DSN を作成することをお勧めします。アプリケーションによっては、別のユーザーアカウントを使用してデータをロードします。これらのアプリケーションは、別のユーザーアカウントで作成されたユーザー DSN を検出できない場合があります。

**注記**  
AWS Identity and Access Management ( IAM) 認証情報または ID プロバイダー (IdP) 認証情報を使用した認証には、追加の手順が必要です。詳細については、「[ステップ 5: IAM 認証情報を使用するように JDBC または ODBC 接続を設定する](generating-iam-credentials-steps.md#generating-iam-credentials-configure-jdbc-odbc)」を参照してください。

システム DSN エントリを作成する方法については、[Amazon Redshift ODBC connector installation and configuration guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf) を参照してください。 

**Windows で ODBC 接続用のシステム DNS エントリを作成するには**

1. [**スタート**] メニューで、[**ODBC Data Sources (ODBC データソース)**] を開きます。

   Amazon Redshift への接続に使用するクライアントアプリケーションと同じビット数を持つ ODBC Data Source Administrator を選択してください。

1. **[ODBC Data Source Administrator]** (ODBC データソース管理者) で、**[Driver]** (ドライバー) タブを開き、ドライバーフォルダを探します。
   + **[Amazon Redshift ODBC Driver (64-bit)] (Amazon Redshift ODBC ドライバー (64 ビット)**)
   + **[Amazon Redshift ODBC Driver (32-bit)] (Amazon Redshift ODBC ドライバー (32 ビット)**)

1.  コンピュータのすべてのユーザーに対してドライバーを設定する場合は [**System DSN (システム DSN)**] タブを選択し、使用するユーザーアカウントのみに対してドライバーを設定する場合は [**User DSN (ユーザー DSN)**] タブを選択します。

1.  [**Add**] を選択します。[**Create New Data Source (新しいデータソースの作成)**] ウィンドウが開きます。

1.  **Amazon Redshift** ODBC ドライバーを選択し、[**Finish (完了)**] を選択します。[**Amazon Redshift ODBC Driver DSN Setup (ODBC ドライバー DSN セットアップ)**] ウィンドウが開きます。

1. [**接続設定**] で以下の情報を入力します。
<a name="rs-mgmt-dsn"></a>
**データソース名**  
データソースの名前を入力します。クラスターへの接続を作成するときに、後でデータソースを識別するためにどのような名前でも使用できます。例えば、「Amazon Redshift 入門ガイド」**に従っているのであれば、この DSN に関連付けるクラスターを覚えやすくするために `exampleclusterdsn` と入力します。
<a name="rs-mgmt-server"></a>
**サーバー**  
Amazon Redshift クラスターのエンドポイントを指定します。この情報は、クラスターの詳細ページの Amazon Redshift コンソールで見つけることができます。詳細については、「[Amazon Redshift での接続の設定](configuring-connections.md)」を参照してください。
<a name="rs-mgmt-port"></a>
**ポート**  
データベースが使用するポート番号を入力します。クラスターが起動または変更されたときに使用するように設定されたポートを使用します。
<a name="rs-mgmt-database"></a>
**データベース**  
Amazon Redshift データベースの名前を入力します。データベース名を指定せずにクラスターを起動した場合は、`dev`を入力します。それ以外の場合は、起動プロセスで選択した名前を使用します。「Amazon Redshift 入門ガイド」**に従っているのであれば、`dev` と入力します。

1. [**Authentication (認証)**] で、標準認証または IAM 認証を設定する設定オプションを指定します。認証オプションの詳細については、*Amazon Redshift ODBC Connector Installation and Configuration Guide* の「Configuring Authentication on Windows」を参照してください。

1. [**SSL Settings (SSL 設定)**] で次の値を指定します。
<a name="rs-mgmt-ssl-authentication"></a>
**SSL 認証**  
Secure Sockets Layer (SSL) を処理するモードを選択します。テスト環境では、`prefer`を使用できます。ただし、本番稼働環境の場合、および安全なデータ交換が必要な場合は、`verify-ca`または `verify-full` を使用します。Windows での SSL の使用の詳細については、*Amazon Redshift ODBC Connector Installation and Configuration Guide* の「Configuring SSL Verification on Windows」を参照してください。

1. [**Additional Options (追加オプション)**] で、クエリ結果を SQL クライアントツールまたはアプリケーションに返す方法に関するオプションを指定します。詳細については、*Amazon Redshift ODBC Connector Installation and Configuration Guide* の「Configuring Additional Options on Windows」を参照してください。

1. [**Logging Options (ログ記録オプション)**] で以下の値を指定します。詳細については、*Amazon Redshift ODBC Connector Installation and Configuration Guide* の「Configuring Logging Options on Windows」を参照してください。

   次に、**[OK]** を選択します。

1. [**Data Type Options (データ型オプション)**] で、データ型の値を指定します。詳細については、*Amazon Redshift ODBC Connector Installation and Configuration Guide* の「Configuring Data Type Options on Windows」を参照してください。

   次に、**[OK]** を選択します。

1. [**Test**] を選択します。クライアントコンピュータが Amazon Redshift データベースに接続できる場合は、[**Connection successful (接続成功)**] というメッセージが表示されます。

    クライアントコンピューターがデータベースに接続できない場合、考えられる問題をトラブルシューティングすることができます。詳細については、「[Amazon Redshift での接続の問題のトラブルシューティング](troubleshooting-connections.md)」を参照してください。

1. Windows で TCP キープアライブを設定して、接続がタイムアウトしないようにします。Windows で TCP キープアライブを設定する方法については、*Amazon Redshift ODBC Connector Installation and Configuration Guide* を参照してください。

1. トラブルシューティングに役立つように、ログ記録を設定します。Windows でログ記録を設定する方法については、*Amazon Redshift ODBC Connector Installation and Configuration Guide* を参照してください。

# Linux での Amazon Redshift ODBC ドライバーの使用
<a name="install-odbc-driver-linux"></a>

Amazon Redshift データウェアハウスにアクセスするクライアントコンピュータに Amazon Redshift ODBC ドライバーをインストールします。ドライバーをインストールするコンピューターは、それぞれ以下の最小システム要件を満たしている必要があります。最小システム要件については、[Amazon Redshift ODBC コネクターのインストールおよび設定ガイド](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)を参照してください。

**Topics**
+ [Amazon Redshift ODBC ドライバーをダウンロードしてインストールする](odbc-driver-linux-how-to-install.md)
+ [ODBC ドライバーマネージャーを使用してドライバーを設定する](odbc-driver-configure-linux.md)

# Amazon Redshift ODBC ドライバーをダウンロードしてインストールする
<a name="odbc-driver-linux-how-to-install"></a>

このセクションのステップを使用して、サポートされている Linux ディストリビューションに Amazon Redshift ODBC ドライバーをダウンロードしてインストールします。インストールプロセスでは、以下のディレクトリにドライバーファイルがインストールされます。
+ `/opt/amazon/redshiftodbc/lib/64` (64 ビットドライバーの場合)
+ `/opt/amazon/redshiftodbc/ErrorMessages`
+ `/opt/amazon/redshiftodbc/Setup`
+  `/opt/amazon/redshiftodbc/lib/32` (32 ビットドライバーの場合)<a name="rs-mgmt-install-odbc-drivers-linux"></a>

**Amazon Redshift ODBC ドライバーをインストールするには**

1. 使用する SQL クライアントツールまたはアプリケーションのシステムアーキテクチャに応じて、次のいずれかをダウンロードします。
   + [64 ビット RPM ドライバーバージョン 1.6.3](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/AmazonRedshiftODBC-64-bit-1.6.3.1008-1.x86_64.rpm) 
   + [64 ビット Debian ドライバーバージョン 1.6.3](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/AmazonRedshiftODBC-64-bit-1.6.3.1008-1.x86_64.deb) 
   + [32 ビットドライバーバージョン 1.4.52。](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-32-bit-1.4.52.1000-1.i686.rpm) 

   これらのドライバーの名前はすべて Amazon Redshift ODBC ドライバーです。32 ビット ODBC ドライバの提供は終了しました。今後、緊急のセキュリティパッチを除きアップデートはリリースされません。
**注記**  
SQL クライアントツールまたはアプリケーションのシステムアーキテクチャに対応するパッケージをダウンロードします。例えば、クライアントツールが 64 ビットである場合は、64 ビットドライバーをインストールします。

    次に、[Amazon Redshift ODBC および JDBC ドライバーのライセンス契約](https://s3.amazonaws.com/redshift-downloads/drivers/Amazon+Redshift+ODBC+and+JDBC+Driver+License+Agreement.pdf)をダウンロードして確認します。

1. パッケージをダウンロードした場所に移動し、以下のいずれかのコマンドを実行します。使用している Linux ディストリビューションに対応するコマンドを使用します。
   + RHEL および CentOS オペレーティングシステムでは、次のコマンドを実行します。

     ```
     yum -nogpgcheck localinstall RPMFileName
     ```

     *`RPMFileName`* を RPM パッケージファイル名に置き換えます。例えば、次のコマンドは 64 ビットドライバーのインストールを示しています。

     ```
     yum -nogpgcheck localinstall AmazonRedshiftODBC-64-bit-1.x.xx.xxxx-x.x86_64.rpm
     ```
   + SLES では、以下のコマンドを実行します。

     ```
     zypper install RPMFileName
     ```

     *`RPMFileName`* を RPM パッケージファイル名に置き換えます。例えば、次のコマンドは 64 ビットドライバーのインストールを示しています。

     ```
     zypper install AmazonRedshiftODBC-1.x.x.xxxx-x.x86_64.rpm
     ```
   + Debian では、以下のコマンドを実行します。

     ```
     sudo apt install ./DEBFileName.deb
     ```

     `DEBFileName.deb` を Debian パッケージのファイル名に置き換えます。例えば、次のコマンドは 64 ビットドライバーのインストールを示しています。

     ```
     sudo apt install ./AmazonRedshiftODBC-1.x.x.xxxx-x.x86_64.deb
     ```

**重要**  
ドライバーのインストールが完了したら、ドライバーをシステムで使用できるように設定します。ドライバー設定の詳細については、「[ODBC ドライバーマネージャーを使用してドライバーを設定するODBC ドライバーマネージャーを使用してドライバーを設定する](odbc-driver-configure-linux.md)」を参照してください。

# ODBC ドライバーマネージャーを使用してドライバーを設定する
<a name="odbc-driver-configure-linux"></a>

Linux オペレーティングシステムでは、ODBC ドライバーマネージャーを使用して ODBC 接続を設定します。ODBC ドライバーマネージャーは設定ファイルを使用して ODBC データソースおよびドライバーを定義および設定します。使用する ODBC ドライバーマネージャーは、使用するオペレーティングシステムによって異なります。Linux の場合は、unixODBC ドライバーマネージャーです。

Amazon Redshift ODBC ドライバーの設定がサポートされている ODBC ドライバーマネージャーの詳細については、Linux オペレーティングシステム向けの「[Linux での Amazon Redshift ODBC ドライバーの使用Linux での ODBC ドライバーの使用](install-odbc-driver-linux.md)」を参照してください。詳細については、「[Amazon Redshift ODBC connector installation and configuration guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)」の「Specifying ODBC Driver Managers on Non- Windows Machines」を参照してください。

Amazon Redshift ODBC ドライバーを設定するには、`amazon.redshiftodbc.ini`、`odbc.ini`、および `odbcinst.ini` の 3 つのファイルが必要です。

デフォルトの場所にインストールした場合、`amazon.redshiftodbc.ini`設定ファイルは以下のいずれかのディレクトリにあります。
+ `/opt/amazon/redshiftodbc/lib/64` ( Linux オペレーティングシステム上の 64 ビットドライバーの場合)
+ `/opt/amazon/redshiftodbc/lib/32` ( Linux オペレーティングシステム上の 32 ビットドライバーの場合)

さらに、Linux では、`/opt/amazon/redshiftodbc/Setup` の下に `odbc.ini` と `odbcinst.ini` のサンプルファイルがあります。これらのファイルは、Amazon Redshift ODBC ドライバーとデータソース名 (DSN) の設定例として使用できます。

設定ファイルに Amazon Redshift ODBC ドライバーのインストールディレクトリを使用することは推奨されません。`Setup` ディレクトリのサンプルファイルは例示のみを目的としています。Amazon Redshift ODBC ドライバーを後で再インストールするか、新しいバージョンにアップグレードすると、インストールディレクトリが上書きされます。その後、これらのファイルに加えた変更はすべて失われます。

これを回避するには、インストールディレクトリ以外のディレクトリに `amazon.redshiftodbc.ini` ファイルをコピーします。このファイルをユーザーのホームディレクトリにコピーする場合は、隠しファイルにするためにファイル名の先頭にピリオド (.) を追加します。

`odbc.ini` および `odbcinst.ini` ファイルについては、ユーザーのホームディレクトリにある設定ファイルを使用するか、別のディレクトリに新しいバージョンを作成します。デフォルトでは、Linux オペレーティングシステムには、ユーザーのホームディレクトリ (`/home/$USER` または `~/`) に `odbc.ini` ファイルと `odbcinst.ini` ファイルが必要です。これらの既定のファイルは隠しファイルで、各ファイル名の前にドット (.) が表示されます。これらのファイルは、`-a`フラグを使用してディレクトリの内容をリストした場合にのみ表示されます。

`odbc.ini` ファイルと `odbcinst.ini` ファイルに対してどちらのオプションを選択しても、ファイルを変更してドライバーと DSN 設定情報を追加します。新しいファイルを作成する場合は、これらの設定ファイルの場所を指定する環境変数を設定する必要もあります。

デフォルトでは、ODBC ドライバーマネージャーは、隠しバージョンの `odbc.ini` および `odbcinst.ini` 設定ファイル (.`odbc.ini` と .`odbcinst.ini`という名前) をホームディレクトリに配置します。また、ドライバーのインストールディレクトリの `amazon.redshiftodbc.ini` サブフォルダにある `/lib` ファイルを使用するように設定されています。これらの設定ファイルを他の場所に保存する場合は、ドライバーマネージャーがファイルを見つけることができるように、次に説明する環境変数を設定します。詳細については、[Amazon Redshift ODBC connector installation and configuration guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf) の「Specifying the Locations of the Driver Configuration Files」を参照してください。 

## Linux オペレーティングシステムでのデータソース名の作成
<a name="configure-odbc-ini-file"></a>

 データソース名 (DSN) を使用してデータストアに接続する場合は、DSN を定義するように `odbc.ini` ファイルを設定します。`odbc.ini` ファイルのプロパティを設定して、データストアの接続情報を指定する DSN を作成します。

`odbc.ini` ファイルの設定方法については、「[Amazon Redshift ODBC connector installation and configuration guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)」の「Creating a Data Source Name on a Non-Windows Machine」を参照してください。 

 Linux オペレーティングシステムでは次の形式を使用します。

```
[ODBC Data Sources]
driver_name=dsn_name

[dsn_name]
Driver=path/driver_file

Host=cluster_endpoint
Port=port_number
Database=database_name
locale=locale
```

次に、Linux オペレーティングシステムでの、64 ビット ODBC ドライバーを使用する odbc.ini の設定の例を示します。

```
[ODBC Data Sources]
Amazon_Redshift_x64=Amazon Redshift (x64)

[Amazon Redshift (x64)]
Driver=/opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so
Host=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com
Port=5932
Database=dev
locale=en-US
```

次に、Linux オペレーティングシステムでの、32 ビット ODBC ドライバーを使用する odbc.ini の設定の例を示します。

```
[ODBC Data Sources]
Amazon_Redshift_x32=Amazon Redshift (x86)

[Amazon Redshift (x86)]
Driver=/opt/amazon/redshiftodbc/lib/32/libamazonredshiftodbc32.so
Host=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com
Port=5932
Database=dev
locale=en-US
```

## Linux オペレーティングシステムで DSN を使用しない接続を設定する
<a name="configure-odbcinst-ini-file"></a>

DSN を使用しない接続を介してデータストアに接続するには、`odbcinst.ini` ファイルでドライバーを定義します。次に、アプリケーションに DSN を使用しない接続文字列を指定します。

この場合の `odbcinst.ini` ファイルの設定方法については、[Amazon Redshift ODBC connector installation and configuration guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf) の「Configuring a DSN-less Connection on a Non-Windows Machine」を参照してください。 

Linux オペレーティングシステムでは次の形式を使用します。

```
[ODBC Drivers]
driver_name=Installed
...
                            
[driver_name]
Description=driver_description
Driver=path/driver_file
    
...
```

次に、Linux オペレーティングシステムで、デフォルトのディレクトリにインストールされた 64 ビットドライバーでの `odbcinst.ini` 設定の例を示します。

```
[ODBC Drivers]
Amazon Redshift (x64)=Installed

[Amazon Redshift (x64)]
Description=Amazon Redshift ODBC Driver (64-bit)
Driver=/opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so
```

次に、Linux オペレーティングシステムで、デフォルトのディレクトリにインストールされた 32 ビットドライバーでの `odbcinst.ini` 設定の例を示します。

```
[ODBC Drivers]
Amazon Redshift (x86)=Installed

[Amazon Redshift (x86)]
Description=Amazon Redshift ODBC Driver (32-bit)
Driver=/opt/amazon/redshiftodbc/lib/32/libamazonredshiftodbc32.so
```

## 環境変数の設定
<a name="rs-mgmt-config-global-env-variables"></a>

正しい ODBC ドライバーマネージャーを使用して、正しいドライバーをロードします。これを行うには、ライブラリパス環境変数を設定します。詳細については、[Amazon Redshift ODBC connector installation and configuration guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf) の「Specifying ODBC Driver Managers on Non-Windows Machines」を参照してください。

デフォルトでは、ODBC ドライバーマネージャーは、隠しバージョンの `odbc.ini` および `odbcinst.ini` 設定ファイル (.`odbc.ini` と .`odbcinst.ini`という名前) をホームディレクトリに配置します。また、ドライバーのインストールディレクトリの `amazon.redshiftodbc.ini` サブフォルダにある `/lib` ファイルを使用するように設定されています。これらの設定ファイルを他の場所に保存する場合は、ドライバーマネージャーがファイルを検索できるように環境変数を設定します。詳細については、*Amazon Redshift ODBC Connector Installation and Configuration Guide* の「Specifying the Locations of the Driver Configuration Files」を参照してください。

## 接続機能の設定
<a name="connection-config-features"></a>

ODBC 設定には、次の接続機能を設定できます。
+ 認証情報を提供し、Amazon Redshift データベースへの接続を認証するように ODBC ドライバーを設定します。
+ SSL が有効な Amazon Redshift サーバーに接続している場合は、Secure Sockets Layer (SSL) で有効なソケットに接続するように ODBC ドライバーを設定します。
+ プロキシサーバー経由で Amazon Redshift に接続するように ODBC ドライバーを設定します。
+ クエリ処理モードを使用するように ODBC ドライバーを設定して、クエリが大量のメモリを消費しないようにします。
+ IAM 認証プロセスをプロキシサーバー経由で渡すように ODBC ドライバーを設定します。
+ 接続のタイムアウトを防ぐために TCP キープアライブを使用するように ODBC ドライバーを設定します。

これらの接続機能の詳細については、[Amazon Redshift ODBC connector installation and configuration guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf) を参照してください。

# macOS X での Amazon Redshift ODBC ドライバーの使用
<a name="install-odbc-driver-mac"></a>

Amazon Redshift データウェアハウスにアクセスするクライアントコンピュータにドライバーをインストールします。ドライバーをインストールするコンピューターは、それぞれ以下の最小システム要件を満たしている必要があります。最小システム要件については、[Amazon Redshift ODBC コネクターのインストールおよび設定ガイド](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)を参照してください。

**Topics**
+ [Amazon Redshift ODBC ドライバーをダウンロードしてインストールする](odbc-driver-mac-how-to-install.md)
+ [ODBC ドライバーマネージャーを使用してドライバーを設定する](odbc-driver-configure-mac.md)

# Amazon Redshift ODBC ドライバーをダウンロードしてインストールする
<a name="odbc-driver-mac-how-to-install"></a>

このセクションの手順を使用して、サポートされているバージョンの macOS X に Amazon Redshift ODBC ドライバーをダウンロードしてインストールします。インストールプロセスでは、以下のディレクトリにドライバーファイルがインストールされます。
+ `/opt/amazon/redshift/lib/universal`
+ `/opt/amazon/redshift/ErrorMessages`
+ `/opt/amazon/redshift/Setup`<a name="rs-mgmt-install-odbc-drivers-mac"></a>

**macOS X に Amazon Redshift ODBC ドライバーをインストールするには**

1. macOS X に Amazon Redshift ODBC ドライバーをインストールするには、[macOS ドライバーバージョン 1.6.3](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/AmazonRedshiftODBC-64-bit.1.6.3.1008.universal.pkg) をダウンロードします。

   次に、[Amazon Redshift ODBC および JDBC ドライバーのライセンス契約](https://s3.amazonaws.com/redshift-downloads/drivers/Amazon+Redshift+ODBC+and+JDBC+Driver+License+Agreement.pdf)をダウンロードして確認します。

1. **AmazonRedshiftODBC.pkg** をダブルクリックしてインストーラを実行します。

1. インストーラの手順に従ってドライバーのインストールプロセスを完了します。インストールを実行するには、ライセンス契約の条件に同意する必要があります。

**重要**  
ドライバーのインストールが完了したら、ドライバーをシステムで使用できるように設定します。ドライバー設定の詳細については、「[ODBC ドライバーマネージャーを使用してドライバーを設定するODBC ドライバーマネージャーを使用してドライバーを設定する](odbc-driver-configure-mac.md)」を参照してください。

# ODBC ドライバーマネージャーを使用してドライバーを設定する
<a name="odbc-driver-configure-mac"></a>

macOS X オペレーティングシステムでは、ODBC ドライバーマネージャーを使用して ODBC 接続を設定します。ODBC ドライバーマネージャーは設定ファイルを使用して ODBC データソースおよびドライバーを定義および設定します。使用する ODBC ドライバーマネージャーは、使用するオペレーティングシステムによって異なります。macOS X オペレーションシステムの場合、iODBC ドライバーマネージャーです。

Amazon Redshift ODBC ドライバーの設定がサポートされている ODBC ドライバーマネージャーの詳細については、macOS X オペレーティングシステム向けの「[macOS X での Amazon Redshift ODBC ドライバーの使用macOS X での ODBC ドライバーの使用](install-odbc-driver-mac.md)」を参照してください。詳細については、「[Amazon Redshift ODBC connector installation and configuration guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)」の「Specifying ODBC Driver Managers on Non- Windows Machines」を参照してください。

Amazon Redshift ODBC ドライバーを設定するには、`amazon.redshiftodbc.ini`、`odbc.ini`、および `odbcinst.ini` の 3 つのファイルが必要です。

デフォルトの場所にインストールした場合、`amazon.redshiftodbc.ini` 設定ファイルは `/opt/amazon/redshift/lib` にあります。

さらに、macOS X では、`/opt/amazon/redshift/Setup` の下に `odbc.ini` と `odbcinst.ini` のサンプルファイルがあります。これらのファイルは、Amazon Redshift ODBC ドライバーとデータソース名 (DSN) の設定例として使用できます。

設定ファイルに Amazon Redshift ODBC ドライバーのインストールディレクトリを使用することは推奨されません。`Setup` ディレクトリのサンプルファイルは例示のみを目的としています。Amazon Redshift ODBC ドライバーを後で再インストールするか、新しいバージョンにアップグレードすると、インストールディレクトリが上書きされます。その後、これらのファイルに加えた変更はすべて失われます。

これを回避するには、インストールディレクトリ以外のディレクトリに `amazon.redshiftodbc.ini` ファイルをコピーします。このファイルをユーザーのホームディレクトリにコピーする場合は、隠しファイルにするためにファイル名の先頭にピリオド (.) を追加します。

`odbc.ini` および `odbcinst.ini` ファイルについては、ユーザーのホームディレクトリにある設定ファイルを使用するか、別のディレクトリに新しいバージョンを作成します。デフォルトでは、macOS X オペレーティングシステムには、ユーザーのホームディレクトリ (`odbc.ini` または `odbcinst.ini`) に `/home/$USER` ファイルと `~/` ファイルが必要です。これらの既定のファイルは隠しファイルで、各ファイル名の前にドット (.) が表示されます。これらのファイルは、`-a`フラグを使用してディレクトリの内容をリストした場合にのみ表示されます。

`odbc.ini` ファイルと `odbcinst.ini` ファイルに対してどちらのオプションを選択しても、ファイルを変更してドライバーと DSN 設定情報を追加します。新しいファイルを作成する場合は、これらの設定ファイルの場所を指定する環境変数を設定する必要もあります。

デフォルトでは、ODBC ドライバーマネージャーは、隠しバージョンの `odbc.ini` および `odbcinst.ini` 設定ファイル (.`odbc.ini` と .`odbcinst.ini`という名前) をホームディレクトリに配置します。また、ドライバーのインストールディレクトリの `amazon.redshiftodbc.ini` サブフォルダにある `/lib` ファイルを使用するように設定されています。これらの設定ファイルを他の場所に保存する場合は、ドライバーマネージャーがファイルを見つけることができるように、次に説明する環境変数を設定します。詳細については、[Amazon Redshift ODBC connector installation and configuration guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf) の「Specifying the Locations of the Driver Configuration Files」を参照してください。 

## macOS X オペレーティングシステムでのデータソース名の作成
<a name="configure-odbc-ini-file"></a>

 データソース名 (DSN) を使用してデータストアに接続する場合は、DSN を定義するように `odbc.ini` ファイルを設定します。`odbc.ini` ファイルのプロパティを設定して、データストアの接続情報を指定する DSN を作成します。

`odbc.ini` ファイルの設定方法については、「[Amazon Redshift ODBC connector installation and configuration guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)」の「Creating a Data Source Name on a Non-Windows Machine」を参照してください。 

macOS X オペレーティングシステムでは次の形式を使用します。

```
[ODBC Data Sources]
driver_name=dsn_name

[dsn_name]
Driver=path/lib/amazonredshiftodbc.dylib

Host=cluster_endpoint
Port=port_number
Database=database_name
locale=locale
```

 次の例は、macOS X オペレーティングシステムでの `odbc.ini` の設定を示しています。

```
[ODBC Data Sources]
Amazon_Redshift_dylib=Amazon Redshift DSN for macOS X

[Amazon Redshift DSN for macOS X]
Driver=/opt/amazon/redshift/lib/amazonredshiftodbc.dylib
Host=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com
Port=5932
Database=dev
locale=en-US
```

## macOS X オペレーティングシステムで DSN を使用しない接続を設定する
<a name="configure-odbcinst-ini-file"></a>

DSN を使用しない接続を介してデータストアに接続するには、`odbcinst.ini` ファイルでドライバーを定義します。次に、アプリケーションに DSN を使用しない接続文字列を指定します。

この場合の `odbcinst.ini` ファイルの設定方法については、「[Amazon Redshift ODBC connector installation and configuration guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)」の「Configuring a DSN-less Connection on a Non-Windows Machine」を参照してください。

macOS X オペレーティングシステムでは次の形式を使用します。

```
[ODBC Drivers]
driver_name=Installed
...
                            
[driver_name]
Description=driver_description
Driver=path/lib/amazonredshiftodbc.dylib
    
...
```

次の例は、macOS X オペレーティングシステムでデフォルトのディレクトリにインストールされたドライバーの `odbcinst.ini` 設定を示しています。

```
[ODBC Drivers]
Amazon RedshiftODBC DSN=Installed

[Amazon RedshiftODBC DSN]
Description=Amazon Redshift ODBC Driver for macOS X
Driver=/opt/amazon/redshift/lib/amazonredshiftodbc.dylib
```

## 環境変数の設定
<a name="rs-mgmt-config-global-env-variables"></a>

正しい ODBC ドライバーマネージャーを使用して、正しいドライバーをロードします。これを行うには、ライブラリパス環境変数を設定します。詳細については、[Amazon Redshift ODBC connector installation and configuration guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf) の「Specifying ODBC Driver Managers on Non-Windows Machines」を参照してください。

デフォルトでは、ODBC ドライバーマネージャーは、隠しバージョンの `odbc.ini` および `odbcinst.ini` 設定ファイル (.`odbc.ini` と .`odbcinst.ini`という名前) をホームディレクトリに配置します。また、ドライバーのインストールディレクトリの `amazon.redshiftodbc.ini` サブフォルダにある `/lib` ファイルを使用するように設定されています。これらの設定ファイルを他の場所に保存する場合は、ドライバーマネージャーがファイルを検索できるように環境変数を設定します。詳細については、*Amazon Redshift ODBC Connector Installation and Configuration Guide* の「Specifying the Locations of the Driver Configuration Files」を参照してください。

## 接続機能の設定
<a name="connection-config-features"></a>

ODBC 設定には、次の接続機能を設定できます。
+ 認証情報を提供し、Amazon Redshift データベースへの接続を認証するように ODBC ドライバーを設定します。
+ SSL が有効な Amazon Redshift サーバーに接続している場合は、Secure Sockets Layer (SSL) で有効なソケットに接続するように ODBC ドライバーを設定します。
+ プロキシサーバー経由で Amazon Redshift に接続するように ODBC ドライバーを設定します。
+ クエリ処理モードを使用するように ODBC ドライバーを設定して、クエリが大量のメモリを消費しないようにします。
+ IAM 認証プロセスをプロキシサーバー経由で渡すように ODBC ドライバーを設定します。
+ 接続のタイムアウトを防ぐために TCP キープアライブを使用するように ODBC ドライバーを設定します。

これらの接続機能の詳細については、[Amazon Redshift ODBC connector installation and configuration guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf) を参照してください。

# ODBC ドライバーオプション
<a name="configure-odbc-options"></a>

設定オプションを使用して、Amazon Redshift ODBC ドライバーの動作を制御できます。

Microsoft Windows では、通常、データソース名 (DSN) を設定するときにドライバーオプションを設定します。プログラムを使用して接続するとき、または `HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\your_DSN` でレジストリキーを追加または変更することによって、接続文字列にドライバーオプションを設定することもできます。DSN の設定の詳細については、「[Microsoft Windows での Amazon Redshift ODBC ドライバーの使用](install-odbc-driver-windows.md)」を参照してください。

macOS X では、`odbc.ini` および `amazon.redshiftodbc.ini` ファイルでドライバー設定オプションを設定します (「[ODBC ドライバーマネージャーを使用してドライバーを設定するODBC ドライバーマネージャーを使用してドライバーを設定する](odbc-driver-configure-mac.md)」を参照)。`amazon.redshiftodbc.ini` ファイルに設定されている設定オプションは、すべての接続に適用されます。これに対して、`odbc.ini`ファイルで設定されている設定オプションは接続に固有です。`odbc.ini` で設定された設定オプションは、`amazon.redshiftodbc.ini` で設定された設定オプションよりも優先されます。

ODBC ドライバーの設定オプションを指定する方法については、[Amazon Redshift ODBC connector installation and configuration guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf) を参照してください。

# 以前のバージョンの ODBC ドライバー
<a name="odbc-previous-versions"></a>

ツールに特定のバージョンのドライバーが必要な場合にのみ、Amazon Redshift ODBC ドライバーの以前のバージョンをダウンロードします。

## 以前のバージョンの ODBC ドライバー (Windows 用)
<a name="odbc-previous-versions-windows"></a>

64 ビットドライバーは次のとおりです。
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1006/AmazonRedshiftODBC64-1.6.3.1006.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1006/AmazonRedshiftODBC64-1.6.3.1006.msi)
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.1.1000/AmazonRedshiftODBC64-1.6.1.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.1.1000/AmazonRedshiftODBC64-1.6.1.1000.msi)
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC64-1.5.20.1024.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC64-1.5.20.1024.msi)
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.16.1019/AmazonRedshiftODBC64-1.5.16.1019.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.16.1019/AmazonRedshiftODBC64-1.5.16.1019.msi)
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.9.1011/AmazonRedshiftODBC64-1.5.9.1011.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.9.1011/AmazonRedshiftODBC64-1.5.9.1011.msi)
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.7.1007/AmazonRedshiftODBC64-1.5.7.1007.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.7.1007/AmazonRedshiftODBC64-1.5.7.1007.msi)
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.65.1000/AmazonRedshiftODBC64-1.4.65.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.65.1000/AmazonRedshiftODBC64-1.4.65.1000.msi)
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.62.1000/AmazonRedshiftODBC64-1.4.62.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.62.1000/AmazonRedshiftODBC64-1.4.62.1000.msi)
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC64-1.4.59.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC64-1.4.59.1000.msi)
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC64-1.4.56.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC64-1.4.56.1000.msi)
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.53.1000/AmazonRedshiftODBC64-1.4.53.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.53.1000/AmazonRedshiftODBC64-1.4.53.1000.msi)
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC64-1.4.52.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC64-1.4.52.1000.msi)

32 ビットドライバーは廃止され、以前のバージョンはサポートされていません。

## 以前のバージョンの ODBC ドライバー (Linux 用)
<a name="odbc-previous-versions-linux"></a>

64 ビットドライバーのバージョンは次のとおりです。
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1006/AmazonRedshiftODBC-64-bit-1.6.3.1006-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1006/AmazonRedshiftODBC-64-bit-1.6.3.1006-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.1.1000/AmazonRedshiftODBC-64-bit-1.6.1.1000-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.1.1000/AmazonRedshiftODBC-64-bit-1.6.1.1000-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC-64-bit-1.5.20.1024-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC-64-bit-1.5.20.1024-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.16.1019/AmazonRedshiftODBC-64-bit-1.5.16.1019-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.16.1019/AmazonRedshiftODBC-64-bit-1.5.16.1019-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.9.1011/AmazonRedshiftODBC-64-bit-1.5.9.1011-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.9.1011/AmazonRedshiftODBC-64-bit-1.5.9.1011-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.7.1007/AmazonRedshiftODBC-64-bit-1.5.7.1007-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.7.1007/AmazonRedshiftODBC-64-bit-1.5.7.1007-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.65.1000/AmazonRedshiftODBC-64-bit-1.4.65.1000-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.65.1000/AmazonRedshiftODBC-64-bit-1.4.65.1000-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.62.1000/AmazonRedshiftODBC-64-bit-1.4.62.1000-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.62.1000/AmazonRedshiftODBC-64-bit-1.4.62.1000-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC-64-bit-1.4.59.1000-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC-64-bit-1.4.59.1000-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC-64-bit-1.4.59.1000-1.x86\$164.deb](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC-64-bit-1.4.59.1000-1.x86_64.deb) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC-64-bit-1.4.56.1000-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC-64-bit-1.4.56.1000-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC-64-bit-1.4.56.1000-1.x86\$164.deb](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC-64-bit-1.4.56.1000-1.x86_64.deb) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-64-bit-1.4.52.1000-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-64-bit-1.4.52.1000-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-64-bit-1.4.52.1000-1.x86\$164.deb](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-64-bit-1.4.52.1000-1.x86_64.deb) 

32 ビットドライバーは廃止され、以前のバージョンはサポートされていません。

## 以前のバージョンの ODBC ドライバー (macOS X 用)
<a name="odbc-previous-versions-mac"></a>

macOS X 用の Amazon Redshift ODBC ドライバーのバージョンは次のとおりです。
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1006/AmazonRedshiftODBC-64-bit.1.6.3.1006.universal.pkg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1006/AmazonRedshiftODBC-64-bit.1.6.3.1006.universal.pkg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.1.1000/AmazonRedshiftODBC-64-bit.1.6.1.1000.universal.pkg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.1.1000/AmazonRedshiftODBC-64-bit.1.6.1.1000.universal.pkg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC-1.5.20.1024.arm64.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC-1.5.20.1024.arm64.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC-1.5.20.1024.x86\$164.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC-1.5.20.1024.x86_64.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.16.1019/AmazonRedshiftODBC-1.5.16.1019.x86\$164.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.16.1019/AmazonRedshiftODBC-1.5.16.1019.x86_64.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.9.1011/AmazonRedshiftODBC-1.5.9.1011.x86\$164.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.9.1011/AmazonRedshiftODBC-1.5.9.1011.x86_64.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.7.1007/AmazonRedshiftODBC-1.5.7.1007.x86\$164.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.7.1007/AmazonRedshiftODBC-1.5.7.1007.x86_64.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.65.1000/AmazonRedshiftODBC-1.4.65.1000.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.65.1000/AmazonRedshiftODBC-1.4.65.1000.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.62.1000/AmazonRedshiftODBC-1.4.62.1000.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.62.1000/AmazonRedshiftODBC-1.4.62.1000.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC-1.4.59.1000.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC-1.4.59.1000.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC-1.4.56.1000.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC-1.4.56.1000.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-1.4.52.1000.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-1.4.52.1000.dmg) 

# 接続のセキュリティオプションを設定する
<a name="connecting-ssl-support"></a>

Amazon Redshift では Secure Sockets Layer (SSL) 接続がサポートされているため、データとサーバー証明書を暗号化でき、クライアントが接続するサーバー証明書を検証できます。

## SSL
<a name="connect-using-ssl"></a>

SSL 接続をサポートするために、Amazon Redshift では、[AWS Certificate Manager(ACM)](https://aws.amazon.com/certificate-manager/) によって発行された SSL 証明書を作成して各クラスターにインストールします。ACM 証明書は、ほとんどのオペレーションシステム、ウェブブラウザ、およびクライアントから公的に信頼されています。SQL クライアントまたはアプリケーションが、`sslmode`接続オプションを`require`、`verify-ca`、または`verify-full`に設定した SSL を使用して Amazon Redshift に接続する場合は、証明書バンドルをダウンロードする必要があるかもしれません。クライアントが証明書を必要とする場合、Amazon Redshift は以下のようにバンドル証明書を提供します。
+ [https://s3.amazonaws.com/redshift-downloads/amazon-trust-ca-bundle.crt](https://s3.amazonaws.com/redshift-downloads/amazon-trust-ca-bundle.crt)からバンドルをダウンロードします。
  + 予想される MD5 チェックサム番号は 418dea9b6d5d5de7a8f1ac42e164cdcf です。
  + sha256 のチェックサム番号は 36dba8e4b8041cd14b9d60158893963301bcb92e1c456847784de2acb5bd550 です。

  `https://s3.amazonaws.com/redshift-downloads/redshift-ca-bundle.crt`にあった以前の証明書バンドルは使用しないでください。
+  中国のAWS リージョンでは、[https://s3---cn-north-1.amazonaws.com.rproxy.govskope.us.cn/redshift-downloads-cn/amazon-trust-ca-bundle.crt](https://s3---cn-north-1.amazonaws.com.rproxy.govskope.us.cn/redshift-downloads-cn/amazon-trust-ca-bundle.crt)からバンドルをダウンロードします。
  + 予想される MD5 チェックサム番号は 418dea9b6d5d5de7a8f1ac42e164cdcf です。
  + sha256 のチェックサム番号は 36dba8e4b8041cd14b9d60158893963301bcb92e1c456847784de2acb5bd550 です。

  `https://s3---cn-north-1.amazonaws.com.rproxy.govskope.us.cn/redshift-downloads-cn/redshift-ca-bundle.crt`および`https://s3---cn-north-1.amazonaws.com.rproxy.govskope.us.cn/redshift-downloads-cn/redshift-ssl-ca-cert.pem`にあった以前の証明書バンドルは使用しないでください。

**重要**  
Amazon Redshift は、SSL 証明書の管理方法を変更しました。引き続き SSL でクラスターに接続するには、現在の信頼ルート CA 証明書を更新する必要があります。詳細については、「[SSL 接続用 ACM 証明書への移行](connecting-transitioning-to-acm-certs.md)」を参照してください。

デフォルトでは、クラスターデータベースは SSL の使用の有無にかかわらず接続を受け入れます。クラスターが SSL 接続を要求するように設定するには、クラスターに関連付けられているパラメータグループで `require_SSL` パラメータを `true` に設定します。

Amazon Redshift は、連邦情報処理標準 (FIPS) 140-2 に準拠する SSL モードをサポートしています。FIPS 準拠 SSL モードはデフォルトで無効化されています。

**重要**  
システムが FIPS に準拠する必要がある場合のみ、FIPS 準拠の SSL モードを有効にします。

FIPS 準拠の SSL モードを有効にするには、Amazon Redshift クラスターまたは Redshift Serverless ワークグループに関連付けたパラメータグループで、`use_fips_ssl` パラメータと `require_SSL` パラメータの両方を `true` に設定します。クラスターのパラメータグループの変更については、「[Amazon Redshift パラメータグループを作成します。](working-with-parameter-groups.md)」を参照してください。ワークグループのパラメータグループの変更については、「[Amazon Redshift Serverless への FIPS 準拠の SSL 接続の設定](serverless-connecting.md#serverless_secure-fips-ssl)」を参照してください。

 Amazon Redshift では、Elliptic Curve Diffie—Hellman Ephemeral (ECDHE) 鍵契約プロトコルがサポートされます。ECDHE を使用すると、クライアントとサーバーはそれぞれ、安全でないチャネルを介して共有シークレットを確立するために使用される楕円曲線パブリック/プライベートキーペアを持ちます。ECDHE を有効にするために、Amazon Redshift で設定を行う必要はありません。ECDHE を使用してクライアント/サーバー間の通信を暗号化する SQL クライアントツールから接続する場合、Amazon Redshift は提供された暗号リストを使用して適切な接続を行います。詳細については、ウィキペディアの [Elliptic curve diffie—hellman](https://en.wikipedia.org/wiki/Elliptic_curve_Diffie%E2%80%93Hellman) と OpenSSL ウェブサイトの [Ciphers](https://www.openssl.org/) を参照してください。

## ODBC の SSL および信頼 CA 証明書
<a name="connecting-ssl-support-odbc"></a>

最新の Amazon Redshift ODBC ドライバー (バージョン 1.3.7.1000 以降) を使用して接続している場合は、このセクションをスキップします。最新のドライバーをダウンロードする方法は、「[Amazon Redshift での ODBC ドライバーのバージョン 2.x による接続の設定](odbc20-install.md)」を参照してください。

引き続き SSL でクラスターに接続するには、現在の信頼ルート CA 証明書を更新する必要があります。詳細については、「[SSL](#connect-using-ssl)」を参照してください。

ダウンロードした証明書が、予想される MD5 チェックサム番号と一致していることを確認できます。これを行うには、Linux オペレーティングシステムではMd5sumプログラムを使用するか、Windows および macOS X オペレーティングシステムでは別のツールを使用できます。

 ODBC DSN には、クライアント接続の暗号化処理方法とサーバー証明書の検証を決定する `sslmode` 設定が含まれます。Amazon Redshift では、クライアント接続から次の `sslmode` 値をサポートします。
+ `disable`

  SSL は無効となり、接続は暗号化されません。
+ `allow`

  SSL は、サーバーで必要な場合に使用されます。
+ `prefer`

  SSL は、サーバーでサポートされている場合に使用されます。Amazon Redshift は SSL をサポートしているため、`sslmode` を `prefer` に設定すると SSL が使用されます。
+ `require`

  SSL が必要です。
+ `verify-ca`

  SSL を使用する必要があり、サーバー証明書を検証する必要があります。
+ `verify-full`

  SSL を使用する必要があります。サーバー証明書を検証し、サーバーのホスト名が証明書上のホスト名属性と一致する必要があります。

クライアントとサーバー間の接続で SSL が使用され、サーバー証明書が検証されているかどうかを確認できます。これを実行するには、クライアント上の ODBC DSN の `sslmode` 設定と、サーバー上の Amazon Redshift クラスターの `require_SSL` 設定を確認します。次の表は、クライアントとサーバーのさまざまな設定の組み合わせの暗号化の結果を示しています。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/connecting-ssl-support.html)

### Microsoft Windows で ODBC によりサーバー証明書を使用して接続する
<a name="connecting-ssl-support-odbc-with-cert"></a>

 SSL とサーバー証明書を使用してクラスターに接続する場合は、まず証明書をクライアントコンピュータまたは Amazon EC2 インスタンスにダウンロードします。次に、ODBC DSN を設定します。

1.  Amazon Redshift の認定権限バンドルを、ドライバーのインストールディレクトリ内の`lib`フォルダでクライアントコンピュータにダウンロードし、ファイルを`root.crt`として保存します。ダウンロード情報については、「[SSL](#connect-using-ssl)」を参照してください。

1.  [**ODBC Data Source Administrator (ODBC データソース管理者)**] を開き、ODBC 接続のシステム DSN エントリを追加または編集します。DNS エイリアスを使用する場合を除き、[**SSL Mode (SSL モード)**] で [`verify-full`] を選択します。DNS エイリアスを使用する場合は、[`verify-ca`] を選択します。次に、[**Save **] を選択します。

    ODBC DSN の設定方法の詳細については、「[Amazon Redshift での ODBC ドライバーのバージョン 2.x による接続の設定](odbc20-install.md)」を参照してください。

## Java の SSL およびサーバー証明書
<a name="connecting-ssl-support-java"></a>

SSL は、クライアントとクラスター間を移動するデータを暗号化することによりセキュリティを強化します。サーバー証明書の使用により、クラスターが Amazon Redshift クラスターであることが確認され、セキュリティがさらに強化されます。これを行うには、プロビジョニングしたすべてのクラスターに自動インストールされたサーバー証明書をチェックします。JDBC でサーバー証明書を使用する方法の詳細については、PostgreSQL ドキュメントの「[Configuring the Client](https://jdbc.postgresql.org/documentation/ssl/#configuring-the-client)」を参照してください。

### Java で信頼 CA 証明書を使用して接続する
<a name="connecting-ssl-support-java-with-cert"></a>

**重要**  
Amazon Redshift は、SSL 証明書の管理方法を変更しました。引き続き SSL でクラスターに接続するには、現在の信頼ルート CA 証明書を更新する必要があります。詳細については、「[SSL](#connect-using-ssl)」を参照してください。

**信頼 CA 証明書を使用して接続するには**

Amazon Redshift 認証機関バンドルの CA 証明書を Java トラストストアまたはプライベートトラストストアにインポートするには、`redshift-keytool.jar` ファイルを使用します。

1. Java コマンドラインの `-Djavax.net.ssl.trustStore` オプションを使用している場合は、可能であればコマンドラインから解除します。

1. [redshift-keytool.jar](https://s3.amazonaws.com/redshift-downloads/redshift-keytool.jar) をダウンロードします。

1. 次のいずれかを行ってください。
   + Amazon Redshift の認定権限バンドルを Java TrustStore にインポートするには、次のコマンドを実行します。

     ```
     java -jar redshift-keytool.jar -s
     ```
   + Amazon Redshift の認定権限バンドルをプライベート TrustStore にインポートするには、次のコマンドを実行します。

     ```
     java -jar redshift-keytool.jar -k <your_private_trust_store> -p <keystore_password> 
     ```

# SSL 接続用 ACM 証明書への移行
<a name="connecting-transitioning-to-acm-certs"></a>

Amazon Redshift では、現在クラスターの SSL 証明書を[AWS Certificate Manager (ACM)](https://aws.amazon.com/certificate-manager/)」発行の証明書に置き換えています。ACM は、現在のほとんどのシステムで信頼されている信頼のある公開認証機関 (CA) です。引き続き SSL でクラスターに接続するには、現在の信頼ルート CA 証明書を更新する必要があります。

この変更は、以下のすべてに該当する場合のみ適用されます。
+  `sslMode` 接続オプションを `require`、`verify-ca`、または `verify-full` 設定オプションに指定して、SQL クライアントまたはアプリケーションから Amazon Redshift クラスターに SSL 接続されている。
+ Amazon Redshift ODBC または JDBC ドライバーを使用していない、または ODBC バージョン 1.3.7.1000 または JDBC バージョン 1.2.8.1005 より前の Amazon Redshift ドライバーを使用している。

この変更が商用 Amazon Redshift リージョンに影響する場合は、現在の信頼ルート CA 証明書を 2017 年 10 月 23 日までに更新する必要があります。Amazon Redshift は、お客様のクラスターを 2017 年 10 月 23 日までに順次 ACM 証明書に切り替えていきます。この変更によるお客様のクラスターのパフォーマンスまたはアベイラビリティーへの影響はほとんどありません。

AWS GovCloud (US) (米国)リージョンのお客様が、この変更により影響を受ける場合には、サービスの中断を避けるために、現在の信頼ルート CA 証明書を 2020 年 4 月 1 日までに更新する必要があります。この日付以降、SSL 暗号化接続を使用して Amazon Redshift クラスターに接続するクライアントには、追加の信頼できる認定権限 (CA) が必要です。クライアントは、信頼できる認定権限を使用して、クラスターに接続するときに Amazon Redshift クラスターの ID を確認します。SQL クライアントとアプリケーションを更新して、新しい信頼された CA を含む更新された証明書バンドルを使用するには、アクションが必要です。

**重要**  
2021 年 1 月 5 日、中国リージョンにおいて、Amazon Redshift の クラスター用の SSL 証明書が、AWS Certificate Manager(ACM) 発行の証明書に置き換えられました。この変更が中国 (北京) リージョンまたは中国 (寧夏) リージョンに影響する場合は、サービスの中断を避けるために、現在の信頼ルート CA 証明書を 2021 年 1 月 5 日までに更新する必要があります。この日付以降、SSL 暗号化接続を使用して Amazon Redshift クラスターに接続するクライアントには、追加の信頼できる認定権限 (CA) が必要です。クライアントは、信頼できる認定権限を使用して、クラスターに接続するときに Amazon Redshift クラスターの ID を確認します。SQL クライアントとアプリケーションを更新して、新しい信頼された CA を含む更新された証明書バンドルを使用するには、アクションが必要です。
+ [最新の Amazon Redshift ODBC ドライバーまたは JDBC ドライバーを使用する](#connecting-transitioning-to-acm-latest-odbc-jdbc)
+ [旧 Amazon Redshift ODBC ドライバーまたは JDBC ドライバーを使用する](#connecting-transitioning-to-acm-earlier-odbc-jdbc)
+ [その他の SSL 接続タイプを使用する](#connecting-transitioning-to-acm-other-ssl-types)

## 最新の Amazon Redshift ODBC ドライバーまたは JDBC ドライバーを使用する
<a name="connecting-transitioning-to-acm-latest-odbc-jdbc"></a>

最新の Amazon Redshift の ODBC ドライバーまたは JDBC ドライバーを使用することが推奨されています。ODBC バージョン 1.3.7.1000 および JDBC バージョン 1.2.8.1005 以前の Amazon Redshift ドライバーは、自動的に Amazon Redshift の自己署名証明書から ACM 証明書に移行されます。最新のドライバーをダウンロードする方法は、「[Amazon Redshift での JDBC ドライバーバージョン 2.x による接続の構成](jdbc20-install.md)」を参照してください。

最新の Amazon Redshift JDBC ドライバーを使用する場合は、JVM オプションの `-Djavax.net.ssl.trustStore` を使用しないことをお勧めします。`-Djavax.net.ssl.trustStore`を使用する必要がある場合は、Redshift の認定権限バンドルを指定のトラストストアにインポートします。ダウンロード情報については、「[SSL](connecting-ssl-support.md#connect-using-ssl)」を参照してください。詳細については、「[Amazon Redshift の認定権限バンドルを TrustStore にインポートする](#importing-the-acm-bundle-to-truststore)」を参照してください。

## 旧 Amazon Redshift ODBC ドライバーまたは JDBC ドライバーを使用する
<a name="connecting-transitioning-to-acm-earlier-odbc-jdbc"></a>
+ ODBC DSN が `SSLCertPath` を使用して設定されている場合は、指定されたパスの証明書ファイルに上書きします。
+ `SSLCertPath` が設定されていない場合は、ドライバーの DLL の位置にある証明書ファイル (`root.crt`) に上書きします。

バージョン 1.2.8.1005 より前の Amazon Redshift JDBC ドライバーを使用する必要がある場合は、以下のいずれかを行います。
+ JDBC 接続文字列で `sslCert` オプションを使用している場合は、`sslCert`オプションを解除します。続いて、Redshift の認証機関バンドルを Java トラストストアにインポートします。ダウンロード情報については、「[SSL](connecting-ssl-support.md#connect-using-ssl)」を参照してください。詳細については、「[Amazon Redshift の認定権限バンドルを TrustStore にインポートする](#importing-the-acm-bundle-to-truststore)」を参照してください。
+ Java コマンドラインの `-Djavax.net.ssl.trustStore` オプションを使用している場合は、可能であればコマンドラインから解除します。続いて、Redshift の認証機関バンドルを Java トラストストアにインポートします。ダウンロード情報については、「[SSL](connecting-ssl-support.md#connect-using-ssl)」を参照してください。詳細については、「[Amazon Redshift の認定権限バンドルを TrustStore にインポートする](#importing-the-acm-bundle-to-truststore)」を参照してください。

### Amazon Redshift の認定権限バンドルを TrustStore にインポートする
<a name="importing-the-acm-bundle-to-truststore"></a>

Amazon Redshift の認定権限バンドルの CA 証明書を Java TrustStore またはプライベート信頼ストアにインポートするには、`redshift-keytool.jar` を使用します。

**Amazon Redshift の認定権限バンドルを TrustStore にインポートするには**

1. [redshift-keytool.jar](https://s3.amazonaws.com/redshift-downloads/redshift-keytool.jar) をダウンロードします。

1. 次のいずれかを行ってください。
   + Amazon Redshift の認定権限バンドルを Java TrustStore にインポートするには、次のコマンドを実行します。

     ```
     java -jar redshift-keytool.jar -s
     ```
   + Amazon Redshift の認定権限バンドルをプライベート TrustStore にインポートするには、次のコマンドを実行します。

     ```
     java -jar redshift-keytool.jar -k <your_private_trust_store> -p <keystore_password> 
     ```

## その他の SSL 接続タイプを使用する
<a name="connecting-transitioning-to-acm-other-ssl-types"></a>

次のいずれかを使用して接続している場合は、このセクションの手順に従います。
+  オープンソースの ODBC ドライバー 
+  オープンソースの JDBC ドライバー 
+  [Amazon Redshift RSQL](https://docs.aws.amazon.com/redshift/latest/mgmt/rsql-query-tool.html) コマンドラインインターフェイス 
+  libpq に基づく言語バインディング (例: psycopg2 (Python)、ruby-pg (Ruby)) 

**その他の SSL 接続タイプで ACM 証明書を使用するには**

1.  Amazon Redshift の認定権限バンドルをダウンロードします。ダウンロード情報については、「[SSL](connecting-ssl-support.md#connect-using-ssl)」を参照してください。

1. バンドルの証明書を `root.crt` ファイルに追加します。
   + Linux および macOS X オペレーティングシステムでは、ファイルは `~/.postgresql/root.crt` です。
   + Microsoft Windows では、ファイルは `%APPDATA%\postgresql\root.crt` です。

# クライアントツールおよびコードからの接続
<a name="connecting-via-client-tools"></a>

Amazon Redshift には、クラスターやワークグループに接続する Amazon Redshift クエリエディタ v2 が用意されています。詳細については、「[クエリエディタ v2 を使用してデータベースのクエリを実行するAmazon Redshift クエリエディタ v2 を使用したデータベースのクエリの実行](query-editor-v2.md)」を参照してください。

このセクションでは、接続用サードパーティー製ツールのいくつかのオプションについて説明します。さらに、クラスターにプログラムにより接続する方法について説明します。

**Topics**
+ [Amazon Redshift RSQL を使用した接続](rsql-query-tool.md)
+ [Amazon Redshift RSQL を使用してクラスターに接続する](rsql-query-tool-starting-tool-connection.md)
+ [Amazon Redshift RSQL メタコマンド](rsql-query-tool-commands.md)
+ [Amazon Redshift RSQL 変数](rsql-query-tool-variables.md)
+ [Amazon Redshift RSQL エラーコード](rsql-query-tool-error-codes.md)
+ [Amazon Redshift RSQL 環境変数](rsql-query-tool-environment-variables.md)

# Amazon Redshift RSQL を使用した接続
<a name="rsql-query-tool"></a>

 Amazon Redshift RSQL は、Amazon Redshift クラスターおよびデータベースと対話するためのコマンドラインクライアントです。Amazon Redshift クラスターに接続したり、データベースオブジェクトを記述したり、データをクエリしたり、クエリ結果をさまざまな出力形式で表示したりすることができます。

 Amazon Redshift RSQL は、PostgreSQL psql コマンドラインツールの機能に、Amazon Redshift に特有の機能を追加したものをサポートします。これには以下が含まれます。
+ AD FS、PingIdentity、Okta、Azure ADm、またはその他の SAML/JWT ベースの ID プロバイダーを使用した、シングルサインオン認証を使用できます。多要素認証 (MFA) には、ブラウザベースの SAML アイデンティティプロバイダーを使用することもできます。
+ テーブルソートキー、テーブルソートキー、レイトバインディングビュー (LBV)、マテリアライズドビューなど、Amazon Redshift オブジェクトのプロパティまたは属性を記述できます。また、AWS Glueカタログや Apache Hive Metastore の外部テーブル、Amazon RDS for PostgreSQL、Amazon Aurora PostgreSQL-Compatible Edition、RDS for MySQL (プレビュー)、Amazon Aurora MySQL-Compatible Edition(プレビュー) の外部データベース、Amazon Redshift のデータ共有を利用して共有されたテーブルのプロパティや属性を記述することができます。
+ また、`IF`(`\ELSEIF`、`\ELSE,``\ENDIF`)、`\GOTO`および`\LABEL`のような拡張コントロールフローコマンドを使用することもできます。

 入力パラメータとして渡されたスクリプトを実行する Amazon Redshift RSQL バッチモードでは、SQL と複雑なビジネスロジックの両方を含むスクリプトを実行できます。既存の自己管理型のオンプレミスデータウェアハウスがある場合は、Amazon Redshift RSQL を使用して、Teradata BTEQ スクリプトなどの既存の抽出、変換、ロード (ETL) および自動化スクリプトを置き換えることができます。RSQL を使用すると、手続き型言語でスクリプトを手動で再実装する必要がなくなります。

 Amazon Redshift RSQL は Linux、Windows、macOS X オペレーションシステムで利用できます。

Amazon Redshift RSQL の問題を報告するには、redshift-rsql-support@amazon.comに書き込んでください。

**Topics**
+ [Amazon Redshift RSQL の開始方法](rsql-query-tool-getting-started.md)
+ [Amazon Redshift RSQL の変更ログ](rsql-query-tool-changelog.md)

# Amazon Redshift RSQL の開始方法
<a name="rsql-query-tool-getting-started"></a>

Linux、macOS、または Microsoft Windows オペレーションシステムを搭載したコンピュータに Amazon Redshift RSQL をインストールします。

## RSQL をダウンロードする
<a name="rsql-query-tool-download"></a>
+ Linux 64 ビット RPM: [RSQL バージョン 1.1.2](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.2/AmazonRedshiftRsql-1.1.2.rhel.x86_64.rpm) 
  + Linux アーティファクト署名キー: [キー](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.2/AmazonRedshiftRsql-1.1.2-certificate.pem) 
  + Linux アーティファクト署名付き Hash: [Hash](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.2/AmazonRedshiftRsql-1.1.2-signature.bin) 
+ Mac OS 64 ビット PKG: [RSQL バージョン 1.1.2](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.2/AmazonRedshiftRsql-1.1.2.universal.pkg) 
+ Windows 64 ビット MSI: [RSQL バージョン 1.1.2](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.2/AmazonRedshiftRsql-1.1.2.x86_64.msi) 

[Amazon Redshift RSQL の変更ログ](rsql-query-tool-changelog.md) で変更ログを確認し、以前のバージョンをダウンロードしてください。

## Linux 用 RSQL をインストールする
<a name="rsql-query-tool-linux-install"></a>

Linux 用 RSQL をインストールするには、以下の手順に従います。

1. 次のコマンドでドライバーマネージャーをインストールします。

   ```
   sudo yum install unixODBC
   ```

1. ODBC ドライバーをインストールします。[Amazon Redshift ODBC ドライバーをダウンロードしてインストールするODBC ドライバーをダウンロードしてインストールする](odbc20-install-linux.md)。

1. ini ファイルをホームディレクトリにコピーします。

   ```
   cp /opt/amazon/redshiftodbcx64/odbc.ini ~/.odbc.ini
   ```

1. ファイルの場所を指すように環境変数を設定します。

   ```
   export ODBCINI=~/.odbc.ini
   export ODBCSYSINI=/opt/amazon/redshiftodbcx64/
   export AMAZONREDSHIFTODBCINI=/opt/amazon/redshiftodbcx64/amazon.redshiftodbc.ini
   ```

1. これで、次のコマンドを実行して RSQL をインストールできます。

   ```
   sudo rpm -i AmazonRedshiftRsql-<version>.rhel.x86_64.rpm
   ```

## Mac 用 RSQL をインストールする
<a name="rsql-query-tool-mac-install"></a>

Mac OSX 用 RSQL をインストールするには、以下の手順に従います。

1. 次のコマンドでドライバーマネージャーをインストールします。

   ```
   brew install unixodbc --build-from-source
   ```

1. ODBC ドライバーをインストールします。[Amazon Redshift ODBC ドライバーをダウンロードしてインストールするODBC ドライバーをダウンロードしてインストールする](odbc-driver-mac-how-to-install.md)。

1. ini ファイルをホームディレクトリにコピーします。

   ```
   cp /opt/amazon/redshift/Setup/odbc.ini ~/.odbc.ini
   ```

1. ファイルの場所を指すように環境変数を設定します。

   ```
   export ODBCINI=~/.odbc.ini
   export ODBCSYSINI=/opt/amazon/redshift/Setup
   export AMAZONREDSHIFTODBCINI=/opt/amazon/redshift/lib/amazon.redshiftodbc.ini
   ```

1. `/usr/local/lib`にない場合は、libodbc.dylib の場所に`DYLD_LIBRARY_PATH`を設定します。

   ```
   export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/lib
   ```

1. pkg ファイルをダブルクリックしてインストーラを実行します。

1. インストーラの手順に従ってインストールを完了します。ライセンス契約の条項に同意する。

## Windows 用 RSQL をインストールする
<a name="rsql-query-tool-windows-install"></a>

Windows 用 RSQL をインストールするには、以下の手順に従います。

1. ODBC ドライバーをインストールします。[Amazon Redshift ODBC ドライバーをダウンロードしてインストールするODBC ドライバーをダウンロードしてインストールする](odbc-driver-windows-how-to-install.md)。

1. RSQL ダウンロードファイルをダブルクリックしてインストーラを実行し、プロンプトに従ってインストールを完了します。

# Amazon Redshift RSQL の変更ログ
<a name="rsql-query-tool-changelog"></a>

*1.1.2 (2025 年 12 月 11 日)*

バグ修正
+ \$1goto コマンドと \$1label コマンドで障害が発生するバグを修正しました。
+ 変数が引用符で囲まれたときに RSQL が変数値を印刷できないバグを修正しました。
+ UseDeclareFetch が有効になっていて、クエリ結果が ODBC DSN Fetch パラメータサイズを超えたときに RSQL がクラッシュするバグを修正しました。
+ ページャーがオンになっていても、複数の結果ページが一度に返される問題を修正しました。
+ トランザクションブロック内でクエリが失敗したときに RSQL がクラッシュするバグを修正しました。

*1.1.1 (2025 年 11 月 20 日)*

バグ修正
+ -c フラグの使用時に RSQL がクエリを誤って解析する問題を修正しました。この修正はすべてのプラットフォームに適用されます。
+ ユーザーが RSQL で \$1s コマンドを使用できなくなる Mac のバグを修正しました。

*1.1.0 (2025 年 11 月 11 日)*

バグ修正
+ RSQL で予期しないクラッシュを引き起こしていたメモリリークの問題を解決しました。
+ RSQL から OpenSSL 依存関係を削除しました。
+ 同じ環境内の libpq/psql インストールとのリンクの競合を修正しました。
+ Amazon Linux 2023、Windows、macOS のプラットフォーム互換性が向上しました。
+ 現在の表示サイズを超えると出力が切り捨てられる問題を修正しました。

*1.0.8 (2023-06-19)*

バグ修正
+ SHOW コマンドで出力が切り捨てられる問題を修正しました。
+ 外部 Kinesis ストリームと Kafka トピックを記述するためのサポートを \$1de に追加しました。

*1.0.7 (2023 年 3 月 22 日)*

バグ修正
+ RSQL がマテリアライズドビューを記述できない問題を修正しました。
+ Amazon Redshift Serverless を使用しているときに stl\$1connection\$1log でアクセス権限拒否エラーが発生する問題を修正しました。
+ RSQL が \$1GOTO ラベルを誤って処理する場合がある問題を修正しました。
+ SSL メッセージがクワイエットモードで印刷される問題を修正しました。
+ ストアドプロシージャを記述するときにランダムな文字が表示される問題を修正しました。
+ 重複する ERROR/INFO メッセージが印刷される問題を修正しました。

新
+ RSQL は、ODBC ドライバーから SSL 情報を直接取得するようになりました。



*1.0.6 (2023 年 2 月 21 日)*

バグ修正
+ Redshift パッチ 1.0.46086 (P173) で \$1d がエラー (整数の入力構文が無効: "xid") をスローする問題を修正しました。

新
+ サポートされているアーキテクチャを反映するようにインストールファイルの名前を変更しました。



*1.0.5 (2022-06-27)*

バグ修正
+ SQL エラーメッセージを標準エラー (stderr) に送信します。
+ ON\$1ERROR\$1STOP を使用する際の終了コードの問題を修正しました。スクリプトはエラーが発生した後に終了し、正しい終了コードを返すようになりました。
+ Maxerror は大文字と小文字は区別しなくなりました。

新
+ ODBC 2.x ドライバーのサポートを追加しました。



*1.0.4 (2022 年 3 月 19 日)*
+ 環境変数 RSPASSWORD のサポートを追加しました。Amazon Redshift に接続するためのパスワードを設定しました。例えば、`export RSPASSWORD=TestPassw0rd`。



*1.0.3 (2021 年 12 月 8 日)*

バグ修正
+ Windows OS でデータベースの切り替えに `\c` または `\logon` を使用しているときのダイアログポップアップを修正しました。
+ SSL 情報のチェック時におけるクラッシュを修正しました。



## Amazon Redshift RSQL の以前のバージョン
<a name="rsql-query-tool-changelog-legacy-versions"></a>

お使いのオペレーティングシステムに基づいて、必要な Amazon Redshift RSQL のバージョンをダウンロードするためのリンクのいずれかを選択してください。

**Linux 64 ビット RPM**
+ [RSQL バージョン 1.1.1](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.1/AmazonRedshiftRsql-1.1.1.rhel.x86_64.rpm)
+ [RSQL バージョン 1.1.0](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.0/AmazonRedshiftRsql-1.1.0.rhel.x86_64.rpm)
+ [RSQL バージョン 1.0.8](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.8/AmazonRedshiftRsql-1.0.8.x86_64.rpm)
+ [RSQL バージョン 1.0.7](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.7/AmazonRedshiftRsql-1.0.7.x86_64.rpm)
+ [RSQL バージョン 1.0.6](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.6/AmazonRedshiftRsql-1.0.6.x86_64.rpm)
+ [RSQL バージョン 1.0.5](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.5/AmazonRedshiftRsql-1.0.5-1.x86_64.rpm)
+ [RSQL バージョン 1.0.4](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.4/AmazonRedshiftRsql-1.0.4-1.x86_64.rpm)
+ [RSQL バージョン 1.0.3](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.3/AmazonRedshiftRsql-1.0.3-1.x86_64.rpm) 
+ [RSQL バージョン 1.0.1](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.1/AmazonRedshiftRsql-1.0.1-1.x86_64.rpm) 

**Mac OS 64 ビット DMG/PKG**
+ [RSQL バージョン 1.1.1](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.1/AmazonRedshiftRsql-1.1.1.universal.pkg)
+ [RSQL バージョン 1.1.0](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.0/AmazonRedshiftRsql-1.1.0.universal.pkg)
+ [RSQL バージョン 1.0.8](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.8/AmazonRedshiftRsql-1.0.8.x86_64.dmg)
+ [RSQL バージョン 1.0.7](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.7/AmazonRedshiftRsql-1.0.7.x86_64.dmg)
+ [RSQL バージョン 1.0.6](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.6/AmazonRedshiftRsql-1.0.6.x86_64.dmg)
+ [RSQL バージョン 1.0.5](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.5/AmazonRedshiftRsql-1.0.5.dmg) 
+ [RSQL バージョン 1.0.4](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.4/AmazonRedshiftRsql-1.0.4.dmg) 
+ [RSQL バージョン 1.0.3](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.3/AmazonRedshiftRsql-1.0.3.dmg) 
+ [RSQL バージョン 1.0.1](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.1/AmazonRedshiftRsql-1.0.1.dmg) 

**Windows 64 ビット MSI**
+ [RSQL バージョン 1.1.1](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.1/AmazonRedshiftRsql-1.1.1.x86_64.msi)
+ [RSQL バージョン 1.1.0](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.0/AmazonRedshiftRsql-1.1.0.x86_64.msi)
+ [RSQL バージョン 1.0.8](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.8/AmazonRedshiftRsql-1.0.8.x86_64.msi)
+ [RSQL バージョン 1.0.7](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.7/AmazonRedshiftRsql-1.0.7.x86_64.msi)
+ [RSQL バージョン 1.0.6](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.6/AmazonRedshiftRsql-1.0.6.x86_64.msi)
+ [RSQL バージョン 1.0.5](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.5/AmazonRedshiftRsql-1.0.5.msi)
+ [RSQL バージョン 1.0.4](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.4/AmazonRedshiftRsql-1.0.4.msi)
+ [RSQL バージョン 1.0.3](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.3/AmazonRedshiftRsql-1.0.3.msi) 
+ [RSQL バージョン 1.0.1](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.1/AmazonRedshiftRsql-1.0.1.msi) 

# Amazon Redshift RSQL を使用してクラスターに接続する
<a name="rsql-query-tool-starting-tool-connection"></a>

Amazon Redshift では、クラスターに接続し、RSQL を使用してクラスターを操作できます。これは、データをクエリし、データベースオブジェクトを作成し、Amazon Redshift クラスターを管理するための安全な方法を提供するコマンドラインツールです。以下のセクションでは、データソース名 (DSN) の有無にかかわらず RSQL を使用してクラスターへの接続を確立する手順について説明します。

## DSN なしで接続する
<a name="rsql-query-tool-starting-tool-connection-dsn-less-example"></a>

1. Amazon Redshift コンソールで、接続するクラスターを選択し、エンドポイント、データベース、ポートを書き留めます。

1. コマンドプロンプトで、コマンドラインパラメータを使用して、接続情報を指定します。

   ```
   rsql -h <endpoint> -U <username> -d <databasename> -p <port>
   ```

    ここでは、次の条件が適用されます。
   +  *<endpoint>* は前のステップで書き留めた [**Endpoint (エンドポイント)**] です。
   +  *<ユーザーネーム>* は、クラスターに接続する権限を持つユーザーの名前です。
   +  *<databasename>* は前のステップで書き留めた [**Database Name (データベース名)**] です。
   +  *<ポート>* は、前のステップで記録した**ポート**です。*<ポート>* は、オプションのパラメータです。

   以下に例を示します。

   ```
   rsql -h testcluster.example.amazonaws.com -U user1 -d dev -p 5439
   ```

1.  パスワードプロンプトで、*<ユーザーネーム>* ユーザーのパスワードを入力します。

   接続に成功した場合のレスポンスは次のようになります。

   ```
   % rsql -h testcluster.example.com -d dev -U user1 -p 5349
   Password for user user1:
   DSN-less Connected
   DBMS Name: Amazon Redshift
   Driver Name: Amazon Redshift ODBC Driver
   Driver Version: 1.4.27.1000
   Rsql Version: 1.0.1
   Redshift Version: 1.0.29306
   Type "help" for help.
   
   (testcluster) user1@dev=#
   ```

接続するコマンドは、Linux、Mac OS、および Windows で同じパラメータを持ちます。

## DSN を使用して接続する
<a name="rsql-query-tool-starting-tool-connection-dsn-example"></a>

RSQL を Amazon Redshift に接続するには、DSN を使用して接続プロパティの組織を簡素化できます。このトピックでは、ODBC ドライバーのインストール手順と DSN プロパティの説明が含まれています。

### パスワードで DSN 接続を使用する
<a name="rsql-query-tool-starting-tool-connection-dsn-example-password"></a>

次に、パスワードを使用した DSN 接続の設定例を示します。Mac OSX のデフォルト`<path to driver>`は`/opt/amazon/redshift/lib/libamazonredshiftodbc.dylib`、Linux のデフォルトは`/opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so`です。

```
[testuser]
Driver=/opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so
SSLMode=verify-ca
Min_TLS=1.2
boolsaschar=0
Host=<server endpoint>
Port=<database port>
Database=<dbname>
UID=<username>
PWD=<password>
sslmode=prefer
```

接続に成功した場合の出力結果は次のようになります。

```
% rsql -D testuser
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306
Type "help" for help.

(testcluster) user1@dev=#
```

### シングルサインオン DSN の使用
<a name="rsql-query-tool-starting-tool-connection-dsn"></a>

シングルサインオン認証用に DSN を設定できます。次に、シングルサインオン SSO を使用する DSN 接続設定の例を示します。

```
[testokta]
Driver=<path to driver>
SSLMode=verify-ca
Min_TLS=1.2
boolsaschar=0
Host=<server endpoint>
clusterid=<cluster id>
region=<region name>
Database=<dbname>
locale=en-US
iam=1
plugin_name=<plugin name>
uid=<okta username>
pwd=<okta password>
idp_host=<idp endpoint>
app_id=<app id>
app_name=<app name>
preferred_role=<role arn>
```

成功した接続からの出力例。

```
% rsql -D testokta 
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306
Type "help" for help.

(testcluster) user1@dev=#
```

次の例は、Azure シングルサインオンを使用する DSN 接続設定の例を示しています。

```
[testazure]
Driver=<path to driver>
SSLMode=verify-ca
Min_TLS=1.2
boolsaschar=0
Host=<server endpoint>
Port=<cluster port>
clusterid=<cluster id>
region=<region name>
Database=<dbname>
locale=en-us
iam=1
plugin_name=<plugin name>
uid=<azure username>
pwd=<azure password>
idp_tenant=<Azure idp tenant uuid>
client_id=<Azure idp client uuid>
client_secret=<Azure idp client secret>
```

### IAM プロファイルで DSN 接続を使用する
<a name="rsql-query-tool-starting-tool-connection-dsn-iam"></a>

設定した IAM プロファイルを使用して Amazon Redshift に接続できます。IAM プロファイルは、`GetClusterCredentials`を呼び出すための権限が必要です。次の例は、使用する DSN プロパティを示しています。`ClusterID`および`Region`のパラメータは、`Host`が`examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com`のように Amazon が提供するエンドポイントではない場合にのみ必要になります。

```
[testiam]
Driver=Default
Host=testcluster.example.com
Database=dev
DbUser=testuser
ClusterID=rsqltestcluster
Region=us-east-1
IAM=1
Profile=default
```

`Profile`キーの値は、AWSCLI 認証情報から選択した名前付きプロファイルです。この例は、`default`という名前のプロファイルの認証情報を示しています。

```
$ cat .aws/credentials
[default]
aws_access_key_id = ASIAIOSFODNN7EXAMPLE 
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```

接続レスポンスは次のとおりです。

```
$ rsql -D testiam
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306
Type "help" for help.

(testcluster) testuser@dev=>
```

### インスタンスプロファイルでの DSN 接続の使用
<a name="rsql-query-tool-starting-tool-connection-dsn-instance"></a>

Amazon EC2 インスタンスプロファイルを使用して Amazon Redshift に接続できます。インスタンスプロファイルには、`GetClusterCredentials`を呼び出すための権限が必要です。使用する DSN プロパティについては、以下の例を参照してください。`ClusterID`および`Region`のパラメータは、`Host`が`examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com`のように Amazon が提供するエンドポイントではない場合にのみ必要になります。

```
[testinstanceprofile]
Driver=Default
Host=testcluster.example.com
Database=dev
DbUser=testuser
ClusterID=rsqltestcluster
Region=us-east-1
IAM=1
Instanceprofile=1
```

接続レスポンスは次のとおりです。

```
$ rsql -D testinstanceprofile
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306
Type "help" for help.

(testcluster) testuser@dev=>
```

### デフォルトの認証情報プロバイダーチェーンで DSN 接続を使用する
<a name="rsql-query-tool-starting-tool-connection-dsn-provider-chain"></a>

デフォルトの認証情報プロバイダーチェーンを使用して接続するには、IAM プロパティのみを指定します。Amazon Redshift RSQL は、「AWS SDK for Java」の「[AWS 認証情報の使用](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html)」で説明されている順序で認証情報の取得を試みます。チェーン内の少なくとも 1 つのプロバイダーが `GetClusterCredentials` のアクセス許可を持っている必要があります。これは、ECS コンテナから接続する場合などに便利です。

```
[iamcredentials]
Driver=Default
Host=testcluster.example.com
Database=dev
DbUser=testuser
ClusterID=rsqltestcluster
Region=us-east-1
IAM=1
```

# Amazon Redshift RSQL メタコマンド
<a name="rsql-query-tool-commands"></a>

Amazon Redshift RSQL メタコマンドは、データベース、または特定のデータベースオブジェクトに関する情報レコードを返します。結果には、さまざまな列とメタデータを含めることができます。その他のコマンドは、特定のアクションを実行します。これらのコマンドの先頭にはバックスラッシュが付きます。

## \$1d[S\$1]
<a name="rsql-query-tool-describe-d"></a>

 ユーザーが作成したローカルテーブル、レギュラービュー、レイトバインディングビュー、マテリアライズドビューを一覧表示します。`\dS `も`\d`と同様に、テーブルとビューを一覧表示しますが、システムオブジェクトは返されたレコードに含まれます。`+`の結果、一覧表示されたすべてのオブジェクトの追加メタデータ列`description`が表示されます。次に、コマンドの結果として返されるサンプルレコードを示します。

```
List of relations
 schema |   name    | type  |  owner  
--------+-----------+-------+---------
 public | category  | table | awsuser
 public | date      | table | awsuser
 public | event     | table | awsuser
 public | listing   | table | awsuser
 public | sales     | table | awsuser
 public | users     | table | awsuser
 public | venue     | table | awsuser
(7 rows)
```

## \$1d[S\$1] 名前
<a name="rsql-query-tool-describe-s-plus-named"></a>

テーブル、ビュー、またはインデックスについて説明します。列の名前と型が含まれます。また、distststyle、バックアップ設定、作成日 (2018 年 10 月以降に作成されたテーブル）、および制約条件を提供します。たとえば、`\dS+ sample`はオブジェクトのプロパティを返します。`S+`を付けると、返されたレコードに含まれる追加の列が表示されます。

```
Table "public.sample"
 Column |            Type             |   Collation    | Nullable | Default Value | Encoding  | DistKey | SortKey
--------+-----------------------------+----------------+----------+---------------+-----------+---------+---------
 col1   | smallint                    |                | NO       |               | none      | t       | 1
 col2   | character(100)              | case_sensitive | YES      |               | none      | f       | 2
 col3   | character varying(100)      | case_sensitive | YES      |               | text32k   | f       | 3
 col4   | timestamp without time zone |                | YES      |               | runlength | f       | 0
 col5   | super                       |                | YES      |               | zstd      | f       | 0
 col6   | bigint                      |                | YES      |               | az64      | f       | 0

Diststyle: KEY
Backup: YES
Created: 2021-07-20 19:47:27.997045
Unique Constraints:
    "sample_pkey" PRIMARY KEY (col1)
    "sample_col2_key" UNIQUE (col2)
Foreign-key constraints:
    "sample_col2_fkey" FOREIGN KEY (col2) REFERENCES lineitem(l_orderkey)
```

テーブルのディストリビューションスタイル、または*ディストスタイル*は、KEY、AUTO、EVEN または ALL のいずれかです。

*バックアップ*は、スナップショットの作成時にテーブルがバックアップされるかどうかを示します。有効な値は `YES` または `NO` です。

*作成*は、テーブルが作成された時刻のタイムスタンプです。2018 年 11 月より前に作成された Amazon Redshift テーブルでは、作成日は使用できません。この日付より前に作成されたテーブルには「なし」と表示されます (使用不可）。

*ユニーク制約*は、テーブルにユニーク制約とプライマリキー制約を一覧表示します。

*外部キー制約*は、テーブルに外部キー制約を一覧表示します。

## \$1dC[\$1] [パターン]
<a name="rsql-query-tool-describe-dc"></a>

キャストを一覧表示します。ソースタイプ、ターゲットタイプ、およびキャストが暗黙的かどうかが含まれます。

次に、`\dC+`からの結果のサブセットを示します。

```
List of casts
         source type         |         target type         |      function       |   implicit?   | description 
-----------------------------+-----------------------------+---------------------+---------------+-------------
 "char"                      | character                   | bpchar              | in assignment | 
 "char"                      | character varying           | text                | in assignment | 
 "char"                      | integer                     | int4                | no            | 
 "char"                      | text                        | text                | yes           | 
 "path"                      | point                       | point               | no            | 
 "path"                      | polygon                     | polygon             | in assignment | 
 abstime                     | date                        | date                | in assignment | 
 abstime                     | integer                     | (binary coercible)  | no            | 
 abstime                     | time without time zone      | time                | in assignment | 
 abstime                     | timestamp with time zone    | timestamptz         | yes           | 
 abstime                     | timestamp without time zone | timestamp           | yes           | 
 bigint                      | bit                         | bit                 | no            | 
 bigint                      | boolean                     | bool                | yes           | 
 bigint                      | character                   | bpchar              | in assignment | 
 bigint                      | character varying           | text                | in assignment | 
 bigint                      | double precision            | float8              | yes           | 
 bigint                      | integer                     | int4                | in assignment | 
 bigint                      | numeric                     | numeric             | yes           | 
 bigint                      | oid                         | oid                 | yes           | 
 bigint                      | real                        | float4              | yes           | 
 bigint                      | regclass                    | oid                 | yes           | 
 bigint                      | regoper                     | oid                 | yes           | 
 bigint                      | regoperator                 | oid                 | yes           | 
 bigint                      | regproc                     | oid                 | yes           | 
 bigint                      | regprocedure                | oid                 | yes           | 
 bigint                      | regtype                     | oid                 | yes           | 
 bigint                      | smallint                    | int2                | in assignment | 
 bigint                      | super                       | int8_partiql        | in assignment |
```

## \$1dd[S] [パターン]
<a name="rsql-query-tool-describe-dds"></a>

他の場所では表示されないオブジェクトの説明が表示されます。

## \$1de
<a name="rsql-query-tool-describe-de"></a>

外部テーブルを一覧表示します。これには、AWS Glue Data Catalog のテーブル、Hive メタストア、Amazon RDS/Aurora MySQL、Amazon RDS/Aurora PostgreSQL、Amazon Redshift のデータ共有テーブルからの連携テーブルが含まれます。

## \$1de 名前
<a name="rsql-query-tool-describe-de-name"></a>

外部テーブルについて説明します。

次のサンプルは、AWS Glue外部テーブルを示しています。

```
# \de spectrum.lineitem
                            Glue External table "spectrum.lineitem"
     Column      | External Type | Redshift Type | Position | Partition Key | Nullable
-----------------+---------------+---------------+----------+---------------+----------
 l_orderkey      | bigint        | bigint        | 1        | 0             |
 l_partkey       | bigint        | bigint        | 2        | 0             |
 l_suppkey       | int           | int           | 3        | 0             |
 l_linenumber    | int           | int           | 4        | 0             |
 l_quantity      | decimal(12,2) | decimal(12,2) | 5        | 0             |
 l_extendedprice | decimal(12,2) | decimal(12,2) | 6        | 0             |
 l_discount      | decimal(12,2) | decimal(12,2) | 7        | 0             |
 l_tax           | decimal(12,2) | decimal(12,2) | 8        | 0             |
 l_returnflag    | char(1)       | char(1)       | 9        | 0             |
 l_linestatus    | char(1)       | char(1)       | 10       | 0             |
 l_shipdate      | date          | date          | 11       | 0             |
 l_commitdate    | date          | date          | 12       | 0             |
 l_receiptdate   | date          | date          | 13       | 0             |
 l_shipinstruct  | char(25)      | char(25)      | 14       | 0             |
 l_shipmode      | char(10)      | char(10)      | 15       | 0             |
 l_comment       | varchar(44)   | varchar(44)   | 16       | 0             |

Location: s3://redshiftbucket/kfhose2019/12/31
Input_format: org.apache.hadoop.mapred.TextInputFormat
Output_format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
Serialization_lib: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Serde_parameters: {"field.delim":"|","serialization.format":"|"}
Parameters: {"EXTERNAL":"TRUE","numRows":"178196721475","transient_lastDdlTime":"1577771873"}
```

Hive メタストアテーブル。

```
# \de emr.lineitem
                     Hive Metastore External Table "emr.lineitem"
     Column      | External Type | Redshift Type | Position | Partition Key | Nullable
-----------------+---------------+---------------+----------+---------------+----------
 l_orderkey      | bigint        | bigint        | 1        | 0             |
 l_partkey       | bigint        | bigint        | 2        | 0             |
 l_suppkey       | int           | int           | 3        | 0             |
 l_linenumber    | int           | int           | 4        | 0             |
 l_quantity      | decimal(12,2) | decimal(12,2) | 5        | 0             |
 l_extendedprice | decimal(12,2) | decimal(12,2) | 6        | 0             |
 l_discount      | decimal(12,2) | decimal(12,2) | 7        | 0             |
 l_tax           | decimal(12,2) | decimal(12,2) | 8        | 0             |
 l_returnflag    | char(1)       | char(1)       | 9        | 0             |
 l_linestatus    | char(1)       | char(1)       | 10       | 0             |
 l_commitdate    | date          | date          | 11       | 0             |
 l_receiptdate   | date          | date          | 12       | 0             |
 l_shipinstruct  | char(25)      | char(25)      | 13       | 0             |
 l_shipmode      | char(10)      | char(10)      | 14       | 0             |
 l_comment       | varchar(44)   | varchar(44)   | 15       | 0             |
 l_shipdate      | date          | date          | 16       | 1             |

Location: s3://redshiftbucket/cetas
Input_format: org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat
Output_format: org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat
Serialization_lib: org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe
Serde_parameters: {"serialization.format":"1"}
Parameters: {"EXTERNAL":"TRUE", "numRows":"4307207", "transient_lastDdlTime":"1626990007"}
```

PostgreSQL 外部テーブル。

```
# \de pgrsql.alltypes
                                Postgres Federated Table "pgrsql.alltypes"
 Column |        External Type        |        Redshift Type        | Position | Partition Key | Nullable
--------+-----------------------------+-----------------------------+----------+---------------+----------
 col1   | bigint                      | bigint                      | 1        | 0             |
 col2   | bigint                      | bigint                      | 2        | 0             |
 col5   | boolean                     | boolean                     | 3        | 0             |
 col6   | box                         | varchar(65535)              | 4        | 0             |
 col7   | bytea                       | varchar(65535)              | 5        | 0             |
 col8   | character(10)               | character(10)               | 6        | 0             |
 col9   | character varying(10)       | character varying(10)       | 7        | 0             |
 col10  | cidr                        | varchar(65535)              | 8        | 0             |
 col11  | circle                      | varchar(65535)              | 9        | 0             |
 col12  | date                        | date                        | 10       | 0             |
 col13  | double precision            | double precision            | 11       | 0             |
 col14  | inet                        | varchar(65535)              | 12       | 0             |
 col15  | integer                     | integer                     | 13       | 0             |
 col16  | interval                    | varchar(65535)              | 14       | 0             |
 col17  | json                        | varchar(65535)              | 15       | 0             |
 col18  | jsonb                       | varchar(65535)              | 16       | 0             |
 col19  | line                        | varchar(65535)              | 17       | 0             |
 col20  | lseg                        | varchar(65535)              | 18       | 0             |
 col21  | macaddr                     | varchar(65535)              | 19       | 0             |
 col22  | macaddr8                    | varchar(65535)              | 20       | 0             |
 col23  | money                       | varchar(65535)              | 21       | 0             |
 col24  | numeric                     | numeric(38,20)              | 22       | 0             |
 col25  | path                        | varchar(65535)              | 23       | 0             |
 col26  | pg_lsn                      | varchar(65535)              | 24       | 0             |
 col28  | point                       | varchar(65535)              | 25       | 0             |
 col29  | polygon                     | varchar(65535)              | 26       | 0             |
 col30  | real                        | real                        | 27       | 0             |
 col31  | smallint                    | smallint                    | 28       | 0             |
 col32  | smallint                    | smallint                    | 29       | 0             |
 col33  | integer                     | integer                     | 30       | 0             |
 col34  | text                        | varchar(65535)              | 31       | 0             |
 col35  | time without time zone      | varchar(65535)              | 32       | 0             |
 col36  | time with time zone         | varchar(65535)              | 33       | 0             |
 col37  | timestamp without time zone | timestamp without time zone | 34       | 0             |
 col38  | timestamp with time zone    | timestamp with time zone    | 35       | 0             |
 col39  | tsquery                     | varchar(65535)              | 36       | 0             |
 col40  | tsvector                    | varchar(65535)              | 37       | 0             |
 col41  | txid_snapshot               | varchar(65535)              | 38       | 0             |
 col42  | uuid                        | varchar(65535)              | 39       | 0             |
 col43  | xml                         | varchar(65535)              | 40       | 0             |
```

## \$1df[anptw][S\$1] [パターン]
<a name="rsql-query-tool-df"></a>

 さまざまなタイプの関数を一覧表示します。例えば、コマンド`\df`は関数のリストを返します。結果には、名前、返されたデータタイプ、アクセス権、追加のメタデータなどのプロパティが含まれます。関数の種類には、トリガー、ストアドプロシージャ、window 関数、およびその他のものがあります。例えば`S+`をコマンド`\dfantS+`に追加すると、`owner`、`security`、および`access privileges`などのメタデータ列が追加されます。

## \$1dL[S\$1] [パターン]
<a name="rsql-query-tool-describe-dl"></a>

 データベースに関連付けられている手続き言語に関するデータを一覧表示します。情報には、plpgsql などの名前と、信頼できるかどうかを含んだ追加のメタデータ、アクセス権限、および説明が含まれます。サンプル呼び出しは、例えば`\dLS+`であり、言語とそのプロパティが一覧表示されます。`S+`をコマンドに追加すると、`call handler`および`access privileges`などのメタデータ列が追加されます。

サンプル結果:

```
List of languages
   name    | trusted | internal language |      call handler       |                         validator                          | access privileges |          description           
-----------+---------+-------------------+-------------------------+------------------------------------------------------------+-------------------+--------------------------------
 c         | f       | t                 | -                       | fmgr_c_validator(oid)                                      |                   | Dynamically-loaded C functions
 exfunc    | f       | f                 | exfunc_call_handler()   | -                                                          | rdsdb=U/rdsdb     | 
 internal  | f       | t                 | -                       | fmgr_internal_validator(oid)                               |                   | Built-in functions
 mlfunc    | f       | f                 | mlfunc_call_handler()   | -                                                          | rdsdb=U/rdsdb     | 
 plpgsql   | t       | f                 | plpgsql_call_handler()  | plpgsql_validator(oid)                                     |                   | 
 plpythonu | f       | f                 | plpython_call_handler() | plpython_compiler(cstring,cstring,cstring,cstring,cstring) | rdsdb=U/rdsdb     | 
 sql       | t       | t                 | -                       | fmgr_sql_validator(oid)                                    | =U/rdsdb          | SQL-language functions
```

## \$1dm[S\$1] [パターン]
<a name="rsql-query-tool-describe-dm"></a>

 マテリアライズドビューを一覧表示します。例えば、`\dmS+`は、マテリアライズドビューとそのプロパティを一覧表示します。`S+`をコマンドに追加すると、メタデータ列が追加されます。

## \$1dn[S\$1] [パターン]
<a name="rsql-query-tool-describe-dn"></a>

 スキーマを一覧表示します。例えば、`S+`を`\dnS+`のコマンドに追加すると、`description`および`access privileges`などの追加のメタデータ列が追加されます。

## \$1dp [パターン]
<a name="rsql-query-tool-describe-dp"></a>

 テーブル、ビューおよびシーケンスのアクセス権限を一覧表示します。

## \$1dt[S\$1] [パターン]
<a name="rsql-query-tool-describe-dt"></a>

 テーブルの一覧表示 例えば、`S+`をコマンド`\dtS+`に追加すると、この場合`description`のようなメタデータ列が追加されます。

## \$1du
<a name="rsql-query-tool-describe-du"></a>

 データベースのユーザーを一覧表示します。名前とスーパーユーザーなどのロール、属性が含まれます。

## \$1dv[S\$1] [パターン]
<a name="rsql-query-tool-describe-dv"></a>

 ビューを一覧表示します。スキーマ、タイプ、および所有者データが含まれます。例えば、`S+`をコマンド`\dvS+`に追加すると、メタデータ列が追加されます。

## \$1H
<a name="rsql-query-tool-describe-h"></a>

 HTML 出力をオンにします。これは、フォーマットされた結果をすばやく返す場合に便利です。例えば、`select * from sales; \H`は、売上表の結果を HTML で返します。結果を表形式に戻すには、`\q`または quiet を使用します。

## \$1i
<a name="rsql-query-tool-describe-i"></a>

 ファイルからコマンドを実行します。例えば、作業ディレクトリに rsql\$1steps.sql があると仮定すると、次のものがファイルのコマンドを実行します。`\i rsql_steps.sql`。

## \$1l[\$1] [パターン]
<a name="rsql-query-tool-describe-l"></a>

 データベースを一覧表示します。所有者、エンコード、および追加情報が含まれます。

## \$1q
<a name="rsql-query-tool-describe-q"></a>

 quit または `\q` コマンドを実行して、データベースセッションからログオフし、RSQL を終了します。

## \$1sv[\$1] ビュー名
<a name="rsql-query-tool-describe-sv-name"></a>

 ビューの定義を表示します。

## \$1timing
<a name="rsql-query-tool-describe-timing"></a>

 例えば、クエリのランタイムが表示されます。

## \$1z [パターン]
<a name="rsql-query-tool-describe-z"></a>

 \$1dpと同じ出力です。

## \$1?
<a name="rsql-query-tool-help"></a>

 ヘルプ情報を表示します。オプションのパラメータにより、表示する項目を指定します。

## \$1EXIT
<a name="rsql-query-tool-flow-control-exit"></a>

 すべてのデータベースセッションからログオフし、Amazon Redshift RSQL を終了します。加えて、オプションの終了コードを指定することも可能です。例えば `\EXIT 15` では、Amazon Redshift の RSQL ターミナルを終了し、その際に終了コードとして 15 を返します。

次の例は、接続からの出力と RSQL からの終了を示しています。

```
% rsql -D testuser
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.34.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306 
Type "help" for help.

(testcluster) user1@dev=# \exit 15

% echo $?
15
```

## \$1EXPORT
<a name="rsql-query-tool-export"></a>

 後続の SQL SELECT ステートメントによって返されたデータベース情報を保存するために RSQL が使用するエクスポートファイルの名前を指定します。

export\$101.sql

```
\export report file='E:\\accounts.out'
\rset rformat off
\rset width 1500
\rset heading "General Title"
\rset titledashes on
select * from td_dwh.accounts;
\export reset
```

コンソール出力

```
Rformat is off.
Target width is 1500.
Heading is set to: General Title
Titledashes is on.
(exported 40 rows)
```

## \$1LOGON
<a name="rsql-query-tool-flow-control-logon"></a>

 データベースに接続します。接続パラメータは、位置指定の構文を使って指定することも、接続文字列として指定することもできます。　

コマンドの構文は次のとおりです。`\logon {[DBNAME|- USERNAME|- HOST|- PORT|- [PASSWORD]] | conninfo}`

`DBNAME` は、接続先に指定するデータベースの名前です。`USERNAME` は、データベースへの接続に使用するユーザー名です。`HOST` のデフォルト値は `localhost` です。`PORT` のデフォルト値は `5439` です。

`\LOGON` コマンドでホスト名を指定した場合、その名前が、追加の `\LOGON` コマンドでのデフォルトのホスト名になります。デフォルトのホスト名を変更するには、追加の `HOST` コマンドで新しく `\LOGON` を指定します。

`user1` に対する `\LOGON` コマンドの出力例を以下に示します。

```
(testcluster) user1@redshiftdb=# \logon dev
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
You are now connected to database "dev" as user "user1".
(testcluster) user1@dev=#
```

*user2*に対する出力例

```
(testcluster) user1@dev=# \logon dev user2 testcluster2.example.com
Password for user user2: 
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
You are now connected to database "dev" as user "user2" on host "testcluster2.example.com" at port "5439".
(testcluster2) user2@dev=#
```

## \$1REMARK
<a name="rsql-query-tool-flow-control-remark"></a>

 これは `\echo` コマンドの拡張です。`\REMARK` は、指定された文字列を出力ストリームに表示します。`\REMARK ` は `\echo` を拡張して、出力を改行する機能を追加したものです。

次の例は、コマンドからの出力例を示しています。

```
(testcluster) user1@dev=# \remark 'hello//world'
hello
world
```

## \$1RSET
<a name="rsql-query-tool-rset"></a>

コマンド `\rset` はコマンドのパラメータと変数を設定します。`\rset` には、インタラクティブモードとバッチモードの両方があります。*-x*、または引数 (*--<arg>* など) といった bash オプションとしてのオプションをサポートしません。

このコマンドは、以下のような変数を設定します。
+ ERRORLEVEL
+ HEADING および RTITLE
+ RFORMAT
+ MAXERROR
+ TITLEDASHES
+ WIDTH

以下の例は、HEADING を指定します。

```
\rset heading "Winter Sales Report"
```

その他の `\rset` 使用方法例については、[Amazon Redshift RSQL 変数](rsql-query-tool-variables.md)トピックに例がいくつか挙げられています。

## \$1RUN
<a name="rsql-query-tool-flow-control-run"></a>

 指定されたファイルに含まれる Amazon Redshift RSQL スクリプトを実行します。`\RUN`は`\i`コマンドを拡張して、ファイル内のヘッダー行をスキップするオプションを追加します。

ファイル名にカンマ、セミコロン、またはスペースが含まれている場合は、それを一重引用符で囲みます。また、ファイル名の後に続くテキストは、引用符で囲まれます。UNIX では、ファイル名の大文字と小文字が区別されます。Windows では、ファイル名の大文字と小文字は区別されません。

次の例は、コマンドからの出力例を示しています。

```
(testcluster) user1@dev=# \! cat test.sql
select count(*) as lineitem_cnt from lineitem;
select count(*) as customer_cnt from customer;
select count(*) as orders_cnt from orders;



(testcluster) user1@dev=# \run file=test.sql
 lineitem_cnt
--------------
      4307207
(1 row)

 customer_cnt
--------------
     37796166
(1 row)

 orders_cnt
------------
          0
(1 row)


(testcluster) user1@dev=# \run file=test.sql skip=2
2 records skipped in RUN file.
 orders_cnt
------------
          0
(1 row)
```

## \$1OS
<a name="rsql-query-tool-flow-control-os"></a>

 `\!` コマンドのエイリアスです。`\OS` は、パラメータとして渡されたオペレーションシステムコマンドを実行します。OS コマンドの実行後、コントロールは Amazon Redshift RSQL に戻されます。例えば、次のコマンドを実行して、現在のシステム日付時刻を表示し、RSQL ターミナルに戻ることができます。`\os date`。

```
(testcluster) user1@dev=# \os date
Tue Sep 7 20:47:54 UTC 2021
```

## \$1GOTO
<a name="rsql-query-tool-flow-control-goto"></a>

 Amazon Redshift RSQL 用の新しいコマンドです。`\GOTO`は、介在するコマンドをすべてスキップし、指定した`\LABEL`で処理を再開します。`\LABEL`は前方リファレンスでなければなりません。辞書的に`\GOTO`の前にある`\LABEL`にはジャンプできません。

出力例を次に示します。

```
(testcluster) user1@dev=# \! cat test.sql
select count(*) as cnt from lineitem \gset
select :cnt as cnt;
\if :cnt > 100
    \goto LABELB
\endif

\label LABELA
\remark 'this is label LABELA'
\label LABELB
\remark 'this is label LABELB'


(testcluster) user1@dev=# \i test.sql
   cnt
---------
 4307207
(1 row)

\label LABELA ignored
\label LABELB processed
this is label LABELB
```

## \$1LABEL
<a name="rsql-query-tool-flow-control-label"></a>

 Amazon Redshift RSQL 用の新しいコマンドです。`\LABEL`は、`\GOTO`コマンドのターゲットとして、プログラムを実行するためのエントリーポイントを確立します。

次の例は、コマンドからの出力例を示しています。

```
(testcluster) user1@dev=# \! cat test.sql
select count(*) from lineitem limit 5;
\goto LABELB
\remark "this step was skipped by goto label";
\label LABELA
\remark 'this is label LABELA'
\label LABELB
\remark 'this is label LABELB'



(testcluster) user1@dev=# \i testgoto.sql
  count
 4307193
(1 row)

\label LABELA ignored
\label LABELB processed
this is label LABELB
```

## \$1IF (\$1ELSEIF, \$1ELSE, \$1ENDIF)
<a name="rsql-query-tool-flow-control-if"></a>

 `\IF`、およびそれと関連するコマンドは、入力スクリプトの一部を条件付きで実行します。PSQL`\if`(`\elif`、`\else`、`\endif`) コマンドの拡張機能です。`\IF`と`\ELSEIF`は、`AND`、`OR`、`NOT`の条件を含むブール表現をサポートします。

次の例は、コマンドからの出力例を示しています。

```
(testcluster) user1@dev=# \! cat test.sql
SELECT query FROM stv_inflight LIMIT 1 \gset
select :query as query;
\if :query > 1000000
    \remark 'Query id is greater than 1000000'
\elseif :query = 1000000
    \remark 'Query id is equal than 1000000'
\else
    \remark 'Query id is less than 1000000'
\endif


(testcluster) user1@dev=# \i test.sql 
 query
--------
 994803
(1 row)
 
Query id is less than 1000000
```

ブランチロジックで `ERRORCODE` を使用する。

```
\if :'ERRORCODE' = '00000'
    \remark 'The statement was executed without error'
\else
    \remark :LAST_ERROR_MESSAGE
\endif
```

`\IF` ブロックで `\GOTO` を使用し、コードの実行方法を制御します。

# Amazon Redshift RSQL 変数
<a name="rsql-query-tool-variables"></a>

 キーワードには、RSQL の変数として機能するものがあります。それぞれを特定の値に設定するか、値を再設定することができます。ほとんどは `\rset` で設定されており、これにはインタラクティブモードとバッチモードがあります。コマンドは、小文字または大文字で定義できます。

## ACTIVITYCOUNT
<a name="rsql-query-tool-activitycount"></a>

 最後に送信されたリクエストの影響を受けた行の数を示します。データ返すリクエストの場合、これはデータベースから RSQL に返された行の数です。この値は 0 または正の整数です。最大値は 18,446,744,073,709,551,615 です。

 特別に処理された変数 `ACTIVITYCOUNT` は変数 `ROW_COUNT` に似ています。ただし、`ROW_COUNT`はコマンド完了時に `SELECT`、`COPY`、または `UNLOAD` について影響を受けた行の数をクライアントアプリケーションに報告しませんが、`ACTIVITYCOUNT` は報告します。

activitycount\$101.sql:

```
select viewname, schemaname
from pg_views
where schemaname = 'not_existing_schema';
\if :ACTIVITYCOUNT = 0
\remark 'views do not exist'
\endif
```

コンソール出力:

```
viewname | schemaname
----------+------------
(0 rows)

views do not exist
```

## ERRORLEVEL
<a name="rsql-query-tool-describe-rset-errorlevel"></a>

エラーに重要度レベルを割り当てます。この重大度を使用して、アクションの方針を決定します。`ERRORLEVEL` コマンドが使用されていない場合、その値はデフォルトで `ON` になります。

errorlevel\$101.sql:

```
\rset errorlevel 42P01 severity 0

select * from tbl;

select 1 as col;

\echo exit
\quit
```

コンソール出力:

```
Errorlevel is on.
rsql: ERROR: relation "tbl" does not exist
(1 row)

col
1

exit
```

## HEADING および RTITLE
<a name="rsql-query-tool-describe-rset-heading-rtitle"></a>

ユーザーがレポートの上部に表示されるヘッダーを指定できるようにします。`RSET RTITLE` コマンドによって指定されたヘッダーには、クライアントコンピュータの現在のシステム日付が自動的に含められます。

rset\$1heading\$1rtitle\$102.rsql の内容:

```
\remark Starting...
\rset rtitle "Marketing Department||Confidential//Third Quarter//Chicago"
\rset width 70
\rset rformat on
select * from rsql_test.tbl_currency order by id limit 2;
\exit
\remark Finishing...
```

コンソール出力:

```
Starting...
Rtitle is set to: &DATE||Marketing Department||Confidential//Third Quarter//Chicago (Changes will take effect after RFORMAT is
switched ON)
Target width is 70.
Rformat is on.
09/11/20       Marketing       Department Confidential
                  Third Quarter
                     Chicago
id  | bankid  | name |      start_date
100 |       1 | USD | 2020-09-11 10:51:39.106905
110 |       1 | EUR | 2020-09-11 10:51:39.106905
(2 rows)

Press any key to continue . . .
```

## MAXERROR
<a name="rsql-query-tool-describe-rset-maxerror"></a>

最大エラー重大度レベルを指定します。このレベルを超えると、RSQL がジョブ処理を終了します。リターンコードは、RSQL が各ジョブまたはタスクの完了後にクライアントオペレーティングシステムに返す整数値です。リターンコードの値は、ジョブまたはタスクの完了ステータスを示します。指定された `maxerror` 値を超えるエラー重大度レベルを生成するステートメントがスクリプトに含まれている場合、RSQL はただちに終了します。従って、エラー重大度レベル 8 で RSQL を終了させるには、`RSET MAXERROR 7`を使用します。

maxerror\$101.sql の内容:

```
\rset maxerror 0
                        
select 1 as col;

\quit
```

コンソール出力:

```
Maxerror is default.
(1 row)

col
1
```

## RFORMAT
<a name="rsql-query-tool-describe-rset-heading-rformat"></a>

ユーザーがフォーマットコマンドの設定を適用するかどうかを指定できるようにします。

rset\$1rformat.rsql の内容:

```
\remark Starting...
\pset border 2
\pset format wrapped
\pset expanded on
\pset title 'Great Title'
select * from rsql_test.tbl_long where id = 500;
\rset rformat
select * from rsql_test.tbl_long where id = 500;
\rset rformat off
select * from rsql_test.tbl_long where id = 500;
\rset rformat on
select * from rsql_test.tbl_long where id = 500;
\exit
\remark Finishing...
```

コンソール出力:

```
Starting...
Border style is 2. (Changes will take effect after RFORMAT is switched ON)
Output format is wrapped. (Changes will take effect after RFORMAT is switched ON)
Expanded display is on. (Changes will take effect after RFORMAT is switched ON)
Title is "Great Title". (Changes will take effect after RFORMAT is switched ON)
id  |                                                             long_string
500 | In general, the higher the number the more borders and lines the tables will have, but details depend on the particular
format.
(1 row)

Rformat is on.
Great Title
+-[ RECORD 1 ]+----------------------------------------------------------------------------------------------------------------------
-----------+
| id           | 500
|
| long_string | In general, the higher the number the more borders and lines the tables will have, but details depend on the
particular format. |
+-------------+----------------------------------------------------------------------------------------------------------------------
-----------+

Rformat is off.
id  |                                                             long_string
500 | In general, the higher the number the more borders and lines the tables will have, but details depend on the particular format.
(1 row)

Rformat is on.
Great Title
+-[ RECORD 1 ]+----------------------------------------------------------------------------------------------------------------------
-----------+
| id           | 500
|
| long_string | In general, the higher the number the more borders and lines the tables will have, but details depend on the
particular format. |
+-------------+----------------------------------------------------------------------------------------------------------------------
-----------+
Press any key to continue . . .
```

## ROW\$1COUNT
<a name="rsql-query-tool-describe-rset-row_count"></a>

前回のクエリの影響を受けたレコードの数を取得します。以下のコードフラグメントにあるように、これは結果をチェックするために使用されるのが一般的です。

```
SET result = ROW_COUNT;

IF result = 0
...
```

## TITLEDASHES
<a name="rsql-query-tool-describe-rset-heading-titledashes"></a>

このコントロールは、ユーザーが SQL ステートメントに返される列データの上にダッシュ文字のラインを出力するかどうかを指定できるようにします。

例:

```
\rset titledashes on
select dept_no, emp_no, salary from rsql_test.EMPLOYEE
where dept_no = 100;
\rset titledashes off
select dept_no, emp_no, salary from rsql_test.EMPLOYEE
where dept_no = 100;
```

コンソール出力:

```
dept_no      emp_no          salary
----------- ----------- --------------------
100         1000346        1300.00
100         1000245        5000.00
100         1000262        2450.00

dept_no     emp_no         salary
100         1000346        1300.00
100         1000245        5000.00
100         1000262        2450.00
```

## WIDTH
<a name="rsql-query-tool-describe-rset-heading-width"></a>

出力形式を折り返しに設定し、レポート内の各行のターゲット幅を指定します。パラメータを指定しない場合は、形式とターゲット幅両方の現在の設定を返します。

rset\$1width\$101.rsql の内容:

```
\echo Starting...
\rset width
\rset width 50
\rset width
\quit
\echo Finishing...
```

コンソール出力:

```
Starting...
Target width is 75.
Target width is 50.
Target width is 50.
Press any key to continue . . .
```

パラメータ指定時の例:

```
\echo Starting...
\rset rformat on
\pset format wrapped
select * from rsql_test.tbl_long where id = 500;
\rset width 50
select * from rsql_test.tbl_long where id = 500;
\quit
\echo Finishing...
```

コンソール出力:

```
Starting...
Rformat is on.
Output format is wrapped.
id  |                                          long_string
500 | In general, the higher the number the more borders and lines the ta.
    |.bles will have, but details depend on the particular format.
(1 row)

Target width is 50.
id  |                                          long_string
500 | In general, the higher the number the more.
    |. borders and lines the tables will have, b.
    |.ut details depend on the particular format.
    |..
(1 row)
Press any key to continue . . .
```

# Amazon Redshift RSQL エラーコード
<a name="rsql-query-tool-error-codes"></a>

成功メッセージ、警告、例外:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/rsql-query-tool-error-codes.html)

データ例外:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/rsql-query-tool-error-codes.html)

整合性制約違反:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/rsql-query-tool-error-codes.html)

# Amazon Redshift RSQL 環境変数
<a name="rsql-query-tool-environment-variables"></a>

 Amazon Redshift RSQL では、環境変数を使用してデフォルトのパラメータ値を選択できます。

## RSPASSWORD
<a name="rsql-query-tool-rspassword"></a>

**重要**  
一部のオペレーティングシステムでは管理者以外のユーザーがプロセスの環境変数を参照できるため、セキュリティ上の理由からこの環境変数を使用することは推奨されません。

 Amazon Redshift RSQL が Amazon Redshift に接続する場合に使用するパスワードを設定します。この環境変数を設定するには、Amazon Redshift RSQL 1.0.4 以降がインストールされている必要があります。

 RSQL では、RSPASSWORD が設定されている場合、RSPASSWORD を優先します。RSPASSWORD が設定されておらず、DSN を使用して接続する場合、RSQL は DSN ファイルのパラメータからパスワードを取得します。最終的に、RSPASSWORD が設定されておらず、DSN も使用しない場合、RSQL によって接続が試行された後、パスワードプロンプトが表示されます。

RSPASSWORD の設定例を次に示します。

```
export RSPASSWORD=TestPassw0rd
```

# 認証プロファイルを使用して Amazon Redshift に接続する
<a name="connecting-with-authentication-profiles"></a>

Amazon Redshift への接続が多数存在する場合には、すべての接続の設定を管理することが困難な場合があります。多くの場合、各 JDBC 接続または ODBC 接続は、専用の設定オプションを使用しています。認証プロファイルを使用すると、接続オプションをまとめて保存しておくことができます。これにより、ユーザーは接続に使用するプロファイルを選択でき、個々のオプションの設定を管理する必要がなくなります。プロファイルは、さまざまなシナリオやユーザータイプに適用できます。

認証プロファイルが作成されていれば、ユーザーはすぐに使用できるプロファイルを接続文字列に追加できます。これにより、各ロールとユースケースに適した設定で、Amazon Redshift に接続することが可能になります。

Amazon Redshift API の詳細については、「[CreateAuthenticationProfile](https://docs.aws.amazon.com/redshift/latest/APIReference/redshift-api.pdf#API_CreateAuthenticationProfile)」を参照してください。

# 認証プロファイルの作成
<a name="connecting-with-authentication-profiles-creating"></a>

AWS CLI から `create-authentication-profile` コマンドを使用して、認証プロファイルを作成します。これには、既存の Amazon Redshift クラスターと既存のデータベースがあることが前提です。ユーザーの認証情報には、Amazon Redshift データベースに接続するアクセス許可と、認証プロファイルを取得する権限が必要です。設定オプションは JSON 文字列として指定するか、JSON 文字列を含むファイルの参照を通じて提供します。

```
create-authentication-profile --authentication-profile-name<value: String> --authentication-profile-content<value: String>
```

 次の例では、`ExampleProfileName`という名前のプロファイルを作成します。ここでは、クラスター名やその他のオプション設定を定義するキーと値を、JSON 文字列として追加します。

```
create-authentication-profile --authentication-profile-name "ExampleProfileName" --authentication-profile-content "{\"AllowDBUserOverride\":\"1\",\"Client_ID\":\"ExampleClientID\",\"App_ID\":\"ExampleAppID\",\"AutoCreate\":false,\"enableFetchRingBuffer\":true,\"databaseMetadataCurrentDbOnly\":true}"
}
```

 このコマンドは、JSON で指定した設定でプロファイルを作成します。次の結果が表示され、プロファイルが作成されたことを示します。

 `{"AuthenticationProfileName": "ExampleProfileName", "AuthenticationProfileContent": "{\"AllowDBUserOverride\":\"1\",\"Client_ID\":\"ExampleClientID\",\"App_ID\":\"ExampleAppID\",\"AutoCreate\":false,\"enableFetchRingBuffer\":true,\"databaseMetadataCurrentDbOnly\":true}" } ` 

## 認証プロファイルの作成に関する制限事項とクォータ
<a name="connecting-with-authentication-profiles-limitations"></a>

各カスタマーには、認証プロファイルのクォータが 10 個あります。

認証プロファイルでは、特定のエラーが発生することがあります。例えば、既存の名前で新しいプロファイルを作成した場合や、プロファイルのクォータを超えた場合などに発生します。詳細については、「[CreateAuthenticationProfile](https://docs.aws.amazon.com/redshift/latest/APIReference/redshift-api.pdf#API_CreateAuthenticationProfile)」を参照してください。

認証プロファイルストアには、JDBC、ODBC、および Python での接続文字列のための、特定のオプションキーと値を保存することはできません。
+ `AccessKeyID`
+ `access_key_id`
+ `SecretAccessKey`
+ `secret_access_key_id`
+ `PWD`
+ `Password`
+ `password`

JDBC または ODBC 接続文字列の場合、キーまたは値 `AuthProfile` をプロファイルストアに保存することはできません() Python 接続の場合、`auth_profile`を保存することはできません。

認証プロファイルは Amazon DynamoDB に保存され、AWSにより管理されます。

# 認証プロファイルを使用した接続
<a name="connecting-with-authentication-profiles-using"></a>

作成した後の認証プロファイルには、JDBC バージョン 2.0 の `AuthProfile` 用の接続オプションとして、プロファイル名を含めることができます。この接続オプションは、保存された設定を取得するために使用します。

```
jdbc:redshift:iam://endpoint:port/database?AuthProfile=<Profile-Name>&AccessKeyID=<Caller-Access-Key>&SecretAccessKey=<Caller-Secret-Key>
```

JDBC URL 文字列の例を次に示します。

```
jdbc:redshift:iam://examplecluster:us-west-2/dev?AuthProfile="ExampleProfile"&AccessKeyID="AKIAIOSFODNN7EXAMPLE"&SecretAccessKey="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
```

JDBC URL の中で、`AccessKeyID`および `SecretAccessKey` の両方を認証プロファイル名とともに指定します。

また、設定オプションをセミコロン区切り文字で区切ることもできます。例えば、ログ記録のオプションが含まれている次の例のようになります。

```
jdbc:redshift:iam://my_redshift_end_point:5439/dev?LogLevel=6;LogPath=/tmp;AuthProfile=my_profile;AccessKeyID="AKIAIOSFODNN7EXAMPLE";SecretAccessKey="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
```

**注記**  
 認証プロファイルには機密情報を含めないでください。例えば、`AccessKeyID` または `SecretAccessKey` 値は、認証プロファイルには保存しないようにします。認証プロファイルストアには、シークレットキーの格納を禁止するルールがあります。機密情報に関連付けられたキーと値を格納しようとすると、エラーが発生します。

# 認証プロファイルの取得
<a name="connecting-with-authentication-profiles-getting"></a>

既存の認証プロファイルを一覧表示するには、次のコマンドを実行します。

```
describe-authentication-profiles --authentication-profile-name <value: String>
```

2 つのプロファイルが取得された場合の例を以下に示します。プロファイル名を指定しない場合、すべてのプロファイルが返されます。

`{ "AuthenticationProfiles": [ { "AuthenticationProfileName": "testProfile1", "AuthenticationProfileContent": "{\"AllowDBUserOverride\":\"1\",\"Client_ID\":\"ExampleClientID\",\"App_ID\":\"ExampleAppID\",\"AutoCreate\":false,\"enableFetchRingBuffer\":true,\"databaseMetadataCurrentDbOnly\":true}" }, { "AuthenticationProfileName": "testProfile2", "AuthenticationProfileContent": "{\"AllowDBUserOverride\":\"1\",\"Client_ID\":\"ExampleClientID\",\"App_ID\":\"ExampleAppID\",\"AutoCreate\":false,\"enableFetchRingBuffer\":true,\"databaseMetadataCurrentDbOnly\":true}" } ] } `

# Amazon Redshift での接続の問題のトラブルシューティング
<a name="troubleshooting-connections"></a>

 SQL クライアントツールからクラスターへの接続で問題が発生した場合は、問題を絞り込むために確認できるいくつかの点があります。SSL またはサーバー証明書を使用している場合、接続の問題をトラブルシューティングしているときにまずこの複雑さを排除します。その後、解決策を見つけたらもう一度これを追加します。詳細については、「[接続のセキュリティオプションを設定する](connecting-ssl-support.md)」を参照してください。

アプリケーションに影響を与える可能性のある Amazon Redshift 機能の動作の変更については、「[Amazon Redshift の動作の変更](behavior-changes.md)」を参照してください。

**重要**  
Amazon Redshift は、SSL 証明書の管理方法を変更しました。SSL 接続で問題が発生した場合は、現在の信頼ルート CA 証明書を更新する必要があります。詳細については、「[SSL 接続用 ACM 証明書への移行](connecting-transitioning-to-acm-certs.md)」を参照してください。

 次のセクションに、接続の問題のサンプルエラーメッセージと考えられる解決策を示します。SQL クライアントツールによってエラーメッセージが異なるため、このリストは完全ではありませんが、問題のトラブルシューティングに適した開始点です。

## Amazon EC2 以外からの接続と、ファイアウォールのタイムアウトの問題
<a name="connecting-firewall-guidance"></a>



 COPY コマンドなどの長いクエリを実行すると、データベースへのクライアント接続がハングまたはタイムアウトしているように見えます。この場合、Amazon Redshift コンソールにはクエリが完了したと表示されますが、クライアントツール自体はまだクエリを実行しているように見えることがあります。接続がいつ停止したかに応じて、クエリの結果がないか、不完全になる可能性があります。

### 考えられる解決策
<a name="connecting-firewall-guidance.Solutions"></a>

この問題は、Amazon EC2 インスタンス以外のマシンから Amazon Redshift に接続するときに発生します。この場合、アイドル状態の接続は、一定期間非アクティブになった後、ファイアウォールなどの中間ネットワークコンポーネントによって終了します。このような動作は、Virtual Private Network (VPN) やローカルネットワークからログインした場合によく発生します。

このようなタイムアウトを回避するために以下の変更を行うことを推奨します。
+ クライアントシステムで TCP/IP タイムアウト値を大きく設定します。この変更は、クラスターへの接続に使用しているコンピュータで行います。クライアントやネットワークに対してタイムアウト期間を調整する必要があります。詳細については、「[TCP/IP タイムアウト設定を変更する](#connecting-firewall-guidance.change-tcpip-settings)」を参照してください。
+ 必要に応じて、DSN レベルでキープアライブの動作を設定します。詳細については、「[DSN のタイムアウト設定を変更する](#connecting-firewall-guidance.change-dsn-settings)」を参照してください。

### TCP/IP タイムアウト設定を変更する
<a name="connecting-firewall-guidance.change-tcpip-settings"></a>

TCP/IP タイムアウト設定を変更するには、クラスターへの接続に使用するオペレーティングシステムに応じて、タイムアウト設定を設定します。
+ Linux — クライアントが Linux で動作している場合は、次のコマンドをルートユーザーとして実行し、現在のセッションのタイムアウト設定を変更します。

  ```
  /sbin/sysctl -w net.ipv4.tcp_keepalive_time=200 net.ipv4.tcp_keepalive_intvl=200 net.ipv4.tcp_keepalive_probes=5
  ```

  設定を保持するには、次の値を使ってファイル `/etc/sysctl.conf` を作成または変更し、システムを再起動します。

  ```
  net.ipv4.tcp_keepalive_time=200
  net.ipv4.tcp_keepalive_intvl=200
  net.ipv4.tcp_keepalive_probes=5
  ```
+ Windows — クライアントが Windows で動作している場合、HKEY\$1LOCAL\$1MACHINE\$1SYSTEM\$1CurrentControlSet\$1Services\$1Tcpip\$1Parameters\$1 にある次のレジストリ設定の値を編集します。
  + KeepAliveTime: 30000
  + KeepAliveInterval: 1000
  + TcpMaxDataRetransmissions: 10

  これらの設定は DWORD のデータの種類を使用します。これらがレジストリパスに存在しない場合、設定を作成し、これらの推奨値を指定できます。Windows レジストリの編集の詳細については、Windows のドキュメントを参照してください。

  これらの値を設定したら、コンピュータを再起動して変更を有効にします。

 
+ Mac — クライアントが Mac で動作している場合は、次のコマンドを実行して現在のセッションのタイムアウト設定を変更します。

  ```
  sudo sysctl net.inet.tcp.keepintvl=200000
  sudo sysctl net.inet.tcp.keepidle=200000
  sudo sysctl net.inet.tcp.keepinit=200000
  sudo sysctl net.inet.tcp.always_keepalive=1
  ```

  設定を保持するには、次の値を使ってファイル `/etc/sysctl.conf` を作成または変更します。

  ```
  net.inet.tcp.keepidle=200000
  net.inet.tcp.keepintvl=200000
  net.inet.tcp.keepinit=200000
  net.inet.tcp.always_keepalive=1
  ```

  コンピュータを再起動し、次のコマンドを実行して値が設定されていることを確認します。

  ```
  sysctl net.inet.tcp.keepidle
  sysctl net.inet.tcp.keepintvl
  sysctl net.inet.tcp.keepinit
  sysctl net.inet.tcp.always_keepalive
  ```

### DSN のタイムアウト設定を変更する
<a name="connecting-firewall-guidance.change-dsn-settings"></a>

必要に応じて、DSN レベルでキープアライブの動作を設定できます。これを行うには、odbc.ini ファイルで以下のパラメータを追加または変更します。

**KeepAlivesCount**  
接続が切断されていると見なされる前に失うことが許容される TCP キープアライブパケットの数。

**KeepAlivesIdle**  
ドライバーが TCP キープアライブパケットを送信する前にアイドル状態である秒数。

**KeepAlivesInterval**  
TCP キープアライブを再送信する間隔の秒数。

これらのパラメータがない場合、または値が 0 である場合、システムは指定されている TCP/IP キープアライブパラメータを使用して DSN キープアライブの動作を決定します。Windows では、`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\`のレジストリに TCP/IP パラメータ があります。Linux および macOS では、TCP/IP のパラメータは sysctl.conf ファイルにあります。

## 接続が拒否または失敗する
<a name="connecting-refusal-failure-issues"></a>

接続が拒否された場合や失敗した場合、次のいずれかと同様のエラーが表示されることがあります。
+ "Failed to establish a connection to *<endpoint>*."
+ "Could not connect to server: Connection timed out。Is the server running on host *'<endpoint>'* and accepting TCP/IP connections on port *'<port>'*?"
+ "Connection refused。Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections."

### 考えられる解決策
<a name="connecting-refusal-failure-issues.Solutions"></a>

通常、接続の確立に失敗したことを示すエラーメッセージが表示された場合は、クラスターにアクセスするためのアクセス許可の問題またはクラスターへのトラフィックネットワークの問題を示しています。

クラスターが属するネットワークの外部にあるクライアントツールからクラスターに接続するには、クラスターのセキュリティグループにインバウンドルールを追加します。ルールの設定は、Amazon Redshift クラスターを仮想プライベートクラウド (VPC) で作成しているかどうかによって異なります。
+ Amazon VPC に基づく仮想プライベートクラウド (VPC) で Amazon Redshift クラスターを作成した場合は、Amazon VPC で クライアント CIDR/IP アドレスを指定するインバウンドルールを VPC セキュリティグループに追加します。クラスターの VPC セキュリティグループの設定とパブリックにアクセス可能なオプションの詳細については、「[VPC での Redshift リソース](managing-clusters-vpc.md)」を参照してください。
+  VPC の外で Amazon Redshift クラスターを作成した場合は、Amazon Redshift のクラスターセキュリティグループにクライアント CIDR/IP アドレスを追加します。クラスターセキュリティグループの設定の詳細については、「[Amazon Redshift セキュリティグループ](security-network-isolation.md#working-with-security-groups)」を参照してください。

Amazon EC2 インスタンスで実行するクライアントツールからクラスターに接続する場合も、インバウンドルールを追加します。この場合は、クラスターセキュリティグループにルールを追加します。ルールでは、クライアントツールの Amazon EC2 インスタンスに関連付けられた Amazon EC2 セキュリティグループを指定する必要があります。

 場合によっては、ファイアウォールなど、クライアントとサーバーの間にレイヤーが存在することがあります。このような場合は、ファイアウォールがクラスター用に設定したポート経由のインバウンド接続を受け入れることを確認します。

## クライアントおよびドライバーに互換性がない
<a name="connecting-architecture-mismatch"></a>

 クライアントとドライバーに互換性がない場合、「指定された DSN にドライバーとアプリケーション間のアーキテクチャの不一致が含まれている」というエラーが表示されることがあります。

### 考えられる解決策
<a name="connecting-architecture-mismatch.Solutions"></a>

 接続を試みてアーキテクチャの不一致に関するエラーが発生する場合、クライアントツールとドライバーに互換性がないことを意味します。これは、システムのアーキテクチャが一致しないために発生します。例えば、32 ビットクライアントツールがあるが、ドライバーの 64 ビットバージョンをインストールした場合にこれが発生することがあります。64 ビットクライアントツールが 32 ビットドライバーを使用できることはありますが、64 ビットドライバーで 32 ビットアプリケーションを使用することはできません。ドライバーとクライアントツールが同じバージョンのシステムアーキテクチャを使用していることを確認します。

## クエリがハングして、クラスターに達しない場合がある
<a name="connecting-drop-issues"></a>

クエリが完了しないという問題に直面します。クエリは実行されますが、SQL クライアント ツールでハングします。クエリは、システムテーブルや Amazon Redshift コンソールなどでクラスターに表示されない場合があります。

### 考えられる解決策
<a name="connecting-drop-issues.Solutions"></a>

 この問題は、パケットドロップが原因で発生する可能性があります。この場合、2 つのインターネットプロトコル (IP) ホスト間のネットワークパスの最大伝送ユニット (MTU) サイズに差があります。MTU サイズにより、ネットワーク接続を介して 1 つのイーサネットフレームで転送できるパケットの最大サイズ (バイト単位) が決まります。AWS では、一部の Amazon EC2 インスタンスタイプが 1500 MTU (Ethernet v2 フレーム) をサポートしており、その他のインスタンスタイプは 9001 MTU (TCP/IP ジャンボフレーム) をサポートしています。

 MTU サイズの違いで発生する問題を防ぐために、次のいずれかを行うことをお勧めします: 
+ ご使用のクラスターが EC2-VPC プラットフォームを使用している場合、`Destination Unreachable` を返すインバウンドカスタム Internet Control Message Protocol (ICMP) ルールによって Amazon VPC セキュリティグループを設定します。このルールは、送信側ホストがネットワークパスに沿って最低の MTU サイズを使用するように指示します。この方法の詳細については、「[セキュリティグループを設定して ICMP の「Destination Unreachable」を許可する](#configure-custom-icmp)」を参照してください。
+ ご使用のクラスターが EC2-Classic プラットフォームを使用しているか、ICMP インバウンドルールを許可できない場合、TCP/IP ジャンボフレームを無効にして、Ethernet v2 フレームを使用します。この方法の詳細については、「[インスタンスの MTU の設定](#set-mtu)」を参照してください。

### セキュリティグループを設定して ICMP の「Destination Unreachable」を許可する
<a name="configure-custom-icmp"></a>

 2 つのホスト間のネットワークで MTU サイズに違いがある場合、ネットワーク設定がパス MTU 検出 (PMTUD) をブロックしないことをまず確認します。PMTUD は、受信側ホストが次の ICMP メッセージで送信側ホストに応答するのを可能にします: `Destination Unreachable: fragmentation needed and DF set (ICMP Type 3, Code 4)` このメッセージは、送信側ホストがネットワークパスに沿って最低の MTU サイズを使用してリクエストを再送信するように指示します。このネゴシエーションがないと、リクエストが大きすぎて受信側ホストが受け取れないため、パケットドロップが発生する可能性があります。この ICMP メッセージの詳細については、*インターネット技術標準化委員会 (IETF)* のウェブサイトから [RFC792](http://tools.ietf.org/html/rfc792) を参照してください。

 この ICMP インバウンドルールを Amazon VPC セキュリティグループのために明示的に設定しない場合、PMTUD はブロックされます。AWS では、セキュリティグループは、インバウンドおよびアウトバウンドトラフィックのルールをインスタンスに指定する仮想ファイアウォールです。Amazon Redshift クラスターセキュリティグループの詳細については、[Amazon Redshift セキュリティグループ](security-network-isolation.md#working-with-security-groups)を参照してください。EC2-VPC プラットフォームを使用するクラスターでは、Amazon Redshift はクラスターへのトラフィックを許可または拒否するために VPC セキュリティグループを使用します。デフォルトでは、セキュリティグループはロックされており、すべてのインバウンドトラフィックを拒否します。EC2-Classic インスタンスまたは EC2-VPC インスタンスのインバウンドルールとアウトバウンドルールを設定する方法については、「Amazon EC2 ユーザーガイド」の「[EC2-Classic と VPC 内のインスタンスの違い](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-classic-platform.html#ec2_classic_platform)」を参照してください。**

 VPC セキュリティグループにルールを追加する方法については、「[VPC セキュリティグループ](managing-vpc-security-groups.md)」を参照してください。このルールに必要な特定の PMTUD 設定の詳細については、「*Amazon EC2 ユーザーガイド*」の「[パス MTU 検出](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/network_mtu.html#path_mtu_discovery)」を参照してください。

### インスタンスの MTU の設定
<a name="set-mtu"></a>

クラスターで EC2-Classic プラットフォームが使用されている場合や、インバウンドトラフィックにカスタム ICMP ルールを許可できない場合があります。このような場合、Amazon Redshift クラスターに接続する EC2 インスタンスのネットワークインターフェイス (NIC) で MTU を 1500 に調整することをお勧めします。この調整によって TCP/IP ジャンボフレームが無効になるため、同じパケットサイズが一貫して接続に使用されるようになります。ただし、このオプションでは、Amazon Redshift への接続だけでなく、インスタンス全体の最大ネットワークスループットを減らすことに注意してください。詳細については、次の手順を参照してください。<a name="set-mtu-win-os"></a>

**Microsoft Windows のオペレーティング システムで MTU を設定する**

クライアントが Microsoft Windows オペレーティングシステムで動作している場合、`netsh`コマンドを使用してイーサネットアダプターの MTU 値を確認し、設定できます。

1. 現在の MTU 値を調べるには、次のコマンドを実行します。

   ```
   netsh interface ipv4 show subinterfaces
   ```

1.  出力で `MTU` アダプタの `Ethernet` の値を確認します。

1. 値が `1500` ではない場合、次のコマンドを実行して設定します。

   ```
   netsh interface ipv4 set subinterface "Ethernet" mtu=1500 store=persistent
   ```

   この値を設定したら、コンピュータを再起動して変更を有効にします。<a name="set-mtu-linux-os"></a>

**Linux オペレーティング システムで MTU を設定する**

 クライアントが Linux オペレーティング システムで動作している場合、`ip`コマンドを使用して MTU 値を確認し、設定できます。

1. 現在の MTU 値を調べるには、次のコマンドを実行します。

   ```
   $ ip link show eth0
   ```

1. 出力で次の `mtu` の値を確認します。

1. 値が `1500` ではない場合、次のコマンドを実行して設定します。

   ```
   $ sudo ip link set dev eth0 mtu 1500
   ```<a name="set-mtu-mac-os"></a>

**Mac オペレーティング システムで MTU を設定する**
+ `How to change the MTU for troubleshooting purposes` については macOS サポートサイトの指示に従ってください。詳細については、[サポートサイト](https://support.apple.com)を検索してください。

## JDBC フェッチサイズパラメータの設定
<a name="jdbc_fetch_size"></a>

デフォルトでは、Redshift JDBC ドライバーはリングバッファを使用してメモリを効率的に管理し、メモリ不足エラーを防止します。フェッチサイズパラメータは、リングバッファが明示的に無効になっている場合にのみ適用できます。詳細については、「[link](https://docs.aws.amazon.com/redshift/latest/mgmt/jdbc20-configuration-options.html#jdbc20-enablefetchringbuffer-option)」を参照してください。この設定では、各バッチで取得される行数を制御するようにフェッチサイズを設定する必要があります。

次の場合は、フェッチサイズパラメータを使用します。
+ 行ベースのバッチ処理をきめ細かく制御する必要がある
+ 従来のフェッチサイズ動作を必要とするレガシーアプリケーションを使用している

リングバッファが無効な場合、デフォルトでは、JDBC ドライバーはクエリに対して一度にすべての結果を収集します。大きな結果セットを返すクエリは、過剰なメモリを消費する可能性があります。一度にすべてではなくバッチで結果セットを取得するには、アプリケーションで JDBC フェッチサイズパラメータを設定します。

**注記**  
フェッチサイズは ODBC ではサポートされません。

最適なパフォーマンスのためには、メモリ不足エラーが発生しない最大の値にフェッチサイズを設定します。フェッチサイズの値を低く設定すると、サーバートリップが増え、それにより実行時間が長くなります。サーバーは、クライアントが結果セット全体を取得するまで、WLM クエリスロットおよび関連メモリを含むリソースを予約します。そうでない場合、クエリはキャンセルされます。フェッチサイズを適切に調整すると、それらのリソースはより迅速に解放され、他のクエリに利用できるようになります。

**注記**  
大きなデータセットを抽出する必要がある場合は、[UNLOAD](https://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html) ステートメントを使用してデータを Amazon S3 に転送することをお勧めします。UNLOAD を使用するときは、コンピューティングノードは並行してデータの転送を高速化します。

JDBC フェッチサイズパラメータの詳細については、PostgreSQL のドキュメントで「[Getting results based on a cursor](https://jdbc.postgresql.org/documentation/query/#getting-results-based-on-a-cursor)」を参照してください。

# Amazon Redshift Data API の使用
<a name="data-api"></a>

Amazon Redshift Data API は、データベースドライバー、接続、ネットワーク設定、データバッファリング、認証情報などを管理する必要がなくなるため、Amazon Redshift データウェアハウスへのアクセスを簡素化します。AWS SDK で Data API オペレーションを使用して SQL ステートメントを実行できます。Data API オペレーションの詳細については、[Amazon Redshift Data API のリファレンス](https://docs.aws.amazon.com/redshift-data/latest/APIReference/)を参照してください。

Data API は、データベースへの永続的な接続を必要としません。代わりに、セキュア HTTP エンドポイントおよび AWS SDK との統合を利用できます。エンドポイントを使用して、接続を管理せずに SQL ステートメントを実行することができます。Data API の呼び出しは非同期です。Data API では、AWS Secrets Manager に格納された認証情報か、一時的なデータベース認証情報を使用できます。どちらの認可方法でも、API 呼び出しでパスワードを渡す必要はありません。AWS Secrets Manager の詳細については、*AWS Secrets Managerユーザーガイド*の「[AWS Secrets Manager とは](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)」を参照してください。認可に AWS IAM アイデンティティセンター を使用することもできます。

Data API を使用すると、AWS Lambda、Amazon SageMaker AI ノートブック、AWS Cloud9 などのウェブサービスベースのアプリケーションで、Amazon Redshift のデータにプログラムによってアクセスできます。これらのアプリケーションの詳細については、「[AWS Lambda](https://aws.amazon.com/lambda/)」、「[Amazon SageMaker AI](https://aws.amazon.com/sagemaker/)」、「[AWS Cloud9](https://aws.amazon.com/cloud9/)」を参照してください。

Data API の詳細については、「*AWS Big Data ブログ*」の「[Get started with the Amazon Redshift Data API](https://aws.amazon.com/blogs/big-data/get-started-with-the-amazon-redshift-data-api/)」を参照してください。

## Amazon Redshift Data API の操作
<a name="data-api-workflow"></a>

Amazon Redshift データ API を使用する前に、以下の手順を確認してください。

1. データ API の呼び出し元として承認されているかどうかを確認します。認可の詳細については、「[Amazon Redshift Data API へのアクセスの認可](data-api-access.md)」を参照してください。

1. Secrets Manager から認証情報を使用して Data API を呼び出すか、一時的な認証情報を使用するか、または AWS IAM アイデンティティセンター を使用するかを決定します。詳細については、「[Amazon Redshift Data API を呼び出すときのデータベース認証用の認証情報の選択](#data-api-calling-considerations-authentication)」を参照してください。

1. 認証情報に Secrets Manager を使用する場合は、シークレットを設定します。詳細については、「[AWS Secrets Manager へのデータベース認証情報の保存](data-api-secrets.md)」を参照してください。

1. Data API を呼び出す際の考慮事項と制限事項を確認してください。詳細については、「[Amazon Redshift Data API を呼び出す際の考慮事項](#data-api-calling-considerations)」を参照してください。

1. Data API は、AWS Command Line Interface(AWS CLI) や独自のコードから、または Amazon Redshift コンソールのクエリエディタを使用して呼び出します。AWS CLI からの呼び出しの例については、「[Data API の呼び出し](data-api-calling.md)」を参照してください。

## Amazon Redshift Data API を呼び出す際の考慮事項
<a name="data-api-calling-considerations"></a>

Data API を呼び出すときは、以下について検討します。
+ Amazon Redshift Data API は、Amazon Redshift のプロビジョニング済みクラスターと Redshift Serverless ワークグループのデータベースにアクセスできます。Redshift Data API を利用可能な AWS リージョン の一覧については、*Amazon Web Services 全般のリファレンス*の「[Redshift Data API](https://docs.aws.amazon.com/general/latest/gr/redshift-service.html)」のエンドポイントのリストをご覧ください。
+ クエリの最大期間は 24 時間です。
+ アクティブなクエリの最大数 (`STARTED` および `SUBMITTED` クエリ) は、Amazon Redshift クラスターあたり 500 です。
+ クエリ結果の最大サイズは 500 MB (gzip 圧縮後) です。500 MB を超えるレスポンスデータが返されると、その呼び出しは終了します。
+ クエリ結果の最大保持時間は 24 時間です。
+ クエリステートメントの最大サイズは 100 KB です。
+ Data API は、次のノードタイプの単一ノードおよび複数ノードのクラスターを照会するために使用できます。
  + dc2.large
  + dc2.8xlarge
  + ra3.large
  + ra3.xlplus
  + ra3.4xlarge
  + ra3.16xlarge
+ クラスターは、Amazon VPC サービスに基づいて Virtual Private Cloud (VPC) で作成する必要があります。
+ デフォルトでは、`ExecuteStatement` または `BatchExecuteStatement` API オペレーションの実行者と同じ IAM ロールを持つユーザーは `CancelStatement`、`DescribeStatement`、`GetStatementResult`、`GetStatementResultV2`、および `ListStatements` API オペレーションで同じステートメントを操作できます。別のユーザーから同じ SQL ステートメントを操作する場合、そのユーザーは、SQL ステートメントを実行したユーザーの IAM ロールを引き受ける必要があります。ロールを割り当てる方法については、[Amazon Redshift Data API へのアクセスの認可](data-api-access.md)を参照してください。
+ `BatchExecuteStatement` API オペレーションの `Sqls` パラメータで SQL ステートメントが単一のトランザクションとして実行されます。これらは、配列の順に従って連続的に実行されます。後続の SQL ステートメントは、配列内の前のステートメントが完了するまで開始されません。SQL ステートメントが失敗した場合、1 つのトランザクションとして実行されるため、すべての作業がロールバックされます。
+ `ExecuteStatement` または `BatchExecuteStatement` API オペレーションで使用されるクライアントトークンの最大保持時間は 8 時間です。
+ Amazon Redshift でプロビジョニングされたクラスターと Redshift Serverless ワークグループがカスタマーマネージドキーを使用して暗号化されている場合、Redshift は Redshift Data API がオペレーションにキーを使用できるようにする許可を作成します。詳細については、 [Amazon Redshift Data API で AWS KMS を使用する](data-api-kms.md) を参照してください。
+ Redshift Data API の各 API には、リクエストのスロットリング前の 1 秒あたりのトランザクション割り当てがあります。クォータについては、「[Amazon Redshift Data API のクォータ](amazon-redshift-limits.md#data-api-quotas-account)」を参照してください。リクエスト率がクォータを超えると、HTTP ステータスコード: 400 の `ThrottlingException` が返されます。スロットリングに対応するには、「**AWS SDK とツールリファレンスガイド」の「[再試行動作](https://docs.aws.amazon.com/sdkref/latest/guide/feature-retry-behavior.html)」で説明されている再試行戦略を使用します。AWS SDK によっては、この戦略が HTTP 400 エラー用に自動的に実装されています。
**注記**  
AWS Step Functions では、再試行がデフォルトでは有効になっていません。Step Functions ステートマシンで Redshift データ API を呼び出す場合は、Redshift データ API コールに `ClientToken` 冪等性パラメータを含める必要があります。この `ClientToken` の値は、再試行の間も維持する必要があります。次の `ExecuteStatement` API へのリクエストの例では、`States.ArrayGetItem(States.StringSplit($$.Execution.Id, ':'), 7)` 式は、組み込み関数を使用してステートマシンが実行されるたびに一意となる `$$.Execution.Id` の UUID 部分を抽出します。詳細については、「**AWS Step Functions デベロッパーガイド」の「[組み込み関数](https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-intrinsic-functions.html)」を参照してください。  

  ```
  {
    "Database": "dev",
    "Sql": "select 1;",
    "ClusterIdentifier": "MyCluster",
    "ClientToken.$": "States.ArrayGetItem(States.StringSplit($$.Execution.Id, ':'), 7)"
  }
  ```

## Amazon Redshift Data API を呼び出すときのデータベース認証用の認証情報の選択
<a name="data-api-calling-considerations-authentication"></a>

データ API を呼び出すと、一部の API 操作で次のいずれかの認証方法を使用します。各メソッドでは、異なるパラメータの組み合わせが必要です。

**AWS IAM アイデンティティセンター**  
Data API は、AWS IAM アイデンティティセンター に登録されたシングルサインオンユーザーでアクセスできます。IAM アイデンティティセンターの設定手順については、「[信頼できる ID の伝播で Data API を使用する](data-api-trusted-identity-propagation.md)」を参照してください。

**AWS Secrets Manager**  
この方法では、`username` および `password` を持つ AWS Secrets Manager が格納されるシークレットの `secret-arn` を指定します。指定されたシークレットには、指定する `database` に接続するための認証情報が含まれます。クラスターに接続するときは、データベース名も指定します。クラスター識別子 (`dbClusterIdentifier`) を指定する場合は、シークレット内に格納されているクラスター識別子と一致する必要があります。サーバーレスワークグループに接続する場合は、データベース名も指定します。詳細については、「[AWS Secrets Manager へのデータベース認証情報の保存](data-api-secrets.md)」を参照してください。  
またこの方法では、データが配置されている AWS リージョン を特定する `region` 値も指定できます。

**一時的な認証情報**  
この方法を実行する場合は、次のいずれかのオプションを選択します。  
+ サーバーレスワークグループに接続する場合は、ワークグループ名とデータベース名を指定します。データベースユーザー名は IAM ID から取得されます。例えば、`arn:iam::123456789012:user:foo` のデータベースユーザー名は `IAM:foo` です。また、`redshift-serverless:GetCredentials` オペレーションを呼び出す許可も必要です。
+ IAM ID としてクラスターに接続するときは、クラスター識別子とデータベース名を指定します。データベースユーザー名は IAM ID から取得されます。例えば、`arn:iam::123456789012:user:foo` のデータベースユーザー名は `IAM:foo` です。また、`redshift:GetClusterCredentialsWithIAM` オペレーションを呼び出す許可も必要です。
+ データベースユーザーとしてクラスターに接続するときは、クラスター識別子、データベース名、データベースユーザー名を指定します。また、`redshift:GetClusterCredentials` オペレーションを呼び出す許可も必要です。この方法で接続するときにデータベースグループに参加する方法については、「[クラスターへの接続時にデータベースグループに参加する](data-api-dbgroups.md)」を参照してください。
またこの方法では、データが配置されている AWS リージョン を特定する `region` 値も指定できます。

## Amazon Redshift データ API を呼び出すときの JDBC データ型のマッピング
<a name="data-api-calling-considerations-jdbc"></a>

 次の表は、Data API 呼び出しで指定したデータ型に Java Database Connectivity (JDBC) データ型をマッピングしたものです。


****  

|  JDBC データ型  |  Data API のデータ型  | 
| --- | --- | 
|  `INTEGER, SMALLINT, BIGINT`  |  `LONG`  | 
|  `FLOAT, REAL, DOUBLE`  |  `DOUBLE`  | 
|  `DECIMAL`  |  `STRING`  | 
|  `BOOLEAN, BIT`  |  `BOOLEAN`  | 
|  `BLOB, BINARY, LONGVARBINARY`  |  `BLOB`  | 
|  `VARBINARY`  |  `STRING`  | 
|  `CLOB`  |  `STRING`  | 
|  その他の型 (日時に関する型も含む)  |  `STRING`  | 

文字列値は Amazon Redshift データベースに渡され、暗黙的にデータベースのデータ型に変換されます。

**注記**  
現在、Data API はユニバーサル固有識別子 (UUID) の配列をサポートしていません。

## Amazon Redshift Data API を呼び出す際にパラメータを使用した SQL ステートメントを実行する
<a name="data-api-calling-considerations-parameters"></a>

SQL ステートメントの一部にパラメータを使用して Data API オペレーションを呼び出し、データベースエンジンに送信される SQL テキストを制御できます。名前付きパラメータを使用すると、SQL テキストでハードコーディングすることなく、柔軟な方法でパラメータを渡すことができます。これらは、SQL テキストを再利用し、SQL インジェクションの問題を回避するのに役立ちます。

次の例では、`execute-statement`AWS CLI コマンドにおける `parameters` フィールドの名前付きパラメータを示しています。

```
--parameters "[{\"name\": \"id\", \"value\": \"1\"},{\"name\": \"address\", \"value\": \"Seattle\"}]"
```

名前付きパラメータを使用する際は、次について検討します。
+ 名前付きパラメータは、SQL ステートメントの値の置換にのみ使用できます。
  + `INSERT INTO mytable VALUES(:val1)` など、INSERT ステートメントの値は置換することができます。

    名前付きパラメータは任意の順序で指定でき、パラメータは SQL テキストで複数回使用できます。前の例で示したパラメータオプションでは、値 `1` および `Seattle` がテーブル列 `id` および `address` に挿入されます。SQL テキストでは、次のように名前付きパラメータを指定します。

    ```
    --sql "insert into mytable values (:id, :address)"
    ```
  + `WHERE attr >= :val1`、`WHERE attr BETWEEN :val1 AND :val2`、`HAVING COUNT(attr) > :val` など、条件句の値は置換することができます。
  + `SELECT column-name`、`ORDER BY column-name`、または `GROUP BY column-name` など、SQL ステートメントの列名は置換できません。

    例えば、次の SELECT ステートメントは無効な構文なので失敗します。

    ```
    --sql "SELECT :colname, FROM event" --parameters "[{\"name\": \"colname\", \"value\": \"eventname\"}]"
    ```

    構文エラーのあるステートメントを記述 (`describe-statement` オペレーション) した場合、返される `QueryString` はパラメータ (`"QueryString": "SELECT :colname, FROM event"`) の列名を置換せず、エラーが報告されます (ERROR: syntax error at or near \$1"FROM\$1"\$1n Position: 12)。
  + `COUNT(column-name)`、`AVG(column-name)`、または `SUM(column-name)` などの集計関数では、列名を置換できません。
  + JOIN 句の列名は置換できません。
+ SQL が実行されると、データは暗黙的にデータ型にキャストされます。データ型のキャストのついての詳細は、*Amazon Redshift データベースデベロッパーガイド*の「[データ型](https://docs.aws.amazon.com/redshift/latest/dg/c_Supported_data_types.html)」を参照してください。
+ 値を NULL に設定することはできません。データ API では、これはリテラル文字列 `NULL` として解釈されます。次の例では、`id`がリテラル文字列 `null` に置き換えられます。SQL NULL 値ではありません。

  ```
  --parameters "[{\"name\": \"id\", \"value\": \"null\"}]"
  ```
+ 長さにゼロの値を設定することはできません。Data API の SQL ステートメントが失敗します。次の例では、`id`の長さをゼロの値に設定しようとしているため、SQL ステートメントは失敗します。

  ```
  --parameters "[{\"name\": \"id\", \"value\": \"\"}]"
  ```
+ パラメータを使用して、SQL ステートメントにテーブル名を設定することはできません。Data API では、JDBC `PreparedStatement` のルールに従います。
+ `describe-statement` オペレーションの出力により、SQL ステートメントのクエリパラメータが返されます。
+ パラメータを使用した SQL ステートメントをサポートするのは、`execute-statement`オペレーションのみです。

## Amazon Redshift Data API を呼び出す際に冪等性トークンで SQL ステートメントを実行する
<a name="data-api-calling-considerations-idempotency"></a>

変異する API リクエストを行うと、通常、リクエストはオペレーションの非同期ワークフローが完了する前に結果を返します。リクエストが既に結果を返している場合でも、操作が完了する前にタイムアウトしたり、その他のサーバーの問題が発生したりすることもあります。これにより、リクエストが成功したかどうかを判断するのが難しくなり、操作を正常に完了するために複数回の再試行が行われることがあります。ただし、元のリクエストとその後の再試行が成功すると、操作は複数回完了します。つまり、意図したよりも多くのリソースを更新する可能性があります。

*冪等性*とは、API リクエストが 1 回だけ完了することを保証するものです。冪等性リクエストでは、元のリクエストが正常に完了した場合、その後の再試行は追加のアクションを実行せずに正しく完了します。データ API `ExecuteStatement` と `BatchExecuteStatement` オペレーションには、オプションの `ClientToken` 冪等性パラメータがあります。`ClientToken` は 8 時間後に期限切れになります。

**重要**  
AWS SDK から `ExecuteStatement` および `BatchExecuteStatement` オペレーションを呼び出すと、再試行時に使用するクライアントトークンが自動的に生成されます。この場合、`ExecuteStatement` および `BatchExecuteStatement` オペレーションで `client-token` パラメータを使用することはお勧めしません。CloudTrail のログを表示すると `ClientToken` を確認できます。CloudTrail ログの例については、「[Amazon Redshift Data API の例](logging-with-cloudtrail.md#data-api-cloudtrail)」を参照してください。

次の `execute-statement` AWS CLI コマンドは、冪等性のオプション `client-token` パラメータを示しています。

```
aws redshift-data execute-statement 
    --secret-arn arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn 
    --cluster-identifier mycluster-test 
    --sql "select * from stl_query limit 1" 
    --database dev 
    --client-token b855dced-259b-444c-bc7b-d3e8e33f94g1
```

次の表は、冪等性 API リクエストに対して返される一般的な応答と、再試行の推奨事項を示しています。


| 応答 | 推奨事項 | コメント | 
| --- | --- | --- | 
|  200 (OK)  |  再試行しないでください  |  元のリクエストは正しく完了しています。それ以降に再試行しても正常に戻ります。  | 
|  400 シリーズ応答コード   |  再試行しないでください  |  次のうち、リクエストに問題があります。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/data-api.html) リクエストに状態の変更処理中のリソースが含まれている場合、リクエストを再試行すると成功する可能性があります。  | 
|  500 シリーズ応答コード   |  再試行  |  このエラーは AWS サーバー側の問題によって発生し、通常は一時的なものです。適切なバックオフ戦略でリクエストを繰り返してください。  | 

Amazon Redshift 応答コードの詳細については、「*Amazon Redshift API リファレンス*」から「[一般的なエラー](https://docs.aws.amazon.com/redshift/latest/APIReference/CommonErrors.html)」を参照してください。

## Amazon Redshift Data API を呼び出す際にセッションの再利用によって SQL ステートメントを実行する
<a name="data-api-calling-considerations-session-reuse"></a>

API リクエストを実行して SQL ステートメントを実行すると、通常、SQL が実行されているセッションは SQL の完了時に終了します。指定された秒数だけセッションをアクティブにするために、Data API `ExecuteStatement` および `BatchExecuteStatement` オペレーションにはオプションの `SessionKeepAliveSeconds` パラメータがあります。`SessionId` レスポンスフィールドにはセッションのアイデンティティが含まれており、後続の `ExecuteStatement` および `BatchExecuteStatement` オペレーションで使用できます。それ以降の呼び出しでは、別の `SessionKeepAliveSeconds` を指定してアイドルタイムアウト時間を変更できます。`SessionKeepAliveSeconds` が変更されていない場合、最初のアイドルタイムアウト設定は残ります。セッションの再利用を使用する場合は、次の点を考慮してください。
+ `SessionKeepAliveSeconds` の最大値は 24 時間です。
+ セッションは最大 24 時間持続します。24 時間後、セッションは強制的に閉じられ、進行中のクエリは終了します。
+ Amazon Redshift クラスターまたは Redshift Serverless ワークグループあたりのセッションの最大数は 500 です。
+ セッションごとに 1 つのクエリしか実行できません。同じセッションで次のクエリを実行するには、クエリが完了するまで待つ必要があります。つまり、指定されたセッションでクエリを並行して実行することはできません。
+ Data API は、特定のセッションのクエリをキューに入れることはできません。

`ExecuteStatement` および `BatchExecuteStatement` オペレーションの呼び出しで使用される `SessionId` を取得するには、`DescribeStatement` および `ListStatements` オペレーションを呼び出します。

次の例は、`SessionKeepAliveSeconds` および `SessionId` パラメータを使用してセッションを存続させ、再利用する方法を示しています。まず、オプションの `session-keep-alive-seconds` パラメータを `2` に設定して `execute-statement` AWS CLI コマンドを呼び出します。

```
aws redshift-data execute-statement 
    --session-keep-alive-seconds 2 
    --sql "select 1" 
    --database dev 
    --workgroup-name mywg
```

応答にはセッションの識別子が含まれます。

```
{
    "WorkgroupName": "mywg",
    "CreatedAt": 1703022996.436,
    "Database": "dev",
    "DbUser": "awsuser",
    "Id": "07c5ffea-76d6-4786-b62c-4fe3ef529680",
    "SessionId": "5a254dc6-4fc2-4203-87a8-551155432ee4"
}
```

次に、最初の呼び出しから返された `SessionId` を使用して `execute-statement` AWS CLI コマンドを呼び出します。オプションで、`session-keep-alive-seconds` パラメータを `10` に設定してアイドルタイムアウト値を変更します。

```
aws redshift-data execute-statement 
    --sql "select 1" 
    --session-id 5a254dc6-4fc2-4203-87a8-551155432ee4
    --session-keep-alive-seconds 10
```

## SQL ステートメントの結果を取得する
<a name="data-api-calling-considerations-result-format"></a>

結果の形式に応じて異なる Data API オペレーションを使用して、SQL 結果を取得します。`ExecuteStatement` および `BatchExecuteStatement` オペレーションを呼び出すときに、結果の形式を JSON と CSV のどちらにするかを指定できます。未指定の場合は、デフォルトで JSON になります。JSON 形式で結果を取得するには、`GetStatementResult` オペレーションを使用します。CSV 形式で結果を取得するには、`GetStatementResultV2` オペレーションを使用します。

JSON 形式で返される結果は、各列に関するメタデータを含むレコードです。各レコードは JSON 形式です。例えば、`GetStatementResult` からのレスポンスは次のようになります。

```
{
   "ColumnMetadata": [ 
      { 
         "isCaseSensitive": false,
         "isCurrency": false,
         "isSigned": true,
         "label": "?column?",
         "name": "?column?",
         "nullable": 1,
         "precision": 10,
         "scale": 0,
         "schemaName": "",
         "tableName": "",
         "typeName": "int4",
         "length": 0
      }
   ],
   "NextToken": "<token>",
   "Records": [
        [
            {
                "longValue": 1
            }
        ]
    ],
   "TotalNumRows": <number>
}
```

CSV 形式で返される結果は、各列に関するメタデータを含むレコードです。結果は 1 MB のチャンクで返され、各チャンクには任意の数の行が CSV 形式で含まれます。各リクエストは、最大 15 MB 分の結果を返します。結果が 15 MB を上回る場合は、結果の取得を続行できるように、次のページトークンが返されます。例えば、`GetStatementResultV2` からのレスポンスは次のようになります。

```
{
    "ColumnMetadata": [
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "?column?",
            "name": "?column?",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "",
            "typeName": "int4",
            "length": 0
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "?column?",
            "name": "?column?",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "",
            "typeName": "int4",
            "length": 0
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "?column?",
            "name": "?column?",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "",
            "typeName": "int4",
            "length": 0
        }
    ],
    "NextToken": "<token>",
    "Records": [
        [
            {
                "CSVRecords":"1,2,3\r\n4,5,6\r\n7,8,9\rn, .... 1MB" // First 1MB Chunk
            },
            {
                "CSVRecords":"1025,1026,1027\r\n1028,1029,1030\r\n....2MB" // Second 1MB chunk
            }
            ...
        ]
    ],
    "ResultFormat" : "CSV",
    "TotalNumRows": <number>
}
```

# Amazon Redshift Data API へのアクセスの認可
<a name="data-api-access"></a>

ユーザーは Data API へのアクセスが許可されている必要があります。事前定義済みの AWS Identity and Access Management (IAM) ポリシーである管理ポリシーをユーザーに追加して、ユーザーに Data API へのアクセスを許可できます。ベストプラクティスとして、アクセス許可ポリシーを IAM ロールにアタッチし、それを必要に応じてユーザーやグループに割り当てることをお勧めします。詳細については、「[Amazon Redshift での Identity and Access Management](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-authentication-access-control.html)」を参照してください。マネージドポリシーによって許可および拒否されるアクセス許可を確認するには、IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) 参照してください。

# IAM 許可の設定
<a name="data-api-iam"></a>

Amazon Redshift は、`AmazonRedshiftDataFullAccess`マネージドポリシーを提供します。このポリシーは、Amazon Redshift Data API オペレーションへのフルアクセスを提供します。このポリシーでは、Amazon Redshift クラスターまたは Redshift Serverless ワークグループの認証とアクセスに必要な特定の Amazon Redshift、AWS Secrets Manager、IAM API オペレーションへのスコープ付きアクセスも許可されます。

特定のリソースへのアクセスを許可する独自の IAM ポリシーを作成することもできます。ポリシーを作成するには、`AmazonRedshiftDataFullAccess`ポリシーを開始テンプレートとして使用します。作成したポリシーは、Data API にアクセスする必要がある各ユーザーに追加します。

ユーザーに関連付けられた IAM ポリシーの以下の要件を考慮してください。
+ AWS Secrets Manager を使用して認証する場合、ポリシーでは `secretsmanager:GetSecretValue` アクションの使用が許可され、キー `RedshiftDataFullAccess` でタグ付けされたシークレットを取得できることを確認します。
+ 一時的な認証情報を使用してクラスターに対して認証する場合、ポリシーでは、クラスター内の任意のデータベースのデータベースユーザー名 `redshift_data_api_user` に対する `redshift:GetClusterCredentials` アクションの使用が許可されることを確認します。このユーザー名は、データベースにすでに作成されている必要があります。
+ 一時的な認証情報を使用してサーバーレスワークグループへの認証を行う場合は、ポリシーで `redshift-serverless:GetCredentials` キーでタグ付けされたワークグループを取得するための `RedshiftDataFullAccess` アクションの使用が許可されていることを確認します。データベースユーザーが、ソース AWS Identity and Access Management (IAM) ID に対して 1:1 にマップされています。例えば、ユーザー sample\$1user はデータベースユーザー `IAM:sample_user` にマップされ、IAM ロール sample\$1role は `IAMR:sample_role` にマップされます。IAM ID の詳細については、「IAM ユーザーガイド」の「[IAM ID (ユーザー、ユーザーグループ、ロール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)」を参照してください。
+ IAM アクション `redshift-data:GetStatementResult` は、`GetStatementResult` および `GetStatementResultV2` API オペレーションの両方へのアクセスを許可します。

次のリンクから、*IAM ユーザーガイド*で AWS Identity and Access Management についての詳細情報をご覧いただけます。
+ IAM ロールの作成については、「[IAM ロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)」を参照してください。
+ IAM ポリシーの作成については、「[IAM ポリシーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」を参照してください。
+ IAM ポリシーをユーザーに追加する方法については、「[IAM ID のアクセス許可の追加および削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)」を参照してください。

## 別のアカウントが所有するクラスターでクエリを実行する
<a name="data-api-run-query-on-others-cluster"></a>

別のアカウントが所有するクラスターでクエリを実行するには、呼び出すアカウントで Data API がロールを引き受けることができる IAM ロールを所有アカウントより提供してもらう必要があります。例えば、アカウント A がアクセスする必要のあるクラスターを、アカウント B が所有しているとします。アカウント B は、AWS マネージドポリシーの `AmazonRedshiftDataFullAccess` をアカウント B の IAM ロールにアタッチできます。次に、アカウント B は、次のような信頼ポリシーを使用してアカウント A を信頼します: ``

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/someRoleA"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

最後に、アカウント A の IAM ロールでアカウント B の IAM ロールを引き受けることができなければなりません。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::111122223333:role/someRoleB"
    }
}
```

------

## AWS アカウント 内のリソースを Amazon Redshift Serverless ワークグループおよび Amazon Redshift クラスターに制限する IAM ロールを指定します。
<a name="data-api-restrict-to-account"></a>

アイデンティティベースのポリシーでリソース ARN を指定して、AWS アカウントの Redshift Serverless ワークグループと Amazon Redshift クラスターへのアクセスを制御できます。この例では、指定した AWS アカウントのワークグループとクラスターのみに対して Data API へのアクセスを許可するポリシーを作成する方法を示します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift-data:CancelStatement",
                "redshift-data:DescribeStatement",
                "redshift-data:GetStatementResult",
                "redshift-data:ListStatements"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "redshift-data:*",
            "Resource": [
                "arn:aws:redshift:us-east-1:111122223333:workgroup/*",
                "arn:aws:redshift:us-east-1:111122223333:cluster:*"
            ]
        }
    ]
}
```

------

## SQL ステートメント情報へのアクセスをステートメント所有者のみに制限する IAM ポリシーを設定する
<a name="data-api-restrict-to-statement-owner"></a>

デフォルトでは、Amazon Redshift Data API は、`ExecuteStatement` および `BatchExecuteStatement` を呼び出すときに使用される IAM ロールを SQL ステートメントの所有者として扱います。ロールを引き受けることが許可されているユーザーは、結果を含む SQL ステートメントに関する情報にアクセスできます。特定の所有者との IAM ロールセッションへの SQL ステートメント情報アクセスを制限するには、条件 `redshift-data:statement-owner-iam-userid: "${aws:userid}"` を追加します。次の IAM ポリシーは、アクセスを制限します。

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift-data:CancelStatement",
                "redshift-data:DescribeStatement",
                "redshift-data:GetStatementResult",
                "redshift-data:ListStatements"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "redshift-data:statement-owner-iam-userid": "${aws:userid}"
                }
            }
        }
    ]
}
```

------

`statement-owner-iam-userid` 条件は `CancelStatement`、`DescribeStatement`、`GetStatementResult`、および `ListStatements` で使用することができます。詳細については、「[Amazon Redshift Data API で定義されるアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonredshiftdataapi.html#amazonredshiftdataapi-redshift-data_statement-owner-iam-userid)」を参照してください。

## SQL 結果へのアクセスをセッション所有者のみに制限する IAM ポリシーを設定する
<a name="data-api-restrict-session-owner"></a>

デフォルトでは、Amazon Redshift Data API は、`ExecuteStatement` と `BatchExecuteStatement` を呼び出すときに使用される IAM ロールを、SQL ステートメントを実行するデータベースセッションの所有者として扱います。ロールを引き受けることが許可されているユーザーは、データベースセッションにクエリを送信できます。特定の所有者との IAM ロールセッションへのセッションアクセスを制限するには、条件 ` redshift-data:session-owner-iam-userid: "${aws:userid}"` を追加します。次の IAM ポリシーは、アクセスを制限します。

次の IAM ポリシーでは、セッション所有者のみがステートメントの結果を取得できます。条件 `session-owner-iam-userid` は、指定された `userid` へのリソースアクセスを制限するために使用されます。

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [ 
                "redshift-data:ExecuteStatement",
                "redshift-data:BatchExecuteStatement"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "redshift-data:session-owner-iam-userid": "${aws:userid}"
                }
            }
        }
    ]
}
```

------

`ExecuteStatement` および `BatchExecuteStatement` で `session-owner-iam-userid` 条件を使用することができます。詳細については、「[Amazon Redshift Data API で定義されるアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonredshiftdataapi.html#amazonredshiftdataapi-redshift-data_statement-owner-iam-userid)」を参照してください。

# AWS Secrets Manager へのデータベース認証情報の保存
<a name="data-api-secrets"></a>

Data API を呼び出すと、AWS Secrets Manager のシークレットを使用してクラスターまたはサーバーレスワークグループの認証情報を渡すことができます。この方法で認証情報を渡すには、シークレットの名前またはシークレットの Amazon リソースネーム (ARN) を指定します。

Secrets Manager で認証情報を保存するには、`SecretManagerReadWrite`マネージドポリシー権限が必要です。最小のアクセス許可についての詳細は、*AWS Secrets Managerユーザーガイド*の「[Creating and Managing Secrets with AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html)」を参照してください。

**Amazon Redshift クラスターのシークレットに認証情報を保存するには**

1. AWS Secrets Manager コンソールを使用して、クラスターの認証情報が含まれるシークレットを作成します。
   + [**Store a new secret (新しいシークレットを保存する)**] を選択する場合は、[**Credentials for Redshift cluster (Redshift クラスターの認証情報)**]を選択します。
   + **[User name]** (ユーザー名) (データベースユーザー)、**[Password]** (パスワード)、および **[DB cluster]** (DB クラスター) (クラスター識別子) の値をシークレットに保存します。
   + キー `RedshiftDataFullAccess` でシークレットにタグを付けます。AWS マネージドポリシーの `AmazonRedshiftDataFullAccess` は、キー `RedshiftDataFullAccess` でタグ付けされたシークレットに対してのみアクション `secretsmanager:GetSecretValue` を許可します。

   手順については、*AWS Secrets Managerユーザーガイド* の「[Creating a Basic Secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html)」を参照してください。

1. AWS Secrets Manager コンソールを使用して、作成したシークレットの詳細を表示するか、`aws secretsmanager describe-secret`の AWS CLI コマンドを実行します。

   シークレットの名前と ARN を書き留めます。これらは、Data API への呼び出しで使用できます。

**サーバーレスワークグループのシークレットに認証情報を保存するには**

1. サーバーレスワークグループの認証情報を含むシークレットを保存するには、AWS Secrets Manager AWS CLI コマンドを使用します。
   + ファイルにシークレットを作成します。例: `mycreds.json` という名前の JSON ファイル。ファイルで [**ユーザー名**] (データベースユーザー) と [**パスワード**] の値を指定します。

     ```
     {
           "username": "myusername",
           "password": "mypassword"
     }
     ```
   + 値をシークレットに保存し、シークレットに `RedshiftDataFullAccess` キーでタグを付けます。

     ```
     aws secretsmanager create-secret --name MyRedshiftSecret  --tags Key="RedshiftDataFullAccess",Value="serverless" --secret-string file://mycreds.json
     ```

     出力は以下のようになります。

     ```
     {
         "ARN": "arn:aws:secretsmanager:region:accountId:secret:MyRedshiftSecret-mvLHxf",
         "Name": "MyRedshiftSecret",
         "VersionId": "a1603925-e8ea-4739-9ae9-e509eEXAMPLE"
     }
     ```

   詳細については、*AWS Secrets Manager ユーザーガイド*の「[AWS CLI を使用したベーシックシークレットの作成](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html#proc-create-api)」を参照してください。

1. AWS Secrets Manager コンソールを使用して、作成したシークレットの詳細を表示するか、`aws secretsmanager describe-secret`の AWS CLI コマンドを実行します。

   シークレットの名前と ARN を書き留めます。これらは、Data API への呼び出しで使用できます。

# Data API に Amazon VPC エンドポイント (AWS PrivateLink) を作成する
<a name="data-api-vpc-endpoint"></a>

Amazon Virtual Private Cloud (Amazon VPC) を使用すると、Amazon Redshift クラスターやアプリケーションなどの AWS リソースを仮想プライベートクラウド (VPC) 内に起動できます。AWS PrivateLink は、仮想プライベートクラウド (VPC) と AWS サービス間のプライベートな接続を Amazon ネットワーク上で安全に提供します。AWS PrivateLink を使用すると、VPC エンドポイントを作成できます。これにより、Amazon VPC に基づいて、異なるアカウントや VPC のサービスに接続できます。AWS PrivateLink の詳細については、*Amazon Virtual Private Cloud ユーザーガイド*の「[VPC エンドポイントサービス (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-service.html)」を参照してください。

Amazon VPC エンドポイントを使用して Data API を呼び出すことができます。Amazon VPC エンドポイントを使用することで、パブリック IP アドレスなしで Amazon VPC 内のアプリケーションと AWS ネットワーク内の Data API 間のトラフィックを維持できます。Amazon VPC エンドポイントは、公共のインターネット接続の制限に関連するコンプライアンスおよび規制要件を満たすのに役立ちます。例えば、Amazon VPC エンドポイントを使用する場合、Amazon EC2 インスタンスで実行されているアプリケーションと、それらを含む VPC 内の Data API 間のトラフィックを維持できます。

Amazon VPC エンドポイントを作成したら、アプリケーションでコードや設定を変更せずに、エンドポイントの使用をスタートできます。

**Data API に Amazon VPC エンドポイントを作成するには**

1. AWS マネジメントコンソール にサインインして、Amazon VPC コンソール ([https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)) を開きます。

1. [** エンドポイント**] を選択し、[**エンドポイントの作成**] を選択します。

1. [**エンドポイントの作成**] ページの [**サービスカテゴリ**] で [**AWS サービス**] を選択します。を使用する場合[**サービス名**] で、[**redshift Data**(`com.amazonaws.region.redshift-data`)]。

1. [**VPC**] の場合は、VPC を選択してエンドポイントを作成します。

   Data API コールを行うアプリケーションを含む VPC を選択します。

1. [**サブネット**] で、アプリケーションを実行している AWS のサービスによって使用される各アベイラビリティーゾーン (AZ) のサブネットを選択します。

   Amazon VPC エンドポイントを作成するには、エンドポイントにアクセスできるプライベート IP アドレスの範囲を指定します。これを行うには、各アベイラビリティーゾーンのサブネットを選択します。これにより、VPC エンドポイントは各アベイラビリティーゾーンに固有のプライベート IP アドレス範囲に制限され、各アベイラビリティーゾーンに Amazon VPC エンドポイントが作成されます。

1. [**DNS 名を有効にする**] で、[**このエンドポイントで有効にする**] を選択します。

   プライベート DNS は、標準の Data API DNS ホスト名 (`https://redshift-data.region.amazonaws.com`) を、Amazon VPC エンドポイントに固有の DNS ホスト名に関連付けられたプライベート IP アドレスに解決します。その結果、Data API エンドポイント URL を更新するためのコードや設定を変更せずに、AWS CLIまたは AWS SDK を使用して Data API VPC エンドポイントにアクセスできます。

1. **セキュリティグループ**で、Amazon VPC エンドポイントに関連付けるセキュリティグループを選択します。

   アプリケーションを実行している AWS のサービスへのアクセスを許可するセキュリティグループを選択します。例えば、Amazon EC2 インスタンスでアプリケーションを実行している場合は、Amazon EC2 インスタンスへのアクセスを許可するセキュリティグループを選択します。セキュリティグループを使用すると、VPC 内のリソースから Amazon VPC エンドポイントへのトラフィックを制御できます。

1. [**Create endpoint (エンドポイントの作成)**] を選択します。

エンドポイントを作成したら、AWS マネジメントコンソールでリンクを選択して、エンドポイントの詳細を表示します。

エンドポイントの [**Details (詳細)**] タブには、Amazon VPC エンドポイントの作成中に生成された DNS ホスト名が表示されます。

標準エンドポイント (`redshift-data.region.amazonaws.com`) または VPC 固有のエンドポイントの 1 つを使用して、Amazon VPC 内の Data API を呼び出すことができます。スタンダード Data API エンドポイントは、自動的に Amazon VPC エンドポイントにルーティングします。このルーティングは、Amazon VPC エンドポイントの作成時にプライベート DNS ホスト名が有効になったために発生します。

Data API コールで Amazon VPC エンドポイントを使用すると、アプリケーションと Data API 間のすべてのトラフィックは、それらを含む Amazon VPC に残ります。Amazon VPC エンドポイントは、任意のタイプの Data API コールに使用できます。Data API を呼び出す方法については、「[Amazon Redshift Data API を呼び出す際の考慮事項](data-api.md#data-api-calling-considerations)」を参照してください。

# クラスターへの接続時にデータベースグループに参加する
<a name="data-api-dbgroups"></a>

データベースグループは、データベースユーザーのコレクションです。データベース権限はグループに付与できます。管理者は、SQL を Data API で実行するときに、これらのデータベースグループを考慮に入れて IAM ロールを設定できます。データベースグループの詳細については、「Amazon Redshift データベース開発者ガイド」の「[グループ](https://docs.aws.amazon.com/redshift/latest/dg/r_Groups.html)」を参照してください。**

Data API がクラスターに接続したときに、呼び出しで指定したデータベースユーザーがデータベースグループに参加するように、Data API 呼び出し元の IAM ロールを設定できます。この機能は、プロビジョニングされたクラスターに接続する場合にのみサポートされます。Redshift Serverless ワークグループに接続する場合はサポートされません。Data API の呼び出し元の IAM ロールでは、`redshift:JoinGroup` アクションも許可する必要があります。

これを設定するには、IAM ロールにタグを追加します。呼び出し元の IAM ロールの管理者は、キー `RedshiftDbGroups` およびデータベースグループのリストのキー値を使用してタグを追加します。値は、コロン (:) で区切られたデータベースグループの名前のリストで、全長は最大 256 文字です。データベースグループは、接続されたデータベースで事前に定義しておく必要があります。指定したグループがデータベースに見つからない場合、そのグループは無視されます。例えば、データベースグループ `accounting` および `retail` の場合、キー値は `accounting:retail` です。タグのキーおよび値のペア `{"Key":"RedshiftDbGroups","Value":"accounting:retail"}` は、Data API への呼び出しで、どのデータベースグループが指定のデータベースユーザーに関連付けられているかを Data API で判断するために使用します。

**データベースグループに参加するには**

1. AWS マネジメントコンソール にサインインして、IAM コンソール [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) を開きます。

1. コンソールのナビゲーションペインで、**ロール** を選択し、編集するロールの名前を選択します。

1. **[タグ]** タブ、**[タグを管理]** の順に選択します。

1. **[タグを追加]** を選択し、キー **RedshiftDbGroups** と値 (*database-groups-colon-separated* のリスト) を追加します。

1. **[Save changes]** (変更の保存) をクリックします。

   これで、この IAM ロールがアタッチされた IAM プリンシパルから Data API を呼び出すと、指定したデータベースユーザーが IAM ロールに指定されたデータベースグループに参加します。

IAM ロールや IAM ユーザーなど、プリンシパルにタグをアタッチする方法については、「*IAM ユーザーガイド*」の「[IAM リソースのタグ付け](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)」を参照してください。

# 信頼できる 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;
```

# Data API の呼び出し
<a name="data-api-calling"></a>

Data API または AWS CLI を呼び出して、クラスターまたはサーバーレスワークグループで SQL ステートメントを実行できます。SQL ステートメントを実行する主なオペレーションは、*Amazon Redshift Data API リファレンス*の [https://docs.aws.amazon.com/redshift-data/latest/APIReference/API_ExecuteStatement.html](https://docs.aws.amazon.com/redshift-data/latest/APIReference/API_ExecuteStatement.html) と [https://docs.aws.amazon.com/redshift-data/latest/APIReference/API_BatchExecuteStatement.html](https://docs.aws.amazon.com/redshift-data/latest/APIReference/API_BatchExecuteStatement.html) です。Data API は、AWSSDK でサポートされているプログラミング言語をサポートしています。詳細については、「[AWS での構築ツール](https://aws.amazon.com/tools/)」を参照してください。

Data API を呼び出すコードの例については、*GitHub* の「[Getting Started with Redshift Data API](https://github.com/aws-samples/getting-started-with-amazon-redshift-data-api#getting-started-with-redshift-data-api)」を参照してください。このリポジトリには、Amazon EC2、AWS Glue Data Catalog または Amazon SageMaker ランタイムからの Amazon Redshift データへのアクセスに AWS Lambda を使用する例があります。プログラミング言語の例としては、Python、Go、Java、Javascript があります。

Data API は、AWS CLIを使用して呼び出すことができます。

次の例では、AWS CLIを使用して Data API を呼び出します。例を実行するには、環境に合わせてパラメータ値を編集します。多くの例では、クラスターに対して実行するため、`cluster-identifier` が指定されています。サーバーレスワークグループに対して実行する場合は、代わりに `workgroup-name` を指定します。これらの例は、データ API 操作の一部を示しています。詳細については、*AWS CLIコマンドリファレンス*を参照してください。

次の例のコマンドは分割され、読みやすい形式になっています。すべてのパラメータとレスポンスがすべての例で表示されるとは限りません。完全なリクエスト構文、リクエストパラメータ、レスポンス構文、レスポンス要素の API 定義については、「[Amazon Redshift Data API リファレンス](https://docs.aws.amazon.com/redshift-data/latest/APIReference/)」を参照してください。

# SQL ステートメントを Amazon Redshift データウェアハウスに渡す
<a name="pass-sql-statements"></a>

このページの例は、SQL ステートメントをデータウェアハウスに渡すさまざまな方法について説明しています。

## SQL ステートメントを実行する
<a name="data-api-calling-cli-execute-statement"></a>

SQL ステートメントを実行するには、`aws redshift-data execute-statement` AWS CLI コマンドを使用します。

次の AWS CLI コマンドは、クラスターに対して SQL ステートメントを実行し、結果を取得する識別子を返します。この例では、AWS Secrets Managerの認証方法を使用します。

```
aws redshift-data execute-statement 
    --secret-arn arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn 
    --cluster-identifier mycluster-test 
    --sql "select * from stl_query limit 1" 
    --database dev
```

次は、レスポンスの例です。

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": 1598323175.823,
    "Database": "dev",
    "Id": "c016234e-5c6c-4bc5-bb16-2c5b8ff61814",
    "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn"
}
```

次の AWS CLI コマンドは、クラスターに対して SQL ステートメントを実行し、結果を取得する識別子を返します。この例では、一時的な認証情報認証方法を使用します。

```
aws redshift-data execute-statement 
    --db-user myuser 
    --cluster-identifier mycluster-test 
    --database dev 
    --sql "select * from stl_query limit 1"
```

次は、レスポンスの例です。

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": 1598306924.632,
    "Database": "dev",
    "DbUser": "myuser",
    "Id": "d9b6c0c9-0747-4bf4-b142-e8883122f766"
}
```

次の AWS CLI コマンドは、サーバーレスワークグループに対して SQL ステートメントを実行し、結果を取得する識別子を返します。この例では、一時的な認証情報認証方法を使用します。

```
aws redshift-data execute-statement 
    --database dev 
    --workgroup-name myworkgroup 
    --sql "select 1;"
```

次は、レスポンスの例です。

```
{
 "CreatedAt": "2022-02-11T06:25:28.748000+00:00",
 "Database": "dev",
 "DbUser": "IAMR:RoleName",
 "Id": "89dd91f5-2d43-43d3-8461-f33aa093c41e",
 "WorkgroupName": "myworkgroup"
}
```

次の AWS CLI コマンドは、クラスターに対して SQL ステートメントを実行し、結果を取得する識別子を返します。この例では、AWS Secrets Manager 認証方法と冪等性トークンを使用しています。

```
aws redshift-data execute-statement 
    --secret-arn arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn 
    --cluster-identifier mycluster-test 
    --sql "select * from stl_query limit 1" 
    --database dev 
    --client-token b855dced-259b-444c-bc7b-d3e8e33f94g1
```

次は、レスポンスの例です。

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": 1598323175.823,
    "Database": "dev",
    "Id": "c016234e-5c6c-4bc5-bb16-2c5b8ff61814",
    "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn"
}
```

## パラメータを使用して SQL ステートメントを実行する
<a name="data-api-calling-cli-execute-statement-parameters"></a>

SQL ステートメントを実行するには、`aws redshift-data execute-statement` AWS CLI コマンドを使用します。

 次の AWS CLI コマンドは、クラスターに対して SQL ステートメントを実行し、結果を取得する識別子を返します。この例では、AWS Secrets Managerの認証方法を使用します。SQL テキストには、名前付きパラメータ `distance` があります。この場合、述部で使用される距離は `5` です。SELECT ステートメントでは、列名の名前付きパラメータは述部でのみ使用できます。SQL ステートメントの名前付きパラメータの値は、`parameters`オプションで指定できます。

```
aws redshift-data execute-statement 
    --secret-arn arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn 
    --cluster-identifier mycluster-test 
    --sql "SELECT ratecode FROM demo_table WHERE trip_distance > :distance"  
    --parameters "[{\"name\": \"distance\", \"value\": \"5\"}]"
    --database dev
```

次は、レスポンスの例です。

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": 1598323175.823,
    "Database": "dev",
    "Id": "c016234e-5c6c-4bc5-bb16-2c5b8ff61814",
    "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn"
}
```

次の例では、サンプルデータベースの `EVENT` テーブルを使用します。詳細については、*Amazon Redshift データベースデベロッパーガイド*の「[EVENT テーブル](https://docs.aws.amazon.com/redshift/latest/dg/r_eventtable.html)」を参照してください。

まだデータベースに `EVENT` テーブルにない場合、Data API を使用して次のように作成できます。

```
aws redshift-data execute-statement 
--database dev
--cluster-id mycluster-test
--db-user awsuser
--sql "create table event( eventid integer not null distkey, 
                           venueid smallint not null, 
                           catid smallint not null, 
                           dateid smallint not null sortkey, 
                           eventname varchar(200), 
                           starttime timestamp)"
```

次のコマンドは、1 つの行を `EVENT` テーブルに挿入します。

```
aws redshift-data execute-statement 
--database dev
--cluster-id mycluster-test
--db-user awsuser 
--sql "insert into event values(:eventid, :venueid::smallint, :catid, :dateid, :eventname, :starttime)" 
--parameters "[{\"name\": \"eventid\", \"value\": \"1\"}, {\"name\": \"venueid\", \"value\": \"1\"}, 
               {\"name\": \"catid\", \"value\": \"1\"}, 
               {\"name\": \"dateid\", \"value\": \"1\"}, 
               {\"name\": \"eventname\", \"value\": \"event 1\"}, 
               {\"name\": \"starttime\", \"value\": \"2022-02-22\"}]"
```

次のコマンドは、2 つ目の行を `EVENT` テーブルに挿入します。この例は以下を示します。
+ `id` という名前のパラメータは SQL テキストで 4 回使用されます。
+ 暗黙的な型変換は、パラメータ `starttime` を挿入する際に自動的に適用されます。
+ `venueid` 列は、SMALLINT データ型にタイプキャストされます。
+ DATE データ型を表す文字列は、TIMESTAMP データ型に暗黙的に変換されます。
+ コメントは SQL テキスト内で使用できます。

```
aws redshift-data execute-statement 
--database dev
--cluster-id mycluster-test
--db-user awsuser 
--sql "insert into event values(:id, :id::smallint, :id, :id, :eventname, :starttime) /*this is comment, and it won't apply parameterization for :id, :eventname or :starttime here*/" 
--parameters "[{\"name\": \"eventname\", \"value\": \"event 2\"}, 
               {\"name\": \"starttime\", \"value\": \"2022-02-22\"}, 
               {\"name\": \"id\", \"value\": \"2\"}]"
```

次に、挿入された 2 つの行を示します。

```
 eventid | venueid | catid | dateid | eventname |      starttime
---------+---------+-------+--------+-----------+---------------------
       1 |       1 |     1 |      1 | event 1   | 2022-02-22 00:00:00
       2 |       2 |     2 |      2 | event 2   | 2022-02-22 00:00:00
```

次のコマンドでは、WHERE 句で名前付きパラメータを使用して、`eventid`が `1` である行を取得します。

```
aws redshift-data execute-statement 
--database dev
--cluster-id mycluster-test
--db-user awsuser 
--sql "select * from event where eventid=:id"
--parameters "[{\"name\": \"id\", \"value\": \"1\"}]"
```

次のコマンドを実行して、前の SQL ステートメントの SQL 結果を取得します。

```
aws redshift-data get-statement-result --id 7529ad05-b905-4d71-9ec6-8b333836eb5a        
```

これにより次の結果が示されます。

```
{
    "Records": [
        [
            {
                "longValue": 1
            },
            {
                "longValue": 1
            },
            {
                "longValue": 1
            },
            {
                "longValue": 1
            },
            {
                "stringValue": "event 1"
            },
            {
                "stringValue": "2022-02-22 00:00:00.0"
            }
        ]
    ],
    "ColumnMetadata": [
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "eventid",
            "length": 0,
            "name": "eventid",
            "nullable": 0,
            "precision": 10,
            "scale": 0,
            "schemaName": "public",
            "tableName": "event",
            "typeName": "int4"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "venueid",
            "length": 0,
            "name": "venueid",
            "nullable": 0,
            "precision": 5,
            "scale": 0,
            "schemaName": "public",
            "tableName": "event",
            "typeName": "int2"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "catid",
            "length": 0,
            "name": "catid",
            "nullable": 0,
            "precision": 5,
            "scale": 0,
            "schemaName": "public",
            "tableName": "event",
            "typeName": "int2"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "dateid",
            "length": 0,
            "name": "dateid",
            "nullable": 0,
            "precision": 5,
            "scale": 0,
            "schemaName": "public",
            "tableName": "event",
            "typeName": "int2"
        },
        {
            "isCaseSensitive": true,
            "isCurrency": false,
            "isSigned": false,
            "label": "eventname",
            "length": 0,
            "name": "eventname",
            "nullable": 1,
            "precision": 200,
            "scale": 0,
            "schemaName": "public",
            "tableName": "event",
            "typeName": "varchar"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "label": "starttime",
            "length": 0,
            "name": "starttime",
            "nullable": 1,
            "precision": 29,
            "scale": 6,
            "schemaName": "public",
            "tableName": "event",
            "typeName": "timestamp"
        }
    ],
    "TotalNumRows": 1
}
```

## 複数の SQL ステートメントを実行する
<a name="data-api-calling-cli-batch-execute-statement"></a>

1 つのコマンドで複数の SQL ステートメントを実行するには、`aws redshift-data batch-execute-statement`AWS CLI コマンドを実行します。

次の AWS CLI コマンドは、クラスターに対して 3 つの SQL ステートメントを実行し、結果を取得する識別子を返します。この例では、一時的な認証情報認証方法を使用します。

```
aws redshift-data batch-execute-statement 
    --db-user myuser 
    --cluster-identifier mycluster-test 
    --database dev 
    --sqls "set timezone to BST" "select * from mytable" "select * from another_table"
```

次は、レスポンスの例です。

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": 1598306924.632,
    "Database": "dev",
    "DbUser": "myuser",
    "Id": "d9b6c0c9-0747-4bf4-b142-e8883122f766"
}
```

# SQL ステートメントに関するメタデータを一覧表示する
<a name="data-api-calling-cli-list-statements"></a>

`aws redshift-data list-statements` AWS CLI コマンドを使用して、SQL ステートメントに関するメタデータを一覧表示します。このコマンドの実行の承認は、呼び出し元の IAM アクセス許可に基づいています。

次の AWS CLI コマンドは、実行された SQL ステートメントを示しています。

```
aws redshift-data list-statements 
    --status ALL
```

次は、レスポンスの例です。

```
{
    "Statements": [
        {
            "CreatedAt": 1598306924.632,
            "Id": "d9b6c0c9-0747-4bf4-b142-e8883122f766",
            "QueryString": "select * from stl_query limit 1",
            "Status": "FINISHED",
            "UpdatedAt": 1598306926.667
        },
        {
            "CreatedAt": 1598311717.437,
            "Id": "e0ebd578-58b3-46cc-8e52-8163fd7e01aa",
            "QueryString": "select * from stl_query limit 1",
            "Status": "FAILED",
            "UpdatedAt": 1598311719.008
        },
        {
            "CreatedAt": 1598313683.65,
            "Id": "c361d4f7-8c53-4343-8c45-6b2b1166330c",
            "QueryString": "select * from stl_query limit 1",
            "Status": "ABORTED",
            "UpdatedAt": 1598313685.495
        },
        {
            "CreatedAt": 1598306653.333,
            "Id": "a512b7bd-98c7-45d5-985b-a715f3cfde7f",
            "QueryString": "select 1",
            "Status": "FINISHED",
            "UpdatedAt": 1598306653.992
        }
    ]
}
```

# SQL ステートメントに関するメタデータの記述を取得する
<a name="data-api-calling-cli-describe-statement"></a>

SQL ステートメントのメタデータの記述を取得するには、`aws redshift-data describe-statement` AWS CLI コマンドを使用します。このコマンドの実行の承認は、呼び出し元の IAM アクセス許可に基づいています。

次の AWS CLI コマンドは、SQL ステートメントを記述します。

```
aws redshift-data describe-statement 
    --id d9b6c0c9-0747-4bf4-b142-e8883122f766
```

次は、レスポンスの例です。

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": 1598306924.632,
    "Duration": 1095981511,
    "Id": "d9b6c0c9-0747-4bf4-b142-e8883122f766",
    "QueryString": "select * from stl_query limit 1",
    "RedshiftPid": 20859,
    "RedshiftQueryId": 48879,
    "ResultRows": 1,
    "ResultSize": 4489,
    "Status": "FINISHED",
    "UpdatedAt": 1598306926.667
}
```

次に、複数の SQL ステートメントで `batch-execute-statement` コマンドを実行した後の `describe-statement` レスポンスの例を示します。

```
{
    "ClusterIdentifier": "mayo",
    "CreatedAt": 1623979777.126,
    "Duration": 6591877,
    "HasResultSet": true,
    "Id": "b2906c76-fa6e-4cdf-8c5f-4de1ff9b7652",
    "RedshiftPid": 31459,
    "RedshiftQueryId": 0,
    "ResultRows": 2,
    "ResultSize": 22,
    "Status": "FINISHED",
    "SubStatements": [
        {
            "CreatedAt": 1623979777.274,
            "Duration": 3396637,
            "HasResultSet": true,
            "Id": "b2906c76-fa6e-4cdf-8c5f-4de1ff9b7652:1",
            "QueryString": "select 1;",
            "RedshiftQueryId": -1,
            "ResultRows": 1,
            "ResultSize": 11,
            "Status": "FINISHED",
            "UpdatedAt": 1623979777.903
        },
        {
            "CreatedAt": 1623979777.274,
            "Duration": 3195240,
            "HasResultSet": true,
            "Id": "b2906c76-fa6e-4cdf-8c5f-4de1ff9b7652:2",
            "QueryString": "select 2;",
            "RedshiftQueryId": -1,
            "ResultRows": 1,
            "ResultSize": 11,
            "Status": "FINISHED",
            "UpdatedAt": 1623979778.076
        }
    ],
    "UpdatedAt": 1623979778.183
}
```

# SQL ステートメントの結果を取得する
<a name="data-api-calling-cli-get-statement-result"></a>

実行された SQL ステートメントの結果を取得するには、`redshift-data get-statement-result` または `redshift-data get-statement-result-v2` AWS CLI コマンドを使用します。`get-statement-result` の結果は JSON 形式です。`get-statement-result-v2` の結果は CSV 形式です。レスポンスで受け取った `Id` を、`execute-statement`または`batch-execute-statement` に提供できます。`batch-execute-statement` によって実行された SQL ステートメントの `Id` 値は、`describe-statement` の結果で取得できます。この値には、`b2906c76-fa6e-4cdf-8c5f-4de1ff9b7652:2` のように、コロンとシーケンス番号が末尾に付きます。`batch-execute-statement` で複数の SQL ステートメントを実行する場合、各 SQL ステートメントには `describe-statement` に示されているような `Id` 値があります。このコマンドの実行の承認は、呼び出し元の IAM アクセス許可に基づいています。

次のステートメントは、`execute-statement` によって実行された SQL ステートメントの結果を返します。`ResultFormat` はデフォルトで `JSON` に設定されます。結果を取得するには、`get-statement-result` オペレーションを呼び出します。

```
aws redshift-data get-statement-result 
    --id d9b6c0c9-0747-4bf4-b142-e8883122f766
```

次のステートメントは、`batch-execute-statement`によって実行された 2 番目の SQL ステートメントの結果を返します。

```
aws redshift-data get-statement-result 
    --id b2906c76-fa6e-4cdf-8c5f-4de1ff9b7652:2
```

以下は、`get-statement-result` への呼び出しに対するレスポンスの例です。SQL 結果は、レスポンスの `Records` キーに JSON 形式で返されます。

```
{
    "ColumnMetadata": [
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "userid",
            "length": 0,
            "name": "userid",
            "nullable": 0,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "int4"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "query",
            "length": 0,
            "name": "query",
            "nullable": 0,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "int4"
        },
        {
            "isCaseSensitive": true,
            "isCurrency": false,
            "isSigned": false,
            "label": "label",
            "length": 0,
            "name": "label",
            "nullable": 0,
            "precision": 320,
            "scale": 0,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "bpchar"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "xid",
            "length": 0,
            "name": "xid",
            "nullable": 0,
            "precision": 19,
            "scale": 0,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "int8"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "pid",
            "length": 0,
            "name": "pid",
            "nullable": 0,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "int4"
        },
        {
            "isCaseSensitive": true,
            "isCurrency": false,
            "isSigned": false,
            "label": "database",
            "length": 0,
            "name": "database",
            "nullable": 0,
            "precision": 32,
            "scale": 0,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "bpchar"
        },
        {
            "isCaseSensitive": true,
            "isCurrency": false,
            "isSigned": false,
            "label": "querytxt",
            "length": 0,
            "name": "querytxt",
            "nullable": 0,
            "precision": 4000,
            "scale": 0,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "bpchar"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "label": "starttime",
            "length": 0,
            "name": "starttime",
            "nullable": 0,
            "precision": 29,
            "scale": 6,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "timestamp"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "label": "endtime",
            "length": 0,
            "name": "endtime",
            "nullable": 0,
            "precision": 29,
            "scale": 6,
            "schemaName": "",
            "tableName": "stll_query",
            "type": 93,
            "typeName": "timestamp"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "aborted",
            "length": 0,
            "name": "aborted",
            "nullable": 0,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "int4"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "insert_pristine",
            "length": 0,
            "name": "insert_pristine",
            "nullable": 0,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "int4"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "concurrency_scaling_status",
            "length": 0,
            "name": "concurrency_scaling_status",
            "nullable": 0,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "int4"
        }
    ],
    "Records": [
        [
            {
                "longValue": 1
            },
            {
                "longValue": 3
            },
            {
                "stringValue": "health"
            },
            {
                "longValue": 1023
            },
            {
                "longValue": 15279
            },
            {
                "stringValue": "dev"
            },
            {
                "stringValue": "select system_status from stv_gui_status;"
            },
            {
                "stringValue": "2020-08-21 17:33:51.88712"
            },
            {
                "stringValue": "2020-08-21 17:33:52.974306"
            },
            {
                "longValue": 0
            },
            {
                "longValue": 0
            },
            {
                "longValue": 6
            }
        ]
    ],
    "TotalNumRows": 1
}
```

次の例は、`execute-statement` によって実行され、結果を JSON 形式で返す SQL ステートメントを示しています。テーブル `testingtable` には整数列が 3 つ (col1、col2、col3) あり、3 つの行に値 (1、2、3)、(4、5、6)、および (7、8、9) が含まれています。

```
aws redshift-data execute-statement 
    --database dev 
    --sql "SELECT col1, col2, col3 FROM testingtable" 
    --cluster-id mycluster-test 
    --result-format JSON
```

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": "2024-04-02T16:45:25.144000+00:00",
    "Database": "dev",
    "DbUser": "IAMR:Administrator",
    "Id": "d468d942-6df9-4f85-8ae3-bac01a61aec3"
}
```

以下は、`get-statement-result` への呼び出しに対するレスポンスの例です。SQL 結果は、レスポンスの `Records` キーに JSON 形式で返されます。

```
aws redshift-data get-statement-result
    --id d468d942-6df9-4f85-8ae3-bac01a61aec3
```

```
{
    "Records": [
        [
            {
                "longValue": 1
            },
            {
                "longValue": 2
            },
            {
                "longValue": 3
            }
        ],
        [
            {
                "longValue": 4
            },
            {
                "longValue": 5
            },
            {
                "longValue": 6
            }
        ],
        [
            {
                "longValue": 7
            },
            {
                "longValue": 8
            },
            {
                "longValue": 9
            }
        ]
    ],
    "ColumnMetadata": [
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "col1",
            "name": "col1",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "public",
            "tableName": "testingtable",
            "typeName": "int4",
            "length": 0
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "col2",
            "name": "col2",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "public",
            "tableName": "testingtable",
            "typeName": "int4",
            "length": 0
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "col3",
            "name": "col3",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "public",
            "tableName": "testingtable",
            "typeName": "int4",
            "length": 0
        }
    ],
    "TotalNumRows": 3
}
```

次の例は、`execute-statement` によって実行され、結果を CSV 形式で返す SQL ステートメントを示しています。テーブル `testingtable` には整数列が 3 つ (col1、col2、col3) あり、3 つの行に値 (1、2、3)、(4、5、6)、および (7、8、9) が含まれています。

```
aws redshift-data execute-statement 
    --database dev 
    --sql "SELECT col1, col2, col3 FROM testingtable" 
    --cluster-id mycluster-test 
    --result-format CSV
```

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": "2024-04-02T16:45:25.144000+00:00",
    "Database": "dev",
    "DbUser": "IAMR:Administrator",
    "Id": "d468d942-6df9-4f85-8ae3-bac01a61aec3"
}
```

以下は、`get-statement-result-v2` への呼び出しに対するレスポンスの例です。SQL 結果は、レスポンスの `Records` キーに CSV 形式で返されます。行はキャリッジリターンと改行 (\$1r\$1n) で区切られます。`Records` で返される最初の行は列ヘッダーです。CSV 形式で返される結果は 1 MB 単位で返され、各チャンクには最大 1MB 分の任意の数の行が含まれます。

```
aws redshift-data get-statement-result-v2
    --id d468d942-6df9-4f85-8ae3-bac01a61aec3
```

```
{
    "Records": [
        {
            "CSVRecords": "col1,col2,col3\r\n1,2,3\r\n4,5,6\r\n7,8,9\r\n"
        }
    ],
    "ColumnMetadata": [
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "col1",
            "name": "col1",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "public",
            "tableName": "testingtable",
            "typeName": "int4",
            "length": 0
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "col2",
            "name": "col2",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "public",
            "tableName": "testingtable",
            "typeName": "int4",
            "length": 0
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "col3",
            "name": "col3",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "public",
            "tableName": "testingtable",
            "typeName": "int4",
            "length": 0
        }
    ],
    "TotalNumRows": 3,
    "ResultFormat": "csv"
}
```

# テーブルの説明
<a name="data-api-calling-cli-describe-table"></a>

`aws redshift-data describe-table` AWS CLI コマンドを使用して、テーブルを説明するメタデータを取得します。

次の AWS CLI コマンドは、クラスターに対して SQL ステートメントを実行し、テーブルを記述するメタデータを返します。この例では、AWS Secrets Managerの認証方法を使用します。

```
aws redshift-data describe-table  
    --cluster-identifier mycluster-test 
    --database dev 
    --schema information_schema 
    --table sql_features 
    --secret-arn arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn
```

次は、レスポンスの例です。

```
{
    "ColumnList": [
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "length": 2147483647,
            "name": "feature_id",
            "nullable": 1,
            "precision": 2147483647,
            "scale": 0,
            "schemaName": "information_schema",
            "tableName": "sql_features",
            "typeName": "character_data"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "length": 2147483647,
            "name": "feature_name",
            "nullable": 1,
            "precision": 2147483647,
            "scale": 0,
            "schemaName": "information_schema",
            "tableName": "sql_features",
            "typeName": "character_data"
        }     
    ]
}
```

次の AWS CLI コマンドは、テーブルを記述するクラスターに対して SQL ステートメントを実行します。この例では、一時的な認証情報認証方法を使用します。

```
aws redshift-data describe-table 
    --db-user myuser 
    --cluster-identifier mycluster-test 
    --database dev 
    --schema information_schema 
    --table sql_features
```

次は、レスポンスの例です。

```
{
    "ColumnList": [
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "length": 2147483647,
            "name": "feature_id",
            "nullable": 1,
            "precision": 2147483647,
            "scale": 0,
            "schemaName": "information_schema",
            "tableName": "sql_features",
            "typeName": "character_data"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "length": 2147483647,
            "name": "feature_name",
            "nullable": 1,
            "precision": 2147483647,
            "scale": 0,
            "schemaName": "information_schema",
            "tableName": "sql_features",
            "typeName": "character_data"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "length": 2147483647,
            "name": "sub_feature_id",
            "nullable": 1,
            "precision": 2147483647,
            "scale": 0,
            "schemaName": "information_schema",
            "tableName": "sql_features",
            "typeName": "character_data"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "length": 2147483647,
            "name": "sub_feature_name",
            "nullable": 1,
            "precision": 2147483647,
            "scale": 0,
            "schemaName": "information_schema",
            "tableName": "sql_features",
            "typeName": "character_data"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "length": 2147483647,
            "name": "is_supported",
            "nullable": 1,
            "precision": 2147483647,
            "scale": 0,
            "schemaName": "information_schema",
            "tableName": "sql_features",
            "typeName": "character_data"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "length": 2147483647,
            "name": "is_verified_by",
            "nullable": 1,
            "precision": 2147483647,
            "scale": 0,
            "schemaName": "information_schema",
            "tableName": "sql_features",
            "typeName": "character_data"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "length": 2147483647,
            "name": "comments",
            "nullable": 1,
            "precision": 2147483647,
            "scale": 0,
            "schemaName": "information_schema",
            "tableName": "sql_features",
            "typeName": "character_data"
        }
    ]
}
```

# クラスター内のデータベースの一覧表示
<a name="data-api-calling-cli-list-databases"></a>

`aws redshift-data list-databases` AWS CLI コマンドを使用して、クラスター内のデータベースを一覧表示します。

次の AWS CLI コマンドは、クラスターに対して SQL ステートメントを実行し、データベースを一覧表示します。この例では、AWS Secrets Managerの認証方法を使用します。

```
aws redshift-data list-databases  

    --secret-arn arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn 
    --cluster-identifier mycluster-test 
    --database dev
```

次は、レスポンスの例です。

```
{
    "Databases": [
        "dev"
    ]
}
```

次の AWS CLI コマンドは、クラスターに対して SQL ステートメントを実行し、データベースを一覧表示します。この例では、一時的な認証情報認証方法を使用します。

```
aws redshift-data list-databases  
    --db-user myuser 
    --cluster-identifier mycluster-test 
    --database dev
```

次は、レスポンスの例です。

```
{
    "Databases": [
        "dev"
    ]
}
```

# データベース内のスキーマの一覧表示
<a name="data-api-calling-cli-list-schemas"></a>

`aws redshift-data list-schemas` AWS CLI コマンドを使用して、データベース内のスキーマを一覧表示します。

次の AWS CLI コマンドは、クラスターに対して SQL ステートメントを実行し、データベース内のスキーマを一覧表示します。この例では、AWS Secrets Managerの認証方法を使用します。

```
aws redshift-data list-schemas 
    --secret-arn arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn 
    --cluster-identifier mycluster-test 
    --database dev
```

次は、レスポンスの例です。

```
{
    "Schemas": [
        "information_schema",
        "pg_catalog",
        "pg_internal",
        "public"
    ]
}
```

次の AWS CLI コマンドは、クラスターに対して SQL ステートメントを実行し、データベース内のスキーマを一覧表示します。この例では、一時的な認証情報認証方法を使用します。

```
aws redshift-data list-schemas 
    --db-user mysuser 
    --cluster-identifier mycluster-test 
    --database dev
```

次は、レスポンスの例です。

```
{
    "Schemas": [
        "information_schema",
        "pg_catalog",
        "pg_internal",
        "public"
    ]
}
```

# データベース内のテーブルの一覧表示
<a name="data-api-calling-cli-list-tables"></a>

`aws redshift-data list-tables` AWS CLI コマンドを使用して、データベース内のテーブルを一覧表示します。

次の AWS CLI コマンドは、クラスターに対して SQL ステートメントを実行し、データベース内のテーブルを一覧表示します。この例では、AWS Secrets Managerの認証方法を使用します。

```
aws redshift-data list-tables 
    --secret-arn arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn 
    --cluster-identifier mycluster-test 
    --database dev 
    --schema information_schema
```

次は、レスポンスの例です。

```
{
    "Tables": [
        {
            "name": "sql_features",
            "schema": "information_schema",
            "type": "SYSTEM TABLE"
        },
        {
            "name": "sql_implementation_info",
            "schema": "information_schema",
            "type": "SYSTEM TABLE"
        }
}
```

次の AWS CLI コマンドは、クラスターに対して SQL ステートメントを実行し、データベース内のテーブルを一覧表示します。この例では、一時的な認証情報認証方法を使用します。

```
aws redshift-data list-tables  

     --db-user myuser 
     --cluster-identifier mycluster-test 
     --database dev 
     --schema information_schema
```

次は、レスポンスの例です。

```
{
    "Tables": [
        {
            "name": "sql_features",
            "schema": "information_schema",
            "type": "SYSTEM TABLE"
        },
        {
            "name": "sql_implementation_info",
            "schema": "information_schema",
            "type": "SYSTEM TABLE"
        }
    ]
}
```

# Amazon Redshift Data API のトラブルシューティングに関する問題
<a name="data-api-troubleshooting"></a>

Data API に関する問題のトラブルシューティングには、「一般的なエラーメッセージ」というタイトルの以下のセクションを使用します。

**Topics**
+ [クエリのパケットが大きすぎる](#data-api-troubleshooting-packet-too-large)
+ [データベース応答がサイズ制限を超えている](#data-api-troubleshooting-response-size-too-large)

## クエリのパケットが大きすぎる
<a name="data-api-troubleshooting-packet-too-large"></a>

クエリのパケットが大きすぎることを示すエラーが表示された場合は、通常、ローに対して返される結果セットが大きすぎます。Data API のサイズ制限は、データベースから返る結果セットの 1 行あたり 64 KB です。

この問題を解決するには、結果セットの各行が 64 KB 以下であることを確認します。

## データベース応答がサイズ制限を超えている
<a name="data-api-troubleshooting-response-size-too-large"></a>

データベース応答がサイズ制限を超えていることを示すエラーが表示される場合、通常、データベースから返る結果セットのサイズが大きすぎます。Data API の制限は、データベースより返る結果セットで 500 MB です。

この問題を解決するには、Data API への呼び出しで返るデータが 500 MB 以下になるようにします。500 MB を超えるデータを返す必要がある場合は、クエリで `LIMIT` 句を使用して、複数のステートメント呼び出しを行います。

# Amazon EventBridge を使用した Amazon Redshift Data 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` に相当するものがアタッチされている必要があります。また、Data 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 を使用して、Amazon Redshift クラスターに対する 1 つの SQL ステートメントの実行に使用する EventBridge ルールを作成します。

```
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 を使用して、Amazon Redshift Serverless ワークグループに対する 1 つの SQL ステートメントの実行に使用する EventBridge ルールを作成します。

```
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 を使用して、Amazon Redshift クラスターに対する複数の SQL ステートメントの実行に使用する EventBridge ルールを作成します。

```
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 を使用して、Amazon Redshift Serverless ワークグループに対する複数の SQL ステートメントの実行に使用する EventBridge ルールを作成します。

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

# データ API のモニタリング
<a name="data-api-monitoring"></a>

モニタリングは、Data API およびその他の AWS ソリューションの信頼性、可用性、およびパフォーマンスを維持する上で重要な部分です。Data API を監視したり、問題が発生したときに報告したり、必要に応じて自動アクションを実行するため、AWSには次のモニタリングツールが用意されています。
+ Amazon EventBridge を使用して、AWSのサービスを自動化し、アプリケーションの可用性の問題やリソースの変更などのシステムイベントに自動的に対応できます。AWS サービスからのイベントは、ほぼリアルタイムで EventBridge に配信されます。簡単なルールを記述して、注目するイベントと、イベントがルールに一致した場合に自動的に実行するアクションを指定できます。詳細については、[Amazon EventBridge ユーザーガイド](https://docs.aws.amazon.com/eventbridge/latest/userguide/)を参照してください。
+ AWS CloudTrail は、AWSアカウントにより、またはそのアカウントに代わって行われた API コールや関連イベントを取得し、指定した Amazon S3 バケットにログファイルを配信します。AWS を呼び出したユーザーとアカウント、呼び出し元の IP アドレス、および呼び出し日時を特定できます。Amazon Redshift と AWS CloudTrail の統合の詳細については、「[CloudTrail によるログ記録](https://docs.aws.amazon.com/redshift/latest/mgmt/logging-with-cloudtrail.html)」を参照してください。CloudTrail の詳細については、「[AWS CloudTrail ユーザーガイド](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)」を参照してください。

**Topics**
+ [Amazon EventBridge での Amazon Redshift データ API のイベントのモニタリング](data-api-monitoring-events.md)

# Amazon EventBridge での Amazon Redshift データ API のイベントのモニタリング
<a name="data-api-monitoring-events"></a>

お客様独自のアプリケーション、Software as a Service (SaaS) アプリケーション、AWSサービスからのリアルタイムデータのストリームを配信する EventBridge で、Data API イベントをモニタリングできます。EventBridge では、データは AWS Lambda や Amazon SNS などのターゲットにルーティングされます。これらのイベントは、CloudWatch Events に表示されるイベントと同じで、AWSリソースの変更を記述するシステムイベントのストリームをほぼリアルタイムで配信します。イベントは、Amazon Redshift データベースを含むアカウントに送信されます。例えば、別のアカウントでロールを引き受ける場合、イベントはそのアカウントに送信されます。詳細については、*Amazon EventBridge ユーザーガイド*の「[Amazon EventBridge events](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html)」を参照してください。

データ API イベントは、`ExecuteStatement`または `BatchExecuteStatement` API オペレーションが `WithEvent` オプションを `true` に設定するときに送信されます。`state` フィールドには次のいずれかの値が含まれます。
+ ABORTED – クエリの実行がユーザーによって停止されました。
+ FAILED – クエリの実行に失敗しました。
+ FINISHED – クエリの実行が終了しました。

イベントは保証に基づいて配信されます。詳細については、*Amazon EventBridge ユーザーガイド*の「[Events from AWS services](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html)」を参照してください。

## データ API 終了イベントの例
<a name="data-api-monitoring-events-finished"></a>

以下の例は、`ExecuteStatement`API オペレーションが終了したときの Data API のイベントを示しています。この例では、`test.testtable`という名前のステートメントの実行が終了しました。

```
{
    "version": "0",
    "id": "18e7079c-dd4b-dd64-caf9-e2a31640dab0",
    "detail-type": "Redshift Data Statement Status Change",
    "source": "aws.redshift-data",
    "account": "123456789012",
    "time": "2020-10-01T21:14:26Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:redshift:us-east-1:123456789012:cluster:redshift-cluster-1"
    ],
    "detail": {
        "principal": "arn:aws:iam::123456789012:user/myuser",
        "statementName": "test.testtable",
        "statementId": "dd2e1ec9-2ee3-49a0-819f-905fa7d75a4a",
        "redshiftQueryId": -1,
        "state": "FINISHED",
        "rows": 1,
        "expireAt": 1601673265
    }
}
```

# Amazon Redshift Data API で AWS KMS を使用する
<a name="data-api-kms"></a>

Amazon Redshift クラスターまたは Redshift Serverless ワークグループをカスタマーマネージドキーで暗号化すると、Amazon Redshift Data API は同じカスタマーマネージドキーを使用してクエリと結果を保存および暗号化します。

Data API は、デフォルトでデータを暗号化して、クエリテキストやクエリ結果などの機密情報を保護します。この保護には、AWS が所有する AWS KMS 暗号化キーを使用します。

保管中のデータをデフォルトで暗号化して、機密データの保護に伴う運用上のオーバーヘッドと複雑な作業を軽減します。このアプローチにより、厳格な暗号化のコンプライアンスと規制要件に対応する安全なアプリケーションを構築できます。

## AWS KMS での権限の使用
<a name="data-api-kms-grants"></a>

Data API でカスタマーマネージドキーを使用するには権限が必要です。

カスタマーマネージドキーで暗号化されたクラスターに対して `ExecuteStatement` または `BatchExecuteStatement` を呼び出すと、Amazon Redshift は AWS KMS に [https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) リクエストを送信してユーザーに代わって権限を作成します。AWS KMS は権限を使用して、アカウント内の KMS キーへのアクセス権を Data API に付与します。

DATA API では、以下のオペレーションでカスタマーマネージドキーを使用するのに権限が必要です。
+ [https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) リクエストを AWS KMS に送信して、カスタマーマネージドキーを使用してクエリメタデータを暗号化する。
+ [https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) リクエストを AWS KMS に送信して、カスタマーマネージドキーで暗号化されたデータキーを生成する。
+ [https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) リクエストを AWS KMS に送信して、暗号化されたデータキーを復号して、データを暗号化できるようにする。

権限へのアクセス許可の取り消し、またはカスタマーマネージドキーへの Amazon Redshift のアクセス許可の削除は、いつでも実行できます。これを行うと、DATA API はカスタマーマネージドキーによって暗号化されたデータにアクセスできなくなり、そのデータに依存しているオペレーションが影響を受けます。例えば、権限の取り消し後にクエリ結果を取得したり、クエリのステータスを追跡しようとすると、Data API は `AccessDeniedException` を返します。

## カスタマーマネージドキーの KMS キーポリシー
<a name="data-api-kms-policy"></a>

キーポリシーは、カスタマーマネージドキーへのアクセスを制御します。すべてのカスタマーマネージドキーには、キーポリシーが 1 つだけ必要です。このポリシーには、そのキーを使用できるユーザーとその使用方法を決定するステートメントが含まれています。キーポリシーは、カスタマーマネージドキーの作成時に指定できます。詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[カスタマーマネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-mgn-key)」を参照してください。

Data API でカスタマーマネージドキーを使用するには、まず Amazon Redshift へのアクセスを許可する必要があります。キーポリシーで次の API オペレーションを許可する必要があります。
+ `kms:CreateGrant` - カスタマーマネージドキーに許可を追加します。この権限は、指定された AWS KMS キーへのアクセスを制御します。これにより、必要な許可オペレーションに対し Amazon Redshift がアクセスできるようにします。詳細については、「[AWS KMS での権限の使用](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations)」を参照してください。

以下は、キーポリシーの例です。

```
"Statement":[
   {
      "Sid":"Allow access to principals authorized to use Amazon Redshift",
      "Effect":"Allow",
      "Principal":{
         "AWS":"*"
      },
      "Action":[
         "kms:DescribeKey",
         "kms:CreateGrant"
      ],
      "Resource":"*",
      "Condition":{
         "StringEquals":{
            "kms:ViaService":"redshift.amazonaws.com",
            "kms:CallerAccount":"111122223333"
         }
      }
   },
   {
      "Sid":"AllowKeyAdministratorsAccess",
      "Effect":"Allow",
      "Principal":{
         "AWS":"arn:aws:iam::111122223333:role/ExampleAdminRole"
      },
      "Action":"kms:*",
      "Resource":"*"
   },
   {
      "Sid":"AllowKeyUseForExampleRole",
      "Effect":"Allow",
      "Principal":{
         "AWS":"arn:aws:iam::111122223333:role/ExampleUserRole"
      },
      "Action":[
         "kms:Encrypt",
         "kms:Decrypt",
         "kms:ReEncrypt*",
         "kms:GenerateDataKey*",
         "kms:DescribeKey"
      ],
      "Resource":"*"
   }
]
```

## データ API 暗号化コンテキスト
<a name="data-api-kms-encryption"></a>

暗号化コンテキストとは、データに関する追加のコンテキスト情報を含む、(オプションの) キーと値のペアのセットです。AWS KMS は、暗号化コンテキストを追加の認証済みデータとして使用し、認証付き暗号化をサポートします。データの暗号化リクエストに暗号化コンテキストを組み込むと、AWS KMS は暗号化コンテキストを暗号化後のデータにバインドします。データを復号するには、そのリクエストに同じ暗号化コンテキストを含める必要があります。

Data API は、プロビジョニングされたクラスターのすべての AWS KMS 暗号化オペレーションで同じ 3 つの暗号化コンテキストのキーと値のペアを使用します。
+ `aws:redshift:arn` – クラスターの Amazon リソースネーム (ARN) (文字列)
+ `aws:redshift:createtime` – クラスターの作成をリクエストしたときのタイムスタンプ
+ `serviceName` – `RedshiftDataAPI`

```
"EncryptionContextSubset": {
    "aws:redshift:arn": "arn:aws:redshift:us-east-1:123456789012:cluster:redshift-cluster",
    "aws:redshift:createtime": "20250815T0000Z",
    "serviceName": "RedshiftDataAPI",
}
```

Data API は、サーバーレスワークグループのすべての AWS KMS 暗号化オペレーションで 2 つの暗号化コンテキストのキーと値のペアを使用します。
+ `aws:redshift-serverless:arn` – 名前空間の Amazon リソースネーム (ARN)
+ `serviceName` – RedshiftDataAPI

```
"EncryptionContextSubset": {
    "aws:redshift-serverless:arn": "arn:aws:redshift-serverless:us-east-1:123456789012:namespace:12345678-1234-1234-1234-123456789012",
    "serviceName": "RedshiftDataAPI"
}
```

暗号化の詳細については、「[AWS KMS の暗号化の詳細の概要](https://docs.aws.amazon.com/kms/latest/cryptographic-details/intro.html)」を参照してください。Amazon Redshift と AWS KMS 統合の詳細については、「[Amazon Redshift が AWS KMS を使用する方法](https://docs.aws.amazon.com/kms/latest/developerguide/services-redshift.html)」を参照してください。

# Amazon Sagemaker Unified Studio を使用して Amazon Redshift と SageMaker Lakehouse のデータベースをクエリする
<a name="sagemaker-unified-studio"></a>

Amazon SageMaker Unified Studio は、オフコンソールの開発環境を提供し、SageMaker Lakehouse、Amazon Redshift、および SQL 分析用の Amazon Athena のデータに対する SQL 分析をサポートします。管理者の URL を使用して Amazon SageMaker Unified Studio に移動し、SSO または AWS 認証情報を使用してログインします。最初のプロジェクトの設定の詳細については、「*Amazon SageMaker Unified Studio ユーザーガイド*」の「[Getting started](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/getting-started.html)」を参照してください。

Amazon SageMaker Unified Studio では、[クエリエディタ](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/query-editor-navigate.html)を使用して Amazon Redshift と Amazon Athena を実行して [SQL 分析](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/sql-query.html)を実行できます。クエリエディタを使用して、クエリの記述と実行、結果の表示、チームとの作業の共有ができます。AWS アカウント (同じアカウント内および他の AWS アカウント 間で) の Redshift データウェアハウスに対してクエリを実行し、同じインターフェイスを使用して Redshift と Athena の両方の SQL クエリを構築し、Amazon Managed Workflows for Apache Airflow を使用して SQL クエリをスケジュールします。Amazon Q 生成 SQL を使用して、自然言語から SQL を生成することもできます。