プロビジョニングされたクラスターを Amazon Redshift Serverless へ移行する - Amazon Redshift

プロビジョニングされたクラスターを Amazon Redshift Serverless へ移行する

既存のプロビジョニングされたクラスターを Amazon Redshift Serverless に移行して、コンピューティングリソースのオンデマンドおよび自動スケーリングを有効にできます。プロビジョニングされたクラスターを Amazon Redshift Serverless に移行すると、使用するリソースに対してのみ料金を支払うことでコストを最適化し、ワークロードの需要に基づいて容量を自動的にスケーリングできます。移行の一般的なユースケースには、アドホッククエリの実行、定期的なデータ処理ジョブ、リソースの過剰プロビジョニングのない予測不可能なワークロードの処理などがあります。プロビジョニングされた Amazon Redshift クラスターをサーバーレスデプロイオプションに移行するには、次のタスクセットを実行します。

プロビジョニングされたクラスターのスナップショットを作成する

プロビジョニングされたクラスターから Amazon Redshift Serverless にデータを転送するには、プロビジョニングされたクラスターのスナップショットを作成し、Amazon Redshift Serverless でスナップショットを復元します。Amazon Redshift は、プロビジョニングされたクラスタースナップショットをサーバーレス名前空間に復元するときに、インターリーブキーを自動的に複合キーに変換します。

注記

データをサーバーレスワークグループに移行する前に、プロビジョニングしたクラスターのニーズが Amazon Redshift Serverless で選択した RPU の量と互換性があることを確認してください。

プロビジョニングされたクラスターのスナップショットを作成するには

  1. AWS Management Console にサインインして、 https://console.aws.amazon.com/redshiftv2/で Amazon Redshift コンソールを開きます。

  2. ナビゲーションメニューで、[Clusters] (クラスター)、[Snapshots] (スナップショット)、次に [Create snapshot] (スナップショットの作成) を選択します。

  3. スケジュール定義のプロパティを入力してから、[スナップショットの作成] を選択します。スナップショットが使用できるようになるまではしばらくかかります。

プロビジョニングされたクラスタースナップショットをサーバーレス名前空間に復元するには以下の内容を実行します。

  1. AWS Management Console にサインインして、 https://console.aws.amazon.com/redshiftv2/で Amazon Redshift コンソールを開きます。

  2. Amazon Redshift でプロビジョニングされたクラスターのコンソールを開き、[Clusters] (クラスター) ページ、[Snapshots] (スナップショット) ページの順に移動します。

  3. 使用するスナップショットを選択します。

  4. [Restore snapshot] (スナップショットから復元)、[Restore to serverless namespace] (サーバーレス名前空間に復元) の順にクリックします。

  5. スナップショットの復元先の名前空間を選択します。

  6. スナップショットから復元することを確認します。この操作により、サーバーレスエンドポイント内のすべてのデータベースが、プロビジョニングされたクラスターのデータで置き換えられます。[復元] を選択します。

プロビジョニングされたクラスタースナップショットの詳細については、「Amazon Redshift スナップショット」を参照してください。

ドライバーでの Amazon Redshift Serverless への接続

好みの SQL クライアントを使用して Amazon Redshift Serverless に接続するには、Amazon RedShift が提供する JDBC ドライバーバージョン 2 を使用することができます。JDBC ドライバーバージョン 2.1.x 以降を使用して接続することをお勧めします。ポート番号はオプションです。そのドライバーが含まれていない場合、Amazon Redshift Serverless のデフォルトのポート番号は 5439 です。5431-5455 または 8191-8215 のポート範囲から別のポートに変更できます。サーバーレスエンドポイントのデフォルトのポートを変更するには、AWS CLI と Amazon Redshift API を使用します。

JDBC、ODBC、または Python ドライバーに使用する正確なエンドポイントを見つけるには、Amazon Redshift Serverless の「Workgroup configuration (ワークグループの設定)」を参照してください。Amazon Redshift Serverless API オペレーションの GetWorkgroup または AWS CLI オペレーション get-workgroups を使用して、ワークグループに関する情報を戻してから接続することもできます。

パスワードベースの認証を使用した接続

パスワードベースの認証を使用して接続するには、次の構文を使用します。

jdbc:redshift://<workgroup-name>.<account-number>.<aws-region>.redshift-serverless.amazonaws.com:5439/?username=enter a username&password=enter a password

Amazon Redshift Python ドライバーを使用して接続するには、次の構文を使用します。

import redshift_connector with redshift_connector.connect( host='<workgroup-name>.<account-number>.<aws-region>.redshift-serverless.amazonaws.com', database='<database-name>', user='enter a user', password='enter a password' # port value of 5439 is specified by default ) as conn: pass

IAM を使用した接続

IAM でログインする場合は、次のドライバーエンドポイントを使用します。このドライバーエンドポイントを使用すると、特定のデータベースに接続し、Amazon Redshift Serverless GetCredentials API オペレーションを使用できます。

jdbc:redshift:iam://<workgroup-name>.<account-number>.<aws-region>.redshift-serverless.amazonaws.com:5439/<database-name>

このドライバーエンドポイントでは dbUserdbGroup および auto-create のカスタマイズがサポートされていません。デフォルトでは、ドライバーはログイン時に自動的にデータベースユーザーを作成し、IAM に定義されたグループに従って、これらのユーザーをグループに割り当てます。注: IAM で指定する IAM グループ名には、小文字、数字、下線 (_)、プラス記号 (+)、ピリオド (.)、アットマーク (@)、ハイフン (-) のみを使用する必要があります。そうしないと、ドライバーが dbGroup に接続しない可能性があります。

AWS ID が RedshiftServerlessGetCredentials アクションに対する正しい IAM ポリシーを保持していることを確認します。次に、AWS ID に Amazon Redshift Serverless に接続するための正しいアクセス権限を付与する IAM ポリシーの例を示します。IAM のアクセス許可の詳細については、「IAM ID アクセス許可の追加」を参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Action": "redshift-serverless:GetCredentials", "Resource": "*" } ] }

IAM を使用して dbUser と dbGroups で接続する

カスタム dbUser と dbGroups 接続オプションを使用する場合は、次のドライバーエンドポイントを使用します。他の Amazon Redshift Serverless ドライバーエンドポイントと同様に、この構文はログイン時に自動的にデータベースユーザーを作成します。このドライバーエンドポイントは Amazon Redshift Serverless GetCredentials API オペレーションを使用します。dbUser は文字で始まり、英数字、下線 (「_」)、プラス記号 (「+」)、ドット (「.」)、アット (「@」)、ハイフン (「-」) のみを使用し、128 文字未満にする必要があります。dbGroups では、小文字、数字、下線 (「_」)、プラス記号 (「+」)、ピリオド (ドット)、アット記号 (@)、ハイフンのみを使用する必要があります。

jdbc:redshift:iam://redshift-serverless-<workgroup-name>:<aws-region>/<database-name>

Amazon Redshift Python ドライバーを使用して接続するには、次の構文を使用します。

import redshift_connector with redshift_connector.connect( iam=True, host='<workgroup-name>.<account-number>.<aws-region>.redshift-serverless.amazonaws.com', database='<database-name>', db_user='enter a user', password='enter a password', db_groups='<db-groups>' # port value of 5439 is specified by default ) as conn: pass

ODBC を使用して接続する

ODBC を使用して接続するには、次の構文を使用します。

Driver={Amazon Redshift (x64)}; Server=<workgroup-name>.<account-number>.<aws-region>.redshift-serverless.amazonaws.com; Database=dev

Amazon Redshift Serverless SDK を使用する

Amazon Redshift SDK を使用して管理スクリプトを作成した場合は、新しい Amazon Redshift Serverless SDK を使用して Amazon Redshift Serverless と関連リソースを管理する必要があります。利用可能なAPI オペレーションの詳細については、「Amazon Redshift Serverless API のリファレンスガイド」を参照してください。