

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# プロビジョニングされたクラスター用の Amazon Redshift 管理インターフェイスの使用
<a name="using-aws-sdk"></a>

**注記**  
このトピックでは、プロビジョニングされたクラスター用の Amazon Redshift 管理インターフェイスの使用について説明します。Amazon Redshift Serverless と Amazon Redshift Data API には、同様の管理インターフェイスがあります。

Amazon Redshift は、AWS SDK、AWS Command Line Interface (AWS CLI)、および Amazon Redshift 管理 API といった、Amazon Redshift クラスターの作成、管理、削除に使用できる複数の管理インターフェイスをサポートしています。

**Amazon Redshift API** – リクエストを送信することでこの Amazon Redshift 管理 API を呼び出すことができます。リクエストは、`GET` という名前のパラメータで HTTP 動詞 `POST` または `Action` を使用する HTTP または HTTPS リクエストです。Amazon Redshift API の呼び出しは、Amazon Redshift サービスにアクセスする最も直接的な方法です。しかし、エラー処理やリクエストに署名するハッシュの生成など、低レベルの詳細な作業をアプリケーションで処理する必要があります。
+ Amazon Redshift API リクエストの構築と署名の詳細については、「[HTTP リクエストへの署名](amazon-redshift-signing-requests.md)」を参照してください。
+ Amazon Redshift API アクションと Amazon Redshift のデータ型については、[Amazon Redshift API リファレンス](https://docs.aws.amazon.com/redshift/latest/APIReference/Welcome.html)を参照してください。

**AWS SDK** – AWS SDK は Amazon Redshift クラスター関連のオペレーションに使用できます。一部の SDK ライブラリは基礎となる Amazon Redshift API をラップします。このようなライブラリは、特定のプログラミング言語に API 機能を統合し、多くの低レベルの詳細な作業 (署名の計算、リクエスト再試行の処理、エラー処理など) を処理します。SDK ライブラリのラッパー関数を呼び出すことで、Amazon Redshift クラスターを管理するアプリケーションの作成プロセスが大幅に簡易化されます。
+ Amazon Redshift は、AWS SDKs for Java、.NET、PHP、Python、Ruby、および Node.js でサポートされています。Amazon Redshift のラッパー関数の詳細については、各 SDK のリファレンスマニュアルを参照してください。AWS SDK のリストとドキュメントのリンクについては、「[Tools for Amazon Web Services](https://aws.amazon.com/tools/)」を参照してください。
+ このガイドでは、Java SDK を使用して Amazon Redshift を操作する例について説明します。より一般的な AWS SDK コード例については、「[AWS SDK を使用した Amazon Redshift のコード例](service_code_examples.md)」を参照してください。

**AWS CLI** – CLI では、Windows、Mac、および Linux コンピュータから AWS サービスを管理する際に使用できるコマンドラインツールのセットが提供されています。AWS CLI には、Amazon Redshift API アクションに基づくコマンドが含まれています。
+ Amazon Redshift CLI のインストールとセットアップの詳細については、[Amazon Redshift CLI のセットアップ](setting-up-rs-cli.md) を参照してください。
+ Amazon Redshift CLI コマンドのリファレンス資料については、*AWS CLI リファレンス*の「[Amazon Redshift](https://docs.aws.amazon.com/cli/latest/reference/redshift/index.html)」を参照してください。

# このサービスを AWS SDK で使用する
<a name="sdk-general-information-section"></a>

AWS Software Development Kit (SDK) は、多くの一般的なプログラミング言語で使用できます。各 SDK には、デベロッパーが好みの言語でアプリケーションを簡単に構築できるようになる API、コード例、およびドキュメントが提供されています。


| SDK ドキュメント | コードの例 | 
| --- | --- | 
| [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/sdk-for-cpp) | [AWS SDK for C\$1\$1 コードの例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp) | 
| [AWS CLI](https://docs.aws.amazon.com/cli) | [AWS CLI コードの例](https://docs.aws.amazon.com/code-library/latest/ug/cli_2_code_examples.html) | 
| [AWS SDK for Go](https://docs.aws.amazon.com/sdk-for-go) | [AWS SDK for Go コードの例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/gov2) | 
| [AWS SDK for Java](https://docs.aws.amazon.com/sdk-for-java) | [AWS SDK for Java コードの例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2) | 
| [AWS SDK for JavaScript](https://docs.aws.amazon.com/sdk-for-javascript) | [AWS SDK for JavaScript コードの例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3) | 
| [AWS SDK for Kotlin](https://docs.aws.amazon.com/sdk-for-kotlin) | [AWS SDK for Kotlin コードの例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/kotlin) | 
| [AWS SDK for .NET](https://docs.aws.amazon.com/sdk-for-net) | [AWS SDK for .NET コードの例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3) | 
| [AWS SDK for PHP](https://docs.aws.amazon.com/sdk-for-php) | [AWS SDK for PHP コードの例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php) | 
| [AWS Tools for PowerShell](https://docs.aws.amazon.com/powershell) | [AWS Tools for PowerShell コードの例](https://docs.aws.amazon.com/code-library/latest/ug/powershell_5_code_examples.html) | 
| [AWS SDK for Python (Boto3)](https://docs.aws.amazon.com/pythonsdk) | [AWS SDK for Python (Boto3) コードの例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python) | 
| [AWS SDK for Ruby](https://docs.aws.amazon.com/sdk-for-ruby) | [AWS SDK for Ruby コードの例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/ruby) | 
| [AWS SDK for Rust](https://docs.aws.amazon.com/sdk-for-rust) | [AWS SDK for Rust コードの例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1) | 
| [AWS SDK for SAP ABAP](https://docs.aws.amazon.com/sdk-for-sapabap) | [AWS SDK for SAP ABAP コードの例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/sap-abap) | 
| [AWS SDK for Swift](https://docs.aws.amazon.com/sdk-for-swift) | [AWS SDK for Swift コードの例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/swift) | 

**可用性の例**  
必要なものが見つからなかった場合。このページの下側にある [**Provide feedback**] リンクから、コードの例をリクエストしてください。

# HTTP リクエストへの署名
<a name="amazon-redshift-signing-requests"></a>

Amazon Redshift では、管理 API に送信するすべてのリクエストが署名によって認証されている必要があります。このトピックでは、リクエストに署名する方法について説明します。

いずれかの AWS ソフトウェア開発キット (SDK) または AWS Command Line Interface を使用する場合、リクエストは自動的に署名されるため、このセクションは省略してかまいません。AWS SDK の使用方法の詳細については、「[プロビジョニングされたクラスター用の Amazon Redshift 管理インターフェイスの使用](using-aws-sdk.md)」を参照してください。Amazon Redshift Command Line Interface の使用に関する詳細については、[Amazon Redshift コマンドラインリファレンス](https://docs.aws.amazon.com/cli/latest/reference/redshift/index.html)をご覧ください。

リクエストに署名するには、暗号化ハッシュ関数を使用してデジタル署名を計算します。暗号化ハッシュは、入力データから一意のハッシュ値生成して返す関数です。ハッシュ関数への入力には、リクエストのテキストと、一時的な認証情報から取得できるシークレットアクセスキーが含まれます。ハッシュ関数から返されるハッシュ値をリクエストに署名として含めます。署名は、リクエストの `Authorization` ヘッダーの一部です。

**注記**  
AWS マネジメントコンソール の外部で AWS を操作するには、プログラマチックアクセス権が必要です。プログラムによるアクセス権を付与する方法は、AWS にアクセスしているユーザーのタイプによって異なります。  
ユーザーにプログラムによるアクセス権を付与するには、以下のいずれかのオプションを選択します。  


****  

| プログラムによるアクセス権を必要とするユーザー | 目的 | 方法 | 
| --- | --- | --- | 
| IAM | (推奨) 一時的な認証情報としてコンソール認証情報を使用して、AWS CLI、AWS SDK、または AWS API へのプログラマチックリクエストに署名します。 |  使用するインターフェイスの指示に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/amazon-redshift-signing-requests.html)  | 
|  ワークフォースアイデンティティ (IAM アイデンティティセンターで管理されているユーザー)  | 一時的な認証情報を使用して、AWS CLI、AWS SDK、または AWS API へのプログラムによるリクエストに署名します。 |  使用するインターフェイスの指示に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/amazon-redshift-signing-requests.html)  | 
| IAM | 一時的な認証情報を使用して、AWS CLI、AWS SDK、または AWS API へのプログラムによるリクエストに署名します。 | IAM ユーザーガイドの「[AWS リソースでの一時的な認証情報の使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)」の指示に従ってください。 | 
| IAM | (非推奨)長期的な認証情報を使用して、AWS CLI、AWS SDK、または AWS API へのプログラムによるリクエストに署名します。 |  使用するインターフェイスの指示に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/amazon-redshift-signing-requests.html)  | 

Amazon Redshift は、リクエストを受け取ると、リクエストの署名に使用されたものと同じハッシュ関数と入力データを使用して署名を再計算します。再計算された署名がリクエストに含まれる署名と一致した場合、Amazon Redshift はリクエストを処理します。それ以外の場合、リクエストは拒否されます。

Amazon Redshift では、[AWS 署名バージョン 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) を使用した認証がサポートされています。署名を計算するプロセスは 3 つのタスクで構成されます。これらのタスクをこの後の例に示します。
+   [タスク 1: 正規リクエストを作成する](https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html#create-canonical-request)

  HTTP リクエストを正規形式に変換します。正規形式を使用する必要がある理由は、送信した署名と比較するために、Amazon Redshift で同じ正規形式を使用して署名が計算されるためです。
+  [タスク 2: 署名文字列を作成する](https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html#create-string-to-sign)

  暗号化ハッシュ関数への入力値の 1 つとして使用する文字列を作成します。*署名文字列*と呼ばれる文字列は、ハッシュアルゴリズムの名前、要求日付、*認証情報スコープ*の文字列、および前のタスクで正規化されたリクエストを結合したものです。*認証情報スコープ*の文字列自体は、日付、リージョン、およびサービス情報を結合したものです。
+   [タスク 3: 署名を計算する](https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html#calculate-signature)

  2 つの入力文字列 (署名文字列と*派生キー*) を受け取る暗号化ハッシュ関数を使用して、リクエストの署名を計算します。シークレットアクセスキーから、認証情報スコープの文字列を使用して一連のハッシュベースのメッセージ認証コード (HMAC-SHA256) を作成することで、派生キーが計算されます。

## 署名の計算例
<a name="example-signature-calculation"></a>

次の例に、[CreateCluster](https://docs.aws.amazon.com/redshift/latest/APIReference/API_CreateCluster.html) リクエストの署名を作成する詳細な手順を示します。この例を参考にして実際の署名の計算方法を確認できます。その他の参考計算例は、「IAM ユーザーガイド」の[「リクエスト署名の例」セクション](https://docs.aws.amazon.com/IAM/latest/UserGuide/signature-v4-examples.html)に記載されています。

GET または POST リクエストを使用してリクエストを Amazon Redshift に送信できます。この 2 つの違いとして、GET リクエストではパラメータがクエリ文字列パラメータとして送信されるのに対し、POST リクエストではパラメータがリクエストの本文に含まれます。次の例は POST リクエストを示しています。

例では、次のように想定しています。
+ リクエストのタイムスタンプは `Fri, 07 Dec 2012 00:00:00 GMT`
+ エンドポイントは米国東部 (バージニア北部) リージョン `us-east-1`

汎用リクエスト構文: 

```
https://redshift.us-east-1.amazonaws.com/
   ?Action=CreateCluster
   &ClusterIdentifier=examplecluster
   &MasterUsername=masteruser
   &MasterUserPassword=12345678Aa
   &NumberOfNode=2
   &NodeType=dc2.large
   &Version=2012-12-01
   &x-amz-algorithm=AWS4-HMAC-SHA256
   &x-amz-credential=AKIAIOSFODNN7EXAMPLE/20121207/us-east-1/redshift/aws4_request
   &x-amz-date=20121207T000000Z
   &x-amz-signedheaders=content-type;host;x-amz-date
```

「[タスク 1: 正規リクエストを作成する](#SignatureCalculationTask1)」で計算されるリクエストの正規形式は次のとおりです。

```
POST
/

content-type:application/x-www-form-urlencoded; charset=utf-8
host:redshift.us-east-1.amazonaws.com
x-amz-date:20121207T000000Z

content-type;host;x-amz-date
55141b5d2aff6042ccd9d2af808fdf95ac78255e25b823d2dbd720226de1625d
```

正規リクエストの最後の行はリクエストボディのハッシュです。この API にはクエリパラメータがないため、正規リクエストの 3 行目は空です。

「[タスク 2: 署名する文字列を作成する](#SignatureCalculationTask2)」で署名する文字列は次のとおりです。

```
AWS4-HMAC-SHA256
20121207T000000Z
20121207/us-east-1/redshift/aws4_request
06b6bef4f4f060a5558b60c627cc6c5b5b5a959b9902b5ac2187be80cbac0714
```

*署名する文字列*の最初の行はアルゴリズム、2 行目はタイムスタンプ、3 行目は*認証情報スコープ*、最後の行は「[タスク 1: 正規リクエストを作成する](#SignatureCalculationTask1)」で作成した正規リクエストのハッシュです。認証情報スコープで使用するサービス名は `redshift` です。

「[タスク 3: 署名を計算する](#SignatureCalculationTask3)」について、派生キーは次のように表されます。

```
derived key = HMAC(HMAC(HMAC(HMAC("AWS4" + YourSecretAccessKey,"20121207"),"us-east-1"),"redshift"),"aws4_request")
```

派生キーは連続するハッシュ関数として計算されます。上記の式の内側の HMAC ステートメントでは、**AWS4** というフレーズをシークレットアクセスキーと連結し、それをキーとして使用して「us-east-1」データをハッシュします。このハッシュの結果が次のハッシュ関数のキーになります。

派生キーを計算した後、署名する文字列と派生キーという 2 つの入力文字列を受け取るハッシュ関数でそのキーを使用します。例えば、シークレットアクセスキー `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY` を使用し、前述の文字列に署名する場合、計算された署名は次のようになります。

```
9a6b557aa9f38dea83d9215d8f0eae54100877f3e0735d38498d7ae489117920
```

最後のステップは、`Authorization` ヘッダーの構築です。デモンストレーションのアクセスキー `AKIAIOSFODNN7EXAMPLE` の場合、ヘッダーは次のとおりです (読みやすいように改行しています)。

```
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20121207/us-east-1/redshift/aws4_request, 
SignedHeaders=content-type;host;x-amz-date, 
Signature=9a6b557aa9f38dea83d9215d8f0eae54100877f3e0735d38498d7ae489117920
```

# Amazon Redshift CLI のセットアップ
<a name="setting-up-rs-cli"></a>

ここでは、Amazon Redshift の管理に使用するために、AWS CLI コマンドラインツールをセットアップして実行する方法について説明します。Amazon Redshift コマンドラインツールは、AWS Command Line Interface (AWS CLI) で実行されており、Python ([https://www.python.org/](https://www.python.org)) が順番に使用されます。AWS CLI は、Python をサポートするあらゆるオペレーティングシステムで実行できます。

## AWS Command Line Interface のインストール
<a name="setting-up.installing-the-tools"></a>

Amazon Redshift コマンドラインツールを初めて使用する場合、まず AWS CLI をセットアップし、Amazon Redshift CLI オプションを定義する設定ファイルを追加します。

別の AWS CLI サービス用に AWS を既にインストールして設定している場合は、この手順をスキップできます。

**AWS Command Line Interfaceをインストールするには**

1. 「[Install or update to the latest version of the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)」に進み、AWS CLI のインストール手順に従います。

   CLI アクセスには、アクセスキー ID とシークレットアクセスキーが必要です。長期のアクセスキーの代わりに一時的な認証情報をできるだけ使用します。一時的な認証情報には、アクセスキー ID、シークレットアクセスキー、および認証情報の失効を示すセキュリティトークンが含まれています。詳細については、*IAM ユーザーガイド*の「[AWS リソースを使用した一時的なセキュリティ認証情報の使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)」を参照してください。

1. アクセスキー、デフォルトのリージョン、コマンドの出力形式など、設定情報を含むファイルを作成します。次に、そのファイルを参照する `AWS_CONFIG_FILE` 環境変数を設定します。詳細な手順については、AWS Command Line Interface ユーザーガイドの「[Configuring the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)」にアクセスしてください。

1. テストコマンドを実行して、AWS CLI インターフェイスが機能していることを確認します。たとえば、次のコマンドを実行すると、AWS CLI のヘルプ情報が表示されます。

   ```
   aws help
   ```

   次のコマンドを実行すると、Amazon Redshift のヘルプ情報が表示されます。

   ```
   aws redshift help
   ```

Amazon Redshift CLI コマンドのリファレンス資料については、AWS CLI リファレンスの「[Amazon Redshift](https://docs.aws.amazon.com/cli/latest/reference/redshift/index.html)」にアクセスしてください。