クエリエディタを使用してデータベースのクエリを実行する - Amazon Redshift

クエリエディタを使用してデータベースのクエリを実行する

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

2021 年 2 月、更新されたクエリエディターがデプロイされ、クエリエディターを使用する権限が変更されました。新しいクエリエディターは、Amazon Redshift データ API を使用してクエリを実行します。AWS が管理する AWS Identity and Access Management (IAM) ポリシーである AmazonRedshiftQueryEditor ポリシーが更新され、必要なアクセス許可が含まれるようになりました。カスタム IAM ポリシーがある場合は、必ず更新してください。AmazonRedshiftQueryEditor をガイドとして使用してください。AmazonRedshiftQueryEditor への変更には、以下が含まれます。

  • クエリエディタのステートメント結果を管理する権限には、ステートメント所有者ユーザーが必要です。

  • Secrets Manager を使用してデータベースに接続する権限が追加されました。

詳細については、Amazon Redshift コンソールのクエリエディタを使用するために必要なアクセス許可 を参照してください。

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

古いクエリエディタは、Amazon Redshift コンソールで期間限定で利用できます。これに切り替えて、クエリエディタのコンソールページに戻すことができます。古いクエリエディタでは、既存の権限を使用します。詳細については、古いクエリエディタとの接続 を参照してください。

クエリエディタを使用して、以下の操作を実行できます。

  • 単一の SQL ステートメントクエリを実行する。

  • 最大 100 MB の結果セットをカンマ区切り値 (CSV) ファイルにダウンロードする。

  • 再利用するためにクエリを保存する。ヨーロッパ (パリ) リージョン、アジアパシフィック (大阪) リージョン、アジアパシフィック (香港) リージョン、中東 (バーレーン) リージョンでは、クエリを保存できません。

  • ユーザー定義テーブルのクエリ実行の詳細を表示する。

  • 将来の時間に実行するようにクエリをスケジュールします。

  • クエリエディタで作成したクエリの履歴を表示します。

  • 拡張 VPC ルーティングを使用してクラスターに対してクエリを実行します。

クエリエディタの考慮事項

クエリエディタを使用するときは、クエリを操作する方法について次の操作を行います。

  • クエリの最大期間は 24 時間です。

  • クエリ結果の最大サイズは 100 MB です。100 MB を超えるレスポンスデータが返されると、その呼び出しは終了します。

  • クエリ結果の最大保持時間は 24 時間です。

  • クエリステートメントの最大サイズは 100 KB です。

  • クラスターは、Amazon VPC サービスに基づいて Virtual Private Cloud (VPC) で作成する必要があります。

  • クエリエディタでトランザクションを使用することはできません。トランザクションの詳細については、Amazon Redshift データベースデベロッパーガイドBEGIN を参照してください。

  • クエリは最大 3,000 文字保存することができます。

クエリエディタへのアクセスの有効化

クエリエディタにアクセスするには、アクセス許可が必要です。アクセスを有効にするには、クラスターへのアクセスに使用する IAM ユーザーに IAM アクセス許可のための AmazonRedshiftQueryEditor および AmazonRedshiftReadOnlyAccess AWS 管理ポリシーをアタッチします。IAM コンソール (https://console.aws.amazon.com/iam/) を使用して IAM ポリシーをアタッチできます。

既に Amazon Redshift にアクセスするために IAM ユーザーを作成している場合、AmazonRedshiftQueryEditor および AmazonRedshiftReadOnlyAccess AWS マネージドポリシーをそのユーザーにアタッチできます。まだ IAM ユーザーを作成していない場合、作成し、ポリシーを IAM ユーザーにアタッチします。

AWS 管理ポリシー AmazonRedshiftQueryEditor では、アクション redshift:GetClusterCredentials が許可されます。このアクションにより、デフォルトでデータベースユーザーのスーパーバイザーがデータベースにアクセスできるようになります。アクセスを制限するには、次のいずれかの項目を実行します。

  • redshift:GetClusterCredentials を呼び出してリソースを DbUser に制限するカスタムポリシーを作成します。

  • redshift:GetClusterCredentials へのアクセス許可を拒否するポリシーをユーザーに追加した後、クエリエディタのユーザーに一時的な認証情報を使用してサインインすることを求めます。たとえば、拒否ポリシーは次のようなポリシーになります。

    { "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "redshift:GetClusterCredentials", "Resource": "*" } }

詳細については、「GetClusterCredentials を呼び出すアクセス許可を持つ IAM ロールまたはユーザーを作成する」を参照してください。

AWS 管理ポリシー AmazonRedshiftQueryEditor をアタッチして Amazon Redshift クエリエディタへのアクセスが許可されている場合、すべてのシークレットを表示できます。ただし、キー RedshiftQueryOwner と値 ${aws:userid} でタグ付けされたシークレットのみを作成および取得できます。Amazon Redshift クエリエディタからキーを作成すると、キーは自動的にタグ付けされます。Amazon Redshift クエリエディタで作成されていないシークレットを使用するには、シークレットがキー RedshiftQueryOwner と一意の IAM ユーザー識別子の値 (AIDACKCEVSQ6C2EXAMPLE など) でタグ付けされていることを確認します。

クエリエディタに必要な IAM ポリシーをアタッチするには

  1. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. [ユーザー] を選択します。

  3. クエリエディタへのアクセスが必要なユーザーを選択します。

  4. [Add permissions] を選択します。

  5. [Attach existing policies directly] を選択します。

  6. [Policy names (ポリシー名)] には、 [AmazonRedshiftQueryEditor] および [AmazonRedshiftReadOnlyAccess] を選択します。

  7. [Next: Review (次へ: レビュー)] を選択します。

  8. [Add permissions] を選択します。

クエリエディタによる接続

クエリエディタを使用してクラスターに接続する場合、次のいずれかの認証方法を使用します。各メソッドでは、Amazon Redshift コンソールからの入力の組み合わせが異なる必要があります。

AWS Secrets Manager

この方法を使用して、AWS Secrets Manager に保存されている secret-arn のシークレット値を指定します。このシークレットには、データベースに接続するための認証情報が含まれます。

一時認証情報

この方法では、databaseおよびDB ユーザー値.

AWS Secrets Manager へのデータベース認証情報の保存

クエリエディタを呼び出すと、AWS Secrets Manager のシークレットを使用してクラスターの認証情報を渡すことができます。この方法で認証情報を渡すには、シークレットの名前またはシークレットの Amazon リソースネーム (ARN) を指定します。

最小のアクセス許可についての詳細は、AWS Secrets Manager ユーザーガイドの「AWS Secrets Manager を使用したシークレットの作成と管理」を参照してください。

Amazon Redshift クラスターのシークレットに認証情報を保存するには

  1. AWS Secrets Manager を使用してクラスターの認証情報が含まれるシークレットを作成します。[Store a new secret (新しいシークレットを保存する)] を選択する場合は、[Credentials for Redshift cluster (Redshift クラスターの認証情報)]を選択します。[User name (ユーザー名)] (データベースユーザー)、[Password (パスワード)]、および [DB cluster (DB クラスター)] (クラスター識別子) の値をシークレットに保存します。

    手順については、AWS Secrets Manager ユーザーガイド の「Creating a Basic Secret」を参照してください。

  2. AWS Secrets Manager コンソールを使用して、作成したシークレットの詳細を表示するか、aws secretsmanager describe-secret の AWS CLI コマンドを実行します。

古いクエリエディタとの接続

次のクラスターノードタイプはクエリエディタをサポートしています。

  • dc1.8xlarge

  • dc2.large

  • dc2.8xlarge

  • ds2.8xlarge

  • ra3.xlplus

  • ra3.4xlarge

  • ra3.16xlarge

Amazon Redshift コンソールで古いクエリエディタを使用するときは、次の考慮事項に注意してください。

  • 同時に最大 50 名のユーザーがクエリエディタを使用してクラスターに接続することができます。

  • クラスターに接続するユーザーの最大数には、クエリエディタを介して接続するユーザーが含まれます。

  • 同時に最大 50 のワークロード管理 (WLM) クエリスロットをアクティブにできます。クエリスロットの詳細については、「ワークロード管理の実装」を参照してください。

  • クエリエディタは、10 分以内に完了する短いクエリのみを実行します。

  • クエリ結果セットはページごとに 100 行で分割されています。

  • 拡張された VPC のルーティングではクエリエディタを使用できません。詳細については、Amazon Redshift の拡張 VPC ルーティング を参照してください。

  • クエリエディタでトランザクションを使用することはできません。トランザクションの詳細については、Amazon Redshift データベースデベロッパーガイドBEGIN を参照してください。

  • クエリは最大 3,000 文字保存することができます。

クエリエディタにアクセスするには、アクセス許可が必要です。アクセスを有効にするには、クラスターへのアクセスに使用する IAM ユーザーに、IAM アクセス許可のための AWS 管理ポリシー AmazonRedshiftQueryEditor および AmazonRedshiftReadOnlyAccess をアタッチします。

すでに Amazon Redshift にアクセスするために IAM ユーザーを作成している場合、AmazonRedshiftQueryEditor および AmazonRedshiftReadOnlyAccess ポリシーをそのユーザーにアタッチできます。まだ IAM ユーザーを作成していない場合、作成し、ポリシーを IAM ユーザーにアタッチします。

AWS 管理ポリシー AmazonRedshiftQueryEditor では、アクション redshift:GetClusterCredentials が許可されます。このアクションにより、デフォルトでデータベースユーザーのスーパーバイザーがデータベースにアクセスできるようになります。アクセスを制限するには、次のいずれかの項目を実行します。

  • redshift:GetClusterCredentials を呼び出してリソースを DbUser に制限するカスタムポリシーを作成します。

  • redshift:GetClusterCredentials へのアクセス許可を拒否するポリシーをユーザーに追加した後、クエリエディタのユーザーに一時的な認証情報を使用してサインインすることを求めます。たとえば、拒否ポリシーは次のようなポリシーになります。

    { "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "redshift:GetClusterCredentials", "Resource": "*" } }

詳細については、GetClusterCredentials を呼び出すアクセス許可を持つ IAM ロールまたはユーザーを作成する を参照してください。

古いクエリエディタを使用してクラスターに接続する場合、次のいずれかの認証方法を使用します。各メソッドでは、Amazon Redshift コンソールからの入力の組み合わせが異なる必要があります。

データベースパスワードによるConnect

この方法で、デフォルトデータベースのマスターユーザーパスワードを指定します。クラスターの作成時にこのパスワードを指定します。

一時認証情報

この方法では、databaseおよびDB ユーザー値.

クエリエディタの使用

次の例では、クエリエディタを使用して次のタスクを実行します。

  • SQL コマンドを実行する。

  • クエリ実行の詳細を表示する。

  • クエリを保存する。

  • クエリの結果セットをダウンロードする。

次の例を完了するには、既存の Amazon Redshift クラスターが必要です。クラスターがない場合は、「クラスターの作成」に記載されている手順に従ってクラスターを作成します。

注記

Amazon Redshift では新しいコンソールを使用できます。使用しているコンソールに基づき、[新しいコンソール] または [元のコンソール] の手順を選択します。新しいコンソールの手順はデフォルトで開いています。

Amazon Redshift コンソールでクエリエディタを使用するには

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

  2. ナビゲーションメニューで [EDITOR] を選択し、次にクラスターのデータベースに接続します。

  3. [Schema (スキーマ)] には、[public (パブリック)] を選択し、そのスキーマに基づいた新しいテーブルを作成します。

  4. 次をクエリエディタウィンドウに入力し、[実行] を選択して新しいテーブルを作成します。

    create table shoes( shoetype varchar (10), color varchar(10));
  5. [クリア] を選択します。

  6. 次のコマンドをクエリエディタウィンドウに入力し、[Run (実行)] を選択してテーブルに行を追加します。

    insert into shoes values ('loafers', 'brown'), ('sandals', 'black');
  7. [クリア] を選択します。

  8. 次のコマンドをクエリエディタウィンドウに入力し、[クエリの実行] を選択して新しいテーブルをクエリします。

    select * from shoes;

    [Query results (クエリの結果)] に結果が表示されます。

    靴の種類 カラー

    sandals

    black

    loafers

    brown

  9. [Execution (実行)] を選択して実行詳細を確認します。

  10. [データ]、[エクスポート] の順に選択し、クエリ結果をファイルとしてダウンロードします。

クエリエディタを使用するには

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

  2. ナビゲーションペインでクエリエディタを選択します。

  3. [Schema (スキーマ)] には、[public (パブリック)] を選択し、そのスキーマに基づいた新しいテーブルを作成します。

  4. 次をクエリエディタウィンドウに入力し、[Run Query (クエリ実行)] を選択して新しいテーブルを作成します。

    create table shoes( shoetype varchar (10), color varchar(10));
  5. [クリア] を選択します。

  6. 次のコマンドをクエリエディタウィンドウに入力し、[Run Query (クエリ実行)] を選択してテーブルに行を追加します。

    insert into shoes values ('loafers', 'brown'), ('sandals', 'black');
  7. [クリア] を選択します。

  8. 次のコマンドをクエリエディタウィンドウに入力し、[Run Query (クエリ実行)] を選択して新しいテーブルをクエリします。

    select * from shoes;

    次の結果が表示されます。

  9. 実行の詳細を表示するには、[View execution (実行の表示)] を選択します。

  10. クエリ結果を CSV ファイルとしてダウンロードするには、[CSV のダウンロード] を選択します。