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

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

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 コンソールのクエリエディタを使用するために必要なアクセス許可」を参照してください。

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

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

  • 単一の 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 DynamoDB でアイデンティティベースのポリシー (IAM ポリシー) を使用する」を参照してください。

Amazon Redshift にアクセスするためのユーザーを作成済みである場合は、ロールの割り当てにより、AmazonRedshiftQueryEditor および AmazonRedshiftReadOnlyAccess AWS マネージドポリシーをアタッチできます。まだ作成していない場合は、ユーザーを作成します。次に、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 など) でタグ付けされていることを確認します。

Amazon Redshift クエリエディタを使用するために必要なアクセス許可は、AmazonRedshiftQueryEditorAmazonRedshiftReadOnlyAccess です。

アクセス権限を付与するには、ユーザー、グループ、またはロールにアクセス許可を追加します。

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

クエリエディタを使用してクラスターに接続する場合、次のいずれかの認証方法を使用します。各メソッドでは、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 コマンドを実行します。

AWS Secrets Manager を使ったクラスターの管理者認証情報を使用する場合は、Secrets Manager に保存されている管理者認証情報を使用してデータベースに接続できます。

クエリエディタの使用

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

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

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

  • クエリを保存する。

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

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

Amazon Redshift コンソールでクエリエディタを使用するには
  1. AWS Management Console にサインインして、 https://console.aws.amazon.com/redshiftv2/で Amazon Redshift コンソールを開きます。

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

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

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

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

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

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

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

    select * from shoes;

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

    靴の種類 カラー

    sandals

    black

    loafers

    brown

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

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