ワークグループの管理 - Amazon Athena

ワークグループの管理

https://console.aws.amazon.com/athena/ で、以下のタスクを実行できます。

Statement 説明
ワークグループの作成

新しいワークグループを作成します。

ワークグループの編集 ワークグループを編集して設定を変更します。ワークグループの名前を変更することはできませんが、同じ設定と別の名前で新しいワークグループを作成することはできます。
ワークグループの詳細の表示 名前、説明、データ使用量の制限、クエリ結果の場所、予想されるクエリ結果のバケット所有者、暗号化、クエリ結果バケットに書き込まれるオブジェクトのコントロールなど、ワークグループの詳細が表示されます。[Override client-side settings (クライアント側設定の上書き)] がオンになっている場合、このワークグループがその設定を強制しているかどうかも確認できます。
ワークグループの削除

ワークグループを削除します。ワークグループ、クエリ履歴、保存されたクエリを削除すると、ワークグループの設定とクエリごとのデータ制限コントロールが削除されます。ワークグループ全体のデータ制限制御は CloudWatch で保持され、個別に削除することができます。

プライマリワークグループは削除できません。

ワークグループの切り替え

アクセス権があるワークグループを切り替えます。

ワークグループ間で保存されたクエリのコピー ワークグループ間で保存されたクエリをコピーします。これは、例えばプレビューワークグループでクエリを作成し、それを非プレビューワークグループで使用できるようにしたい場合などに実行できます。
ワークグループの有効化および無効化

ワークグループを有効または無効にします。ワークグループを無効にすると、そのユーザーはクエリを実行したり、新しい名前付きクエリを作成したりできません。アクセスできる場合でも、メトリクス、データ使用制限コントロール、ワークグループの設定、クエリ履歴、保存されたクエリを表示できます。

クエリを実行するワークグループの指定

クエリを実行する前に、使用するワークグループを Athena に指定する必要があります。ワークグループに対するアクセス権限が必要です。

ワークグループの作成

ワークグループを作成するには、CreateWorkgroup API アクションへのアクセス権限が必要です。「ワークグループとタグへのアクセス」および「 ワークグループにアクセスするための IAM ポリシー」を参照してください。タグを追加している場合は、TagResource にアクセス権限を追加する必要もあります。「ワークグループのタグポリシーの例」を参照してください。

コンソールでワークグループを作成するには
  1. コンソールのナビゲーションペインが表示されない場合は、左側の展開メニューをクリックします。

    
                            展開メニューを選択します。
  2. Athena コンソールのナビゲーションペインで、[Workgroups] (ワークグループ) をクリックします。

  3. [Workgroups] (ワークグループ) ページで、[Create workgroup] (ワークグループを作成する) をクリックします。

  4. [Create workgroup] (ワークグループを作成する) ページで、次のようにフィールドに入力します。

    フィールド 説明
    ワークグループ名 必須。ワークグループの一意の名前を入力します。1~128 文字で入力してください。(A~Z、a~z、0~9、_、-、.)。この名前は変更できません。
    説明 オプション。ワークグループの説明を入力します。最大 1024 文字を含めることができます。
    クエリエンジンを更新する 新しい Athena エンジンバージョンがリリースされるときに、ワークグループを更新する方法を選択します。Athena にワークグループを更新するタイミングを決定させる、またはエンジンバージョンを手動で選択することができます。詳細については、「Athena エンジンのバージョニング」を参照してください。
    クエリ結果の場所

    オプション。Amazon S3 バケットまたはプレフィックスへのパスを入力します。このバケットとプレフィックスは、指定する前に存在している必要があります。

    注記

    コンソールでクエリを実行する場合、クエリ結果の場所の指定はオプションです。ワークグループまたは [Settings (設定)] で指定しない場合、Athena はデフォルトのクエリ結果の場所を使用します。API またはドライバを使用してクエリを実行する場合、個々のクエリには OutputLocation、またはワークグループには WorkGroupConfiguration を使って、2 つの場所の少なくとも 1 つにクエリ結果の場所を指定する必要があります

    予想されるバケット所有者 オプション。出力先バケットの所有者になると予想される AWS アカウント の ID を入力します。これは追加のセキュリティ対策です。バケット所有者のアカウント ID がここで指定した ID と一致しない場合、バケットに出力できません。詳細については、「Amazon S3 ユーザーガイド」の「バケット所有者条件によるバケット所有者の確認」を参照してください。
    注記

    予期されるバケット所有者の設定は、Athena クエリの結果の出力先として指定した Amazon S3 内の場所にのみ適用されます。これは、外部 Amazon S3 バケット内のデータソースの場所、CTASINSERT INTO の書き込み先のテーブルの場所、UNLOAD ステートメントの出力場所、串刺検索のバケットのスピルオペレーション、別のアカウントのテーブルに対して実行される SELECT クエリなど、他の Amazon S3 ロケーションには適用されません。

    クエリ結果の暗号化

    オプション。Amazon S3 に保存されている結果を暗号化します。選択すると、ワークグループのすべてのクエリは暗号化されます。

    選択すると、[Encryption type (暗号化タイプ)]、[Encryption key (暗号化キー)] を選択して、[KMS Key ARN (KMS キー ARN)] を入力できます。

    キーがない場合は、AWS KMS コンソールを開いて作成します。詳細については、「デベロッパーガイド」の「AWS Key Management Serviceキーの作成」を参照してください。

    クエリ結果に対するフルコントロールをバケット所有者に割り当てる

    このフィールドは、デフォルトでは選択されていません。これを選択し、クエリ結果の場所バケットで ACL が有効になっている場合、クエリ結果に対するフルコントロールアクセスがバケット所有者に付与されます。たとえば、クエリ結果の場所を別のアカウントが所有している場合に、このオプションを使用して、クエリ結果の所有権とフルコントロールを他のアカウントに付与することができます。

    バケットの S3 オブジェクトの所有権の設定が [Bucket owner preferred] (バケット所有者推奨) となっている場合、バケット所有者は、このワークグループから書き込まれたすべてのクエリ結果オブジェクトも所有します。たとえば、外部アカウントのワークグループでこのオプションが有効になっており、そのクエリ結果の場所がアカウントの Simple Storage Service (Amazon S3) バケットに設定されている場合に、このバケットの S3 オブジェクトの所有権が [Bucket owner preferred] (バケット所有者推奨) と設定されていると、外部ワークグループのクエリ結果を所有し、フルコントロールアクセスを持つことになります。

    クエリ結果バケットの S3 オブジェクトの所有権設定が [Bucket owner enforced] (バケット所有者の強制) となっているときにこのプションを選択しても、効果はありません。詳細については、「Simple Storage Service (Amazon S3) ユーザーガイド」の「オブジェクトの所有権の設定」を参照してください。

    メトリクス このフィールドは、デフォルトで選択されています。クエリメトリクスを CloudWatch に発行します。「CloudWatch メトリクスによる Athena クエリのモニタリング」を参照してください。
    [Override client-side settings (クライアント側設定の上書き)] このフィールドは、デフォルトでは選択されていません。選択すると、ワークグループ設定はワークグループのすべてのクエリに適用され、クライアント側の設定を上書きします。詳細については、「ワークグループ設定がクライアント側の設定を上書きする」を参照してください。
    リクエスタ支払い S3 バケット

    オプション。ワークグループユーザーが、リクエスタ支払いとして設定された Amazon S3 バケットに保存されているデータでクエリを実行する場合は、[Enable queries on Requester Pays buckets in Amazon S3] (Amazon S3 のリクエスタ支払いバケットでのクエリを有効にする) を選択します。クエリを実行しているユーザーのアカウントには、クエリに関連付けられた該当するデータアクセスの料金とデータ転送料金が請求されます。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「リクエスタ支払いバケット」を参照してください。

    クエリごとのデータ使用量の制御 オプション。クエリがスキャンできるデータの最大量の制限を設定します。ワークグループに対してクエリごとの制限を 1 つだけ設定できます。この制限は、ワークグループのすべてのクエリに適用され、クエリが制限を超えるとキャンセルされます。詳細については、「データ使用量の制御制限の設定」を参照してください。
    ワークグループのデータ使用に関するアラート オプション。このワークグループで実行しているクエリが特定の期間内に指定した量のデータをスキャンする際、複数のアラートしきい値を設定します。アラートは Amazon CloudWatch アラームを使用して実装され、ワークグループ内のすべてのクエリに適用されます。詳細については、『Amazon CloudWatch ユーザーガイド』の「Amazon CloudWatch アラームの使用」を参照してください。
    [Tags (タグ)] オプション。ワークグループに 1 つ以上のタグを追加します。タグは、Athena ワークグループリソースに割り当てるラベルです。キーと値から構成されます。AWS タグ付け戦略のベストプラクティスを使用して、一貫性のあるタグのセットを作成し、目的、所有者、環境に基づいてワークグループを分類します。IAM ポリシーでタグを使用したり、課金コストを管理することもできます。同じワークグループに重複したタグキーを使用しないでください。詳細については、「Athena リソースへのタグ付け」を参照してください。
  5. [Create workgroup] (ワークグループの作成) を選択します。ワークグループが [Workgroups] (ワークグループ) ページのリストに表示されます。

また、CreateWorkGroup API オペレーションを使用してワークグループを作成することもできます。

重要

ワークグループを作成したら、ワークグループ関連のアクションを実行できるようにする ワークグループにアクセスするための IAM ポリシー IAM を作成します。

ワークグループの編集

ワークグループを編集するには、UpdateWorkgroup API オペレーションへのアクセス権限が必要です。「ワークグループとタグへのアクセス」および「 ワークグループにアクセスするための IAM ポリシー」を参照してください。タグを追加または編集している場合、TagResource へのアクセス権限も必要です。「ワークグループのタグポリシーの例」を参照してください。

コンソールでワークグループを編集するには
  1. Athena コンソールのナビゲーションペインで、[Workgroups] (ワークグループ) をクリックします。

  2. [Workgroups] (ワークグループ) ページで、編集するワークグループのボタンを選択します。

  3. [Actions]、[Edit] の順に選択します。

  4. 必要に応じて、フィールドの値を変更します。フィールドのリストについては、「ワークグループの作成」を参照してください。ワークグループの名前を除くすべてのフィールドを変更できます。名前を変更する必要がある場合は、新しい名前と同じ設定で別のワークグループを作成してください。

  5. [Save changes] (変更の保存) をクリックします。更新されたワークグループが [Workgroups] (ワークグループ) ページのリストに表示されます。

ワークグループの詳細の表示

各ワークグループの詳細を表示できます。詳細には、ワークグループの名前、説明、有効になっているか無効になっているか、ワークグループで実行されるクエリに使用される設定 (クエリ結果の場所や予想されるバケット所有者、暗号化、クエリ結果バケットに書き込まれるオブジェクトのコントロールなど) が含まれます。ワークグループにデータ使用量の制限がある場合は、それらも表示されます。

ワークグループの詳細を表示するには
  1. Athena コンソールのナビゲーションペインで、[Workgroups] (ワークグループ) をクリックします。

  2. [Workgroups] (ワークグループ) ページで、表示するワークグループのリンクを選択します。ワークグループの [Overview Details] (概要の詳細) ページが表示されます。

ワークグループの削除

アクセス権限がある場合は、ワークグループを削除できます。プライマリワークグループは削除できません。

アクセス権限がある場合は、いつでも空のワークグループを削除できます。保存したクエリが含まれているワークグループを削除することもできます。この場合、ワークグループの削除に進む前に、保存されたクエリが削除されることを Athena が警告します。

ワークグループにいる間にワークグループを削除した場合、コンソールは焦点をプライマリワークグループに切り替えます。アクセスできる場合は、クエリを実行して設定を表示します。

ワークグループを削除すると、その設定とクエリごとのデータ制限コントロールは削除されます。ワークグループ全体のデータ制限制御は CloudWatch で保持され、そこで必要に応じて削除することができます。

重要

ワークグループを削除する前に、そのユーザーが引き続きクエリを実行できる他のワークグループに属していることを確認してください。ユーザーの IAM ポリシーが、ユーザーにこのワークグループのみでクエリの実行を許可していた場合にそのワークグループを削除すると、ユーザーはクエリを実行する許可を失います。詳細については、「Example Policy for Running Queries in the Primary Workgroup」を参照してください

コンソールでワークグループを削除するには
  1. Athena コンソールのナビゲーションペインで、[Workgroups] (ワークグループ) をクリックします。

  2. [Workgroups] (ワークグループ) ページで、削除するワークグループのボタンを選択します。

  3. [Actions] (アクション) で、[Delete] (削除) を選択します。

  4. [Delete workgroup] (ワークグループを削除する) の確認プロンプトで、ワークグループの名前と入力し、[Delete] (削除) を選択します。

API オペレーションでワークグループを削除するには、DeleteWorkGroup アクションを使用します。

ワークグループの切り替え

両方のワークグループにアクセス権限がある場合は、あるワークグループから別のワークグループに切り替えることができます。

各ワークグループで最大 10 個のクエリタブを開くことができます。ワークグループを切り替えると、クエリタブは最大 3 つのワークグループに対して開いたままになります。

ワークグループを切り替えるには
  1. Athena コンソールで、右上の [Workgroups] (ワークグループ) オプションを使用して、ワークグループを選択します。

  2. [Workgroup workgroup-name setting] (ワークグループ (ワークグループ名) の設定) ダイアログボックスが表示されたら、[Acknowledge] (承認する) を選択します。

[Workgroup] (ワークグループ) オプションには、切り替えたワークグループの名前が表示されます。これで、このワークグループでクエリを実行できます。

ワークグループ間で保存されたクエリのコピー

現在、Athena コンソールには、保存されたクエリを 1 つのワークグループから別のワークグループに直接コピーするオプションはありませんが、以下の手順を使用することで、同じタスクを手動で実行することができます。

ワークグループ間で保存されたクエリをコピーする
  1. Athena コンソールで、クエリをコピーするワークグループから、[Saved queries] (保存されたクエリ) タブをクリックします。

  2. コピーする保存されたクエリのリンクを選択します。Athena により、クエリエディタでクエリが開かれます。

  3. クエリエディタで、クエリテキストを選択してから Ctrl+C を押してそれをコピーします。

  4. 宛先ワークグループに切り替えるか、ワークグループを作成してから、それに切り替えます。

  5. クエリエディタで新しいタブを開き、Ctrl+V を押して新しいタブにテキストを貼り付けます。

  6. クエリエディタで [Save as] (名前を付けて保存) をクリックして、クエリを宛先のワークグループに保存します。

  7. [Choose name] (名前の選択) ダイアログボックスで、クエリの名前とオプションの説明を入力します。

  8. [Save] を選択します。

ワークグループの有効化および無効化

アクセス権限がある場合は、API オペレーションを使用するか、JDBC および ODBC ドライバーを使用して、コンソールでワークグループを有効化または無効化できます。

ワークグループを有効化または無効化するには
  1. Athena コンソールのナビゲーションペインで、[Workgroups] (ワークグループ) をクリックします。

  2. [Workgroup] (ワークグループ) ページで、ワークグループのリンクを選択します。

  3. 右上の [Enable workgroup] (ワークグループの有効化) または [Disable workgroup] (ワークグループの無効化) を選択します。

  4. 確認プロンプトで、[Enable] (有効化) または [Disable] (無効化) を選択します。ワークグループを無効にすると、そのユーザーはその中でクエリを実行したり、新しい名前付きクエリを作成したりできません。ワークグループを有効にした場合、ユーザーはそれを使用してクエリを実行できます。

クエリを実行するワークグループの指定

使用するワークグループを指定するには、ワークグループに対するアクセス許可が必要です。

使用するワークグループを指定するには
  1. 使用する予定のワークグループでクエリを実行できるアクセス権限であることを確認します。詳細については、「 ワークグループにアクセスするための IAM ポリシー」を参照してください。

  2. ワークグループを指定するには、次のいずれかのオプションを使用してください。

    • Athena コンソールを使用している場合は、ワークグループを切り替えてワークグループを設定します。

    • Athena API オペレーションを使用している場合は、API アクションにワークグループ名を指定します。例えば、以下のように StartQueryExecution でワークグループ名を設定できます。

      StartQueryExecutionRequest startQueryExecutionRequest = new StartQueryExecutionRequest() .withQueryString(ExampleConstants.ATHENA_SAMPLE_QUERY) .withQueryExecutionContext(queryExecutionContext) .withWorkGroup(WorkgroupName)
    • JDBC または ODBC ドライバーを使用している場合、Workgroup 設定パラメータを使用して接続文字列にワークグループ名を設定します。ドライバーがワークグループ名を Athena に渡します。次の例のように、接続文字列にワークグループパラメータを指定します。

      jdbc:awsathena://AwsRegion=<AWSREGION>;UID=<ACCESSKEY>; PWD=<SECRETKEY>;S3OutputLocation=s3://<athena-output>-<AWSREGION>/; Workgroup=<WORKGROUPNAME>;

      詳細については、「JDBC ドライバーのドキュメント」に記載されているドライバードキュメントのリンク先で「Workgroup」を検索してください。