Amazon S3 Tables の Iceberg テーブルを Amazon QuickSight で可視化する   #AWSreInvent

Amazon S3 Tables の Iceberg テーブルを Amazon QuickSight で可視化する #AWSreInvent

Clock Icon2025.01.07

クラウド事業本部コンサルティング部の石川です。本日は、Amazon S3 Tables の Iceberg テーブルに Amazon QuickSight から可視化してみます。クエリを実行するIcebergテーブルは、以前のブログで作成したものを用います。

https://dev.classmethod.jp/articles/amazon-s3-tables-performance-reinvent2024/

Amazon QuickSight からアクセスの概要

Amazon QuickSight からAmazon S3 Tables の Iceberg テーブルは、直接参照できないためリソースリンクを作成します。リソースリンクというのがデータベースの代わりになるものだとイメージしてください。

また、Amazon QuickSight サービスロール(aws-quicksight-service-role-v0)にIAM権限付与しますが、実際のリソースリンクやテーブルにアクセスするのは、Amazon QuickSight 管理者ユーザーの ARNとなります。そのため、Lake Formation アクセス許可は、Amazon QuickSight 管理者ユーザーとなります。

Lake Formation コンソールからDatabase(Resource link)を作成します。

amazon-s3-tables-redshift-reinvent-1

Resource Linkを選択して、Resource Link nameを指定します。後は、デフォルトやプルダウンから設定できます。

amazon-s3-tables-redshift-reinvent-2

Databaseの一覧に作成したResource Linkが表示されます。

amazon-s3-tables-redshift-reinvent-3

Amazon QuickSight からアクセスする権限を設定する

Amazon QuickSight から S3 Tablesの Iceberg テーブルに参照するためには、Amazon QuickSight サービスロール(aws-quicksight-service-role-v0)、Amazon QuickSight 管理者ユーザーにアクセス許可を付与し、アクセスするテーブルに対する Lake Formation アクセス許可を付与する必要があります。

Amazon QuickSight サービスロールにIAMポリシーを追加

Amazon QuickSight が S3 Tablesのデータソースにアクセスできるようにデフォルトのロールaws-quicksight-service-role-v0に以下のIAMポリシー(インラインポリシー)を追加を追加します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": "glue:GetCatalog",
      "Resource": "*"
    }
  ]
}

上記の通り、S3 Tablesに対するアクセスを付与するのではなく、Glue Catalogに関する権限を付与するのみで、実際の権限付与はLake Formation アクセス許可を付与することになります。

また、QuickSightを使い慣れている方ですと、QuickSightの[セキュリティとアクセス許可]で設定するのではないかと考えるかもしれません。将来的にはそのように変更される可能性もあります。

アクセスするテーブルに対する Lake Formation アクセス許可を付与

AWSCLIコマンドを実行して Amazon QuickSight 管理者ユーザーの ARN を探します。

$ aws quicksight list-users --aws-account-id 123456789012 --namespace default --region us-east-1
{
    "UserList": [
        {
            "Arn": "arn:aws:quicksight:us-east-1:517444948157:user/default/cm-ishikawa.satoru/cm-ishikawa.satoru",
            "UserName": "cm-ishikawa.satoru/cm-ishikawa.satoru",
            "Email": "[email protected]",
            "Role": "ADMIN",
            "IdentityType": "IAM",
            "Active": true,
            "PrincipalId": "federated/iam/AROAIQYDPIIE4D75QUZEM:cm-ishikawa.satoru"
        }
    ],
    "Status": 200,
    "RequestId": "f52930b1-8e6e-4a68-92e1-c18819df05f6"
}

Database(Resource link)の権限付与

作成したDatabase(Resource link)に対して権限を付与します。

amazon-s3-tables-quicksight-reinvent-1

実際のリソースリンクやテーブルにアクセスするのは、先ほどコマンド実行して探した Amazon QuickSight 管理者ユーザーとなります。そのため、「SAML users and groups」を選択して、Lake Formation アクセス許可は、Amazon QuickSight 管理者ユーザーの ARNとなります。

ここでは、Database(Resource link)に対して、Describeのみを付与します。

amazon-s3-tables-quicksight-reinvent-2

Database(Resource link)内のテーブル

次にDatabase(Resource link)内のテーブルに対して権限付与します。

amazon-s3-tables-quicksight-reinvent-3

ここでは、Database(Resource link)内のすべてのテーブルに対してテーブル権限のすべてを付与します。

amazon-s3-tables-quicksight-reinvent-4

QuickSightのデータセットの作成と可視化

権限の付与が終わったので、データセットを作成します。データセットは、S3 TablesではなくAthenaです。

amazon-s3-tables-quicksight-reinvent-5

任意のデータソース名を入力して、[データソースを作成]を押します。

amazon-s3-tables-quicksight-reinvent-6

データベースのところに、手順の最初に作成したリソースリンクを指定すると、テーブルの一覧が表示されます。

amazon-s3-tables-quicksight-reinvent-7

今回は、レコード数が多いため「データクエリを直接実行」を選択して、[Visualize]を押します。

amazon-s3-tables-quicksight-reinvent-8

後は、普通にQuickSightのビジュアルを作成できます。

amazon-s3-tables-quicksight-reinvent-9

最後に

Amazon S3 Tables の Iceberg テーブルを Amazon QuickSight で可視化する方法について、詳細なステップバイステップの手順を紹介しました。この過程では、Lake Formation でのリソースリンクの作成、必要な権限の設定、そして QuickSight でのデータセット作成と可視化までを網羅しています。この方法を使うことで、S3 Tables に格納された大規模なデータセットを効率的に分析し、視覚化することが可能になります。ただし、設定には複数のステップが必要であり、特に権限の設定には注意が必要です。しかし、一度設定が完了すれば、QuickSight の強力な可視化機能を活用して、Iceberg テーブルのデータを簡単に探索し、インサイトを得ることができます。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.