Amazon Athena に接続できない - Amazon QuickSight

Amazon Athena に接続できない

   対象者: Amazon QuickSight 管理者 

このセクションでは、Athena への接続に関するトラブルシューティングについて説明します。

Amazon Athena に接続できない場合、クエリの実行時に、アクセス許可が設定されていないことを示す、不十分なアクセス許可によるエラーが発生する場合があります。Amazon QuickSight を Athena に接続できることを確認するには、次の設定をチェックします。

  • Amazon QuickSight 内の AWS リソースのアクセス許可

  • AWS Identity and Access Management (IAM) ポリシー

  • Amazon S3 の場所

  • クエリ結果の場所

  • AWS KMS キーポリシー (暗号化されたデータセットの場合のみ)

詳細については、以下を参照してください。その他の Athena の問題のトラブルシューティングについては、Amazon QuickSight で Athena を使用するときに発生する問題のトラブルシューティング を参照してください。

Amazon QuickSight が Athena の使用を許可していることを確認します。

   対象者: Amazon QuickSight 管理者 

以下の手順を使用して、Amazon QuickSight が Athena の使用を正常に許可していることを確認します。AWS リソースへのアクセス許可はすべての Amazon QuickSight ユーザーに適用されます。

このアクションを実行するには、Amazon QuickSight 管理者である必要があります。アクセス権があるかどうかをチェックするには、右上のプロファイルからメニューを開いたときに、[Manage QuickSight (QuickSight の管理)] オプションが表示されることを確認します。

Amazon QuickSight に Athena へのアクセスを許可するには

  1. プロファイル名 (右上) を選択します。[Manage QuickSight (QuickSight の管理)]、[Security & permissions (セキュリティとアクセス権限)] の順に選択します。

  2. [QuickSight access to AWS services (QuickSight の AWS のサービスへのアクセス)] で、[Add or remove (追加または削除)] を選択します。

  3. リストで Athena を検索します。Athena のチェックボックスをオフにしてから、もう一度オンにすると、Athena が有効になります。

    次に、[Connect both (両方を接続)] を選択します。

  4. Amazon QuickSight からアクセスするバケットを選択します。

    ここでアクセスする S3 バケットの設定は、AWS のサービスのリストから Amazon S3 を選択してアクセスするものと同じです。他のユーザーが使用しているバケットを誤って無効にしないように注意してください。

  5. [Finish (完了)] を選択して、選択を確定します。保存せずに終了するには、[Cancel (キャンセル)] を選択します。

  6. [Update (更新)] を選択して、AWS のサービスへの Amazon QuickSight アクセスの新しい設定を保存します。または、[Cancel (キャンセル)] を選択して、変更を加えずに終了します。

  7. 完了したら、正しい AWS リージョンを使用していることを確認します。

    このプロセスの最初のステップで AWS リージョンを変更した場合は、この手順を開始する前に使用していた AWS リージョンに戻します。

IAM ポリシーに適切なアクセス許可が付与されていることを確認する

   対象者: システム管理者 

ユーザーの AWS Identity and Access Management (IAM) ポリシーは、特定のアクションにアクセス許可を付与する必要があります。IAM ユーザーまたはロールは、Athena がクエリに使用する S3 バケットの入力と出力の両方を読み込み/書き込みできる必要があります。

データセットが暗号化されている場合、IAM ユーザーは指定された AWS KMS キーポリシーのキーユーザーである必要があります。

IAM ポリシーにクエリに S3 バケットを使用するアクセス権限があることを確認するには

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. 使用している IAM ユーザーまたはロールを見つけます。ユーザー名またはロール名を選択し、関連するポリシーを確認します。

  3. ポリシーのアクセス許可が正しいことを確認します。確認するポリシーを選択し、[Edit policy (ポリシーの編集)] を選択します。デフォルトで開くビジュアルエディタを使用します。JSON エディタを開いた場合は、[Visual editor (ビジュアルエディタ)] タブを選択します。

  4. リスト内の S3 エントリを選択し、その内容を確認します。ポリシーでは、リスト、読み取り、書き込みのアクセス権限を付与する必要があります S3 がリストにない場合、または適切なアクセス許可がない場合は、ここで追加します。

Amazon QuickSight で動作する IAM ポリシーの例については、Amazon QuickSight の IAM ポリシーの例 を参照してください。。

IAM ユーザーが S3 の場所への読み込み/書き込みアクセス権を持っていることを確認する

   対象者: Amazon QuickSight 管理者 

Amazon QuickSight から Athena データにアクセスするには、まず Athena と S3 の場所が [Manage QuickSight (QuickSight の管理)] 画面で許可されていることを確認します。詳細については、Amazon QuickSight が Athena の使用を許可していることを確認します。を参照してください。

次に、関連する IAM アクセス許可を確認します。Athena 接続の IAM ユーザーには、結果が保存される S3 内の場所への、読み込み/書き込みアクセス権が必要です。まず、IAM ユーザーに Athena へのアクセスを許可する AmazonAthenaFullAccess のようなポリシーがアタッチされていることを確認します。Athena で必要な名前を使用してバケットを作成し、QuickSight がアクセスできるバケットのリストにこのバケットを追加します。結果バケットのデフォルトの場所 (aws-athena-query-results-*) を変更する場合、IAM ユーザーが新しい場所への読み込みと書き込みのアクセス許可を持っていることを確認します。

S3 URL に AWS リージョンコードを含めないことを確認します。たとえば、s3://us-east-1.amazonaws.com/awsexamplebucket/path ではなく s3://awsexamplebucket/path を使用します。誤った S3 URL を使用すると、Access Denied エラーが発生します。

IAM ユーザーがバケット内のオブジェクトにアクセスすることを許可する、バケットポリシーとオブジェクト ACL も確認します。IAM ユーザーが別の AWS アカウントに属している場合は、Amazon Athena ユーザーガイドクロスアカウントアクセスを参照してください。

データセットが暗号化されている場合、IAM ユーザーが指定された AWS KMS キーポリシーのキーユーザーであることを確認します。これは、https://console.aws.amazon.com/kms の AWS KMS コンソールで確認できます。

Athena クエリ結果の場所へのアクセス許可を設定するには

  1. https://console.aws.amazon.com/athena/ で Athena コンソールを開きます。

  2. 使用するワークグループが選択されていることを確認します。

    • 上部の [Workgroup (ワークグループ)] オプションを検証します。これは、Workgroup: group-name の形式を持っています。使用するグループ名である場合は、次のステップまでスキップします。

    • 別のワークグループを選択するには、上部の [Workgroup (ワークグループ)] を選択します。使用するワークグループを選択し、[Switch workgroup (ワークグループの切り替え)] を選択します。

  3. 右上の [Settings (設定)] を選択します。

    (一般的ではありません) 「ワークグループが見つかりません」というエラーが表示された場合は、以下のステップに従って修正します。

    1. 現時点ではエラーメッセージは無視し、代わりに [Settings (設定)] ページで、[Workgroup: group-name] を検索します ワークグループ名はハイパーリンクです。ワークグループ名を開きます。

    2. [Workgroup: <groupname>] ページで、左側の [Edit workgroup (ワークグループの編集)] を選択します。エラーメッセージを閉じます。

    3. [Query result location (クエリ結果の場所)] 近くで、ファイルフォルダアイコン付きの [Select (選択)] ボタンをクリックし、S3 ロケーションセレクターを開きます。

    4. Athena の S3 の場所名の末尾にある小さな矢印を選択します。名前は aws-athena-query-results で始まる必要があります。

    5. (オプション) クエリ結果を暗号化するには、[Encrypt results stored in S3 (S3 に保存されている結果を暗号化する)] チェックボックスをオンにします。

    6. [Save (保存)] を選択し、設定を保存します。

    7. エラーが再び表示されない場合は、[Settings (設定)] に戻ります。

      場合によっては、エラーが再び表示されることがあります。この場合は、次のステップを実行します。

      1. [ワークグループ]、[View details (詳細の表示)] の順に選択します。

      2. (オプション) 設定を保持するには、ワークグループの設定を書き留めるか、スクリーンショットを撮ります。

      3. [Create workgroup (ワークグループの作成)] を選択します。

      4. ワークグループを新しいワークグループに置き換えます。正しい S3 の場所と暗号化オプションを設定します。後で必要になるため、S3 の場所を書き留めます。

      5. [Save (保存)] を選択して続行します。

      6. 元のワークグループが不要になった場合は、無効にします。表示される警告を注意して読んでください。無効にすると喪失するものがわかります。

  4. 前のステップでトラブルシューティングによって取得しなかった場合は、右上の [Settings (設定)] を選択し、[Query result location (クエリ結果の場所)] として表示される S3 ロケーションの値を取得します。

  5. [Encrypt query results (クエリ結果の暗号化)] が有効な場合、SSE-KMS または CSE-KMS を使用しているかをチェックします。キーを書き留めます。

  6. https://console.aws.amazon.com/s3/ で S3 コンソールを開き、正しいバケットを開いて、[Permissions (アクセス許可)] タブを選択します。

  7. IAM ユーザーがアクセス権を持っていることを確認するには、[Bucket Policy (バケットポリシー)] を表示します。

    ACL を使用してアクセスを管理する場合は、[Access Control List (アクセスコントロールリスト)]を表示して、アクセスコントロールリスト (ACL)が設定されていることを確認します。

  8. データセットが暗号化されている ([Encrypt query results (クエリ結果の暗号化)] がワークグループ設定で選択されている) 場合は、IAM ユーザーまたはロールがその AWS KMS キーポリシーのキーユーザーとして追加されていることを確認します。KMS 設定には、https://console.aws.amazon.com/kms からアクセスできます。

Athena が使用する S3 バケットへのアクセスを許可するには

  1. Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. [Query result location (クエリ結果の場所)] で、Athena が使用する S3 バケットを選択します。

  3. [Permissions (アクセス許可)] タブで、アクセス許可を確認します。

詳細については、AWS サポート記事 Athena クエリを実行すると「アクセスが拒否されました」というエラーが表示されるを参照してください。