1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

S3 Tablesを利用するAWSアーキテクチャ構築:QuickSight

Last updated at Posted at 2025-01-31

はじめに

本記事は、以下記事の続きです。

今回は、S3テーブルバケット内のテーブルのデータを、
QuickSightのデータセットとして利用するまでの設定を行っていきます。

以下AWS公式記事の手順を参考にしています。

構成図

最終的な構成図は以下です。
image.png

本記事では QuickSightから(Athena経由で)S3 Tablesにデータセット接続する 部分を実装します。

実装手順

以下ステップで実装していきます。
ステップ2~5では、権限管理Lake Formationも出てきます。
本記事では 5. QuickSightからデータセット接続 のステップを行っていきます。

  1. S3テーブルバケットを作成
  2. EMRからスキーマ作成
  3. Firehoseからデータ送信
  4. Athenaからクエリ実行
  5. QuickSightからデータセット接続

QuickSightからデータセット接続てじゅn

以下ステップで行います。

  1. QuickSightにサインアップ
  2. QuickSightIAMロール ポリシー設定
  3. Lake Formationから権限設定
  4. QuickSightデータセット作成
  5. QuickSightダッシュボード作成
  6. QuickSightアカウントのクリーンアップ

QuickSightにサインアップ

まず、QuickSightへのサインアップを行います1

コンソール操作:
AWSコンソール検索画面から「QuickSight」をクリック → 「QuickSightにサインアップ」をクリック

image.png

以下の通り設定し、「完了」をクリック。
※赤枠以外はデフォルトのままです。
image.png

アカウント作成が完了すると、以下画面が表示されます。
image.png

QuickSightIAMロール ポリシー設定

次に、QuickSight用のAWSデフォルトロール(aws-quicksight-service-role-v0)に、ポリシーを追加します。

コンソール操作:
「IAMコンソール」 → 「ロール」 → 「aws-quicksight-service-role-v0 」詳細画面
「許可を追加」→ 「インラインポリシーを作成」 → 「ポリシーエディタ: JSON」

以下JSONを貼り付けます。

QuickSight用ロールにインラインポリシー追加
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": "glue:GetCatalog",
      "Resource": "*"
    }
  ]
} 

image.png

任意のポリシー名を設定し、ポリシーを作成(ロールを更新)します。

Lake Formationから権限設定

Lake Formationで、S3テーブルバケット内のテーブルへの権限を付与します。

QuickSight管理者ユーザーを確認

続いて、設定されているQuickSight管理者ユーザーを確認します。
以下AWS CLIコマンド実行結果から確認します。

QuickSight管理者ユーザー確認コマンド
aws quicksight list-users --aws-account-id <アカウントID> --namespace default --region ap-northeast-1

以下のような出力が出てくるので、
QuickSight管理者ユーザー("Role": "ADMIN")のArnの値をメモしておきます。
※この後Lake Formationにて、そのユーザーへの権限を付与していきます。

出力結果
{
    "UserList": [
        {
            "Arn": "arn:aws:quicksight:ap-northeast-1:<アカウントID>:user/default/<IAMユーザー名>",
            "UserName": "<IAMユーザー名>",
            "Email": "<設定したQuickSight用メールアドレス>",
            "Role": "ADMIN",
            "IdentityType": "IAM",
            "Active": true,
            "PrincipalId": "federated/iam/<ID情報>"
        }
    ],
    "Status": 200,
    "RequestId": "<リクエストID>"
}

Lake Formationからテーブル権限付与

確認したArnに対して、Lake Formation経由でS3テーブルバケット内のテーブルへの権限を付与します。

以下の通り設定します。
image.png

QuickSightデータセット作成

QuickSight アカウントにサインインします。

QuickSightダッシュボード操作:
「新しい分析」 → 「新しいデータセット」 → 「Athena」を選択

以下の通り、任意のデータセット名を設定し、「データソースを作成」
image.png

「カスタム SQL の使用」をクリックし、
以下の通り、カスタムSQLを設定します。

カスタムSQL
SELECT * FROM "s3tablescatalog/<S3テーブルバケット名>".<S3テーブルバケットの名前空間>.<S3テーブルバケットのテーブル>

データセット作成が完了したら、以下画面が出てきます。
image.png

QuickSightダッシュボード作成

データセット作成が完了したら、続けてダッシュボードを作成してみます。
今回はシンプルなテーブルを表示してみます。

以下の通り、
「データクエリを直接実行」を選択し、「Visualize」をクリック
image.png

  • ビジュアルタイプ: テーブル
  • ディメンションフィールド: id, name, value
    EMR実装記事にて定義したフィールド

以下のように、S3テーブルバケットのテーブル内の値が確認できました。
DataFirehose実装記事にて格納したデータ

image.png

QuickSightアカウントのクリーンアップ

QuickSightアカウントは、ユーザーあたりの課金が発生する2ので、
不要な場合はサブスクリプション削除/アカウント閉鎖3を行います。

QuickSightダッシュボード操作:
右上ユーザーアイコン → QuickSightを管理 → アカウント設定 → アカウントの終了 管理

image.png

アカウントの終了保護: off → 「確認」と入力 → 「アカウントを削除」
image.png

サブスクライブ解除成功すると、以下が表示されます。
image.png

最後に

S3テーブルバケット内テーブルのデータを、
QuickSightダッシュボードで表示するところまでを確認しました。
お疲れさまでした。

参考URL

この記事で参考にしたURLです。

  1. AWS記事:Signing up for an Amazon QuickSight subscription
    https://docs.aws.amazon.com/quicksight/latest/user/signing-up.html

  2. AWS記事:Amazon クイックサイトの価格
    https://aws.amazon.com/jp/quicksight/pricing/

  3. AWS記事:Amazon QuickSight サブスクリプションの削除とアカウントの閉鎖
    https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/closing-account.html

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?