4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

QuickSightからAthenaにつなごうとしてもデータベースがリストに出てこない

Last updated at Posted at 2021-12-20

はじめに

データを可視化しようとしてQuickSightからAthenaのテーブルを参照しようとしたときに、
まずはそのデータセットを作成します。
データセットの作成時にデータベースを選択するのですが、
データベースの候補として目的のAthenaデータベースがリストに出てこず、
困ってしまいました。

Athenaのコンソール上にはもちろん存在しているのを確認しました。
AthenaのリージョンとQuickSightのリージョンも一致しているのを確認しました。
QuickSightの管理画面でAthenaを許可しているのも確認しました。
Amazon QuickSight で Athena を使用するときに発生する問題のトラブルシューティングを見てもそれっぽいものが見当たりません。

色々調べた結果、目的のデータベースを選択してデータセットを作成できるようになったので、
同じ現象で困った方のために解決方法を残しておきます。

原因

LakeFormationでの権限が与えられていないから です。

QuickSightが内部で使うロールと、
QuickSight内で管理されている自分自身のIAMユーザ/グループ
の両方に許可を与える必要があります。

AWSにログインしている状態からQuickSightの画面に行くと
シームレスにつながっているので普段の作業中は意識をしていないですが、
AWS上でのIAMユーザとQuickSight内で管理されているIAMユーザとは別物なので、
別途権限を与える必要があります。
(私はこのことが理解できてなくて、しばらくハマってました)

なお、この現象はQuickSightのEnterprise Editionでのみ発生するようです。

解決方法

原因のところに書いたようにLake Formationにて権限を与えます。

Lake Formationを開きます。
Data catalog > Databases から目的のデータベースを選択します。
image.png

Actions > View permissoins
現在付与されている権限が出てきます。
付与されているべき権限が与えられていない場合はそれぞれ付与していきます。

QuickSightのロールへの権限付与

QuickSightが内部的に使っているRole
 aws-quicksight-service-role-v0
 aws-quicksight-s3-consumers-role-v0
に権限を与えます。

データベースへの付与

目的のデータベースを開いた画面から、
Actions > Grant でGrant data permissions の画面を開きます。

  • Principals
    IAM users and roles を選択し、IAM users and rolesから
    aws-quicksight-service-role-v0
    aws-quicksight-s3-consumers-role-v0
    を選択します。
  • LF-Tags or catalog resources
    Named data catalog resourcesを選択します。
    Databases : 目的のデータベースが選択済みなのでそのままにしておきます。
  • Database permissions
    QuickSightからは表示させるだけなので、
    Database permissions に Describeを与えておきます。
    image.png

これらを入力したらGrantボタンを押下します。

テーブルへの付与

先程と同じくGrant data permissions の画面を開きます。

  • Principals
    先程と同じようにIAM users and roles を選択し、IAM users and rolesから
    aws-quicksight-service-role-v0
    aws-quicksight-s3-consumers-role-v0
    を選択します。
  • LF-Tags or catalog resources
    Named data catalog resourcesを選択します。
    Databases : 目的のデータベースが選択済みなのでそのままにしておきます。
    Tables : All tables を選択します。
  • Table permissions
    Table permission : Select Describe にチェックをつけます。

image.png

これらを入力したらGrantボタンを押下します。

QuickSight管理のIAMユーザへの権限付与

ユーザのarnの調査

付与するにあたりIAMユーザのarnを知っておく必要があります。
画面上では調べることができないのでCLIで調べます。
CloudShellなどで以下のコマンドを発行します。

aws quicksight list-users --aws-account-id アカウントID --namespace ネームスペース

発行すると対象となるユーザのarnが得られるのでメモっておきます。

[cloudshell-user@ip-999-999-999-999 ~]$ aws quicksight list-users --aws-account-id 999999999999 --namespace default
{
    "Status": 200,
    "UserList": [
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:999999999999:user/default/user1",
            "UserName": "user1",
            "Email": "user1@example.com",
            "Role": "ADMIN",
            "IdentityType": "IAM",
            "Active": true,
            "PrincipalId": "federated/iam/AAAAAAAAAAAAAAAAAAAAA"
        },
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:999999999999:user/default/user2",
            "UserName": "user2",
            "Email": "user2@example.com",
            "Role": "ADMIN",
            "IdentityType": "IAM",
            "Active": true,
            "PrincipalId": "federated/iam/BBBBBBBBBBBBBBBBBBBBB"
        },
~略~

QuickSightのグループに対して付与することもできます。
グループに付与する場合は
aws quicksight list-groups --aws-account-id アカウントID --namespace ネームスペース
でグループのarnをメモっておきましょう。

データベース、テーブルへの付与

Roleに与えた時と同様にGrant data permissions の画面を開きます。

  • Principals
    SAML users and groupsを選択し、先ほど調べたarnを入力します。

image.png

後はRoleに与えた時と同様にデータベース、テーブルそれぞれに設定してGrantします。

おわりに

もし同じ症状で悩んでいる方のお役に立てれば幸いです。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?