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

【Amazon QuickSight】共有フォルダのエクスポートとインポートについての検証

Last updated at Posted at 2025-04-22

はじめに

こんにちは。
株式会社ジールの@y_seimiya_zdhです。
2024年10月にアップデートが発表された「Amazon QuickSight でプログラムによる共有フォルダのエクスポートとインポートがサポート開始」について検証を行いました。

QuickSightではいくつかの方法で、アセットの移行やバックアップが可能ですが、今回のアップデートではAssetBundleJob系のAPIについて、共有フォルダを指定してフォルダ内のアセットを再帰的に取得することが可能になりました。

1.背景

AssetBundleとは

ダッシュボードやデータセットなどのアセットを1つのファイルにまとめ、エクスポート・インポートを可能な状態にしたものです。AssetBundleを使用することにより、1度で複数のアセットを他のユーザーと共有や、異なる環境への移行が可能になり、効率的に移動や共有を行うことができます。

AssetBundleJobとは

QuickSightAPIの一種であり、アセットの定義情報をjson形式で取得することが可能です。上記であればQuickSightのdescribe系のAPI(DescribeAnalysisDefinitionなど)でも可能ですが、AssetBundleJobは「依存するすべてのアセットをエクスポート」できる点が特徴です。

AssetBundleJob関連のAPIについて

AssetBundleJob系のAPIは、ジョブを開始するものと、ジョブの詳細を取得するもの、過去のジョブ一覧を取得するものがあります。

ジョブ開始系API

ジョブ詳細取得API(Describe系)

ジョブ一覧取得API

2.検証内容

検証1:フォルダ内の再帰的取得について

StartAssetBundleExportJobを実行し、共有フォルダ内の下層のアセットについても問題なくエクスポートできるかを確認します。

検証2:出力したアセットのインポートについて

出力したアセットに対してStartAssetBundleImportJobを実行し 、問題なくインポート可能か確認します。

検証3:複数アカウント間でのエクスポート・インポートについて

出力したアセットを、別アカウントにて問題なくインポート可能か確認します。

検証4:エクスポートされる「.qsファイル」とDescribe系APIとの差について

検証1にて出力した「.qsファイル」に対して手動で「.zip」に書き換えてjsonファイルとして解凍します。Describe系APIで取得した定義情報とどのような差があるか確認します。

3.検証手順・検証結果

検証1:フォルダ内の再帰的取得について

下記手順の元、QuickSightに共有フォルダを作成、各アセットを配置しStartAssetBundleExportJobを実行します。
IncludeFolderMembers=RECURSEとしているため、フォルダ内のすべてのアセットが問題なくエクスポートできることを確認できました。

検証手順

①QuickSight上に共有フォルダを作成し、共有フォルダ内にデータセット・分析・ダッシュボードを配置
01. アセット配置.png

②AWSのCloud Shellにて下記コマンドを実行し、共有フォルダのARNを確認

aws quicksight list-folders --aws-account-id [AWSアカウントID]

image.png

③以下のコマンドを実行し、アセットのエクスポートを開始

aws quicksight start-asset-bundle-export-job --aws-account-id [AWSアカウントID] --asset-bundle-export-job-id [ジョブ名] --resource-arns [②で確認したARN] --include-all-dependencies --include-folder-members RECURSE --export-format QUICKSIGHT_JSON

image.png
※設定値IncludeFolderMembersとIncludeFolderMembershipsの差異について
・IncludeFolderMemberships
 リソースに関連するメンバーシップ情報をエクスポートする
・IncludeFolderMembers
 「RECURSE」の場合、フォルダ下のアセットもExport対象になる

④以下のコマンドを実行し、アセットのダウンロードを実施

aws quicksight describe-asset-bundle-export-job --aws-account-id [AWSアカウントID] --asset-bundle-export-job-id [ジョブ名]

image.png

⑤Cloud Shell にダウンロードしたアセットをアップロード
image.png
image.png

⑥以下のコマンドでアセットを解凍

unzip [ダウンロードファイル名]

image.png

検証2:出力したアセットのインポートについて

下記手順の元、検証1にて出力されたアセットに対して、ImportJobを実行します。
実行後、共有フォルダ内にすべてのアセットがインポートされていることが確認できました。
また、一部のアセットのみインポートにつきましても可能であるようです。
ただし、依存関係となるアセットがインポート先のQuickSight上に存在している場合といった条件下においてインポートすることが可能です。
例えば、QuickSight上にanalysisの依存関係となるデータセットが存在している場合、analysisのみのインポートが可能になる、といった条件があります。

検証手順

①Quicksightから「検証①」で作成した共有フォルダを削除しておく
image.png
※共有フォルダが存在する状態で、ExportしたアセットをImportすると変化がないため、元のアセットが存在する場合、正常にImportが行われない。

②S3バケットに「検証1-1」でExportしたアセットをアップロード
image.png

③以下のコマンドを実行し、アセットをインポート

aws quicksight start-asset-bundle-import-job --aws-account-id [AWSアカウントID] --asset-bundle-import-job-id [ジョブ名] --asset-bundle-import-source [S3バケットパス] --region [リージョン名]

image.png

④以下のコマンドを実行し、インポートが実行されたことを確認

aws quicksight describe-asset-bundle-import-job --aws-account-id [AWSアカウントID] --asset-bundle-import-job-id [ジョブ名] --region [リージョン名]

image.png

⑤共有フォルダを確認するが、閲覧権限が無いためフォルダが表示されない
image.png

⑥設定から「QuickSightを管理」を選択
image.png

⑦メニューから「アセットの管理」を選択
image.png

⑧共有フォルダの共有を行う
image.png

⑨設定後、共有フォルダを再度確認
image.png

問題なくインポートが行われています。

検証3:複数アカウント間でのエクスポート・インポートについて

下記手順にて環境Aのアセットをエクスポートし、環境Bにインポートを行いました。
ただし、インポート先環境のアセットと連携する項目は、コマンド実行時に--override-parametersによる設定値の上書きが必要になります。

検証手順

環境Aのアセットをエクスポートし、環境Bにインポートを行います。

①環境Aにデータセット・分析・ダッシュボードを含む共有フォルダを作成
image.png

②AWSのCloud Shellにて下記コマンドを実行し、共有フォルダのARNを確認

aws quicksight list-folders --aws-account-id [AWSアカウントID]

image.png

③下記コマンドを実行し、エクスポートを開始

aws quicksight start-asset-bundle-export-job --aws-account-id [AWSアカウントID] --asset-bundle-export-job-id [ジョブ名] --resource-arns [3.で確認したARN] --include-all-dependencies --include-folder-members RECURSE --export-format QUICKSIGHT_JSON

image.png

④下記コマンドを実行し、ダウンロード

aws quicksight describe-asset-bundle-export-job --aws-account-id [AWSアカウントID] --asset-bundle-export-job-id [ジョブ名]

image.png

⑤環境BのS3にデータソースとマニフェストファイルをアップロード
※アセットは環境Aのデータソース・マニフェストファイルを参照しているが、環境Bより閲覧する権限がないためエラーが発生する。そのため環境Bにも同様のデータソース・マニフェストファイルを配置し、参照させる必要がある。
image.png

⑥下記コマンドを環境Bにて実行し、インポート

aws quicksight start-asset-bundle-import-job --aws-account-id [AWSアカウントID] --asset-bundle-import-job-id [ジョブ名] --asset-bundle-import-source [S3バケットパス] --override-parameters '{"DataSources": [{"DataSourceId": [データソースID], "DataSourceParameters":{ "S3Parameters": {"ManifestFileLocation": {"Bucket": [S3バケット名], "Key": [マニフェストファイルのパス]}}}}]}' --region [リージョン名]

※「DatasourceId」はエクスポートしたqsファイルを展開し、「datasource」フォルダを確認する

⑦下記コマンドを実行し、インポートされたことを確認

aws quicksight describe-asset-bundle-import-job --aws-account-id [AWSアカウントID] --asset-bundle-import-job-id [ジョブ名] --region [リージョン名]

⑧QuickSightにてインポートしたアセットに閲覧許可をかける
image.png

⑨共有フォルダを確認
image.png
image.png

複数アカウント間でのインポート・エクスポートが確認できました。

検証4:エクスポートされる「.qsファイル」とDescribe系APIとの差について

下記手順にて検証を行い、それぞれの確認結果は以下の通りとなりました。

分析・ダッシュボード

  • definition内の構造は同一である
  • folderArns:jsonファイルには含まれているが、describeAPI出力には含まれていない
  • validationStrategy:jsonファイルには含まれているが、describeAPI出力には含まれていない

データセット

  • 物理テーブル(physicalTableMap)と論理テーブル(logicalTableMap)は同一である
  • folderArns:jsonファイルには含まれているが、describeAPI出力には含まれていない
  • DataSetUsageConfiguration:jsonファイルはfalseとなっているが、describeAPI出力ではDisableUseAsDirectQuerySourceとDisableUseAsImportedSourceと記載されている

データソース

  • dataSourceParametersは同一である
  • jsonファイルでは、Status、CreatedTime、LastUpdatedTime、RequestIdが含まれていない
  • describeAPI出力では、Status、CreatedTime、LastUpdatedTime、RequestIdが含まれている

フォルダ

  • folderID、name、folderType、sharingModelは同一である
  • jsonファイルでは、作成時間(CreatedTime)や更新時間(LastUpdatedTime)に関する情報が含まれていない
  • describeAPI出力では、作成時間(CreatedTime)や更新時間(LastUpdatedTime)が含まれている
検証手順

①検証1でエクスポートしたアセットの拡張子を「.zip」に変更し展開
image.png
image.png

②フォルダの中身がjsonファイルになっていることを確認
image.png

③DescribeAPIにて定義情報を取得

「analysis」の部分を下記アセットに変更し、各IDを取得

  • 各ID確認
    • analysis
    • dashboards
    • data-sets
    • data-sources
    • folders
aws quicksight list-analysis --aws-account-id [AWSアカウントID]
  • 定義情報取得
    上記にて取得した各IDにて、各定義情報取得
aws quicksight describe-analysis --analysis-id [ANALYSISID] --aws-account-id [AWSアカウントID]

おわりに

今回はAWS QuickSightの共有フォルダのエクスポートとインポートについて検証を行いました。複数環境でのエクスポート・インポートを活用することで、複数チームやアカウント間で同じ環境を再現することが可能となり、業務効率化に対して有効であると考えられます。

参考資料

[1]Amazon QuickSight でプログラムによる共有フォルダのエクスポートとインポートがサポート開始
[2]StartAssetBundleExportJob
[3]StartAssetBundleImportJob
[4]DescribeAssetBundleExportJob
[5]DescribeAssetBundleImportJob
[6]ListAssetBundleExportJobs
[7]ListAssetBundleImportJobs


株式会社ジールでは、「ITリテラシーがない」「初期費用がかけられない」「親切・丁寧な支援がほしい」「ノーコード・ローコードがよい」「運用・保守の手間をかけられない」などのお客様の声を受けて、オールインワン型データ活用プラットフォーム「ZEUSCloud」を月額利用料にてご提供しております。
ご興味がある方は是非下記のリンクをご覧ください。

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