別アカウント環境への移行(分析の移行)

AWS QuickSightで新しいアカウントにデータセットを移行しました。その後、移行したデータセットを元にビジュアルを作成したのですが、ビジュアルのフィールドに関して「フィールドが見つかりません」と表示され、ビジュアルの表示ができません。

移行作業は以下の通りです:

  • 元のアカウントでの分析をエクスポート。(PowerShellを使用)
  • 新しいアカウントに分析をインポート。
  • 新しいアカウントで同様のデータセットを作成したが、新しいアカウントの分析にはつながらなかった。
  • そのため、前の環境で作成し繋がっていたデータセットを削除し、新しいアカウントで作成したデータセットを接続。
  • データセットは接続されましたが、ビジュアルでは「フィールドが見つかりません」と表示され、エラーが発生。また、前環境で作成した計算フィールドも表示されません。

何か解決の糸口があれば、教えていただけますと大変助かります。

@youpinco さん、お問い合わせありがとうございます。

現在の状況としては以下のように理解しましたが、認識相違ございませんでしょうか?

  • 実現したいこと:QuickSightの分析を同一リージョン内(例. 東京)でアカウントAからアカウントBに移行したい
  • AWS Tools for PowerShell の Start-QSAssetBundleExportJob および Start-QSAssetBundleImportJob コマンドを使い分析のエクスポート・インポートを実行した
  • エクスポートはQUICKSIGHT_JSON形式で行っている

ビジュアルでは「フィールドが見つかりません」と表示され、エラーが発生。

こちらですが、分析内の各フィールドはデータセットに紐づくフィールドIDを持っているのですが、分析内で参照しているフィールドとデータセットが一致していないため発生しているものと考えられます。

解決の支援をするにあたり、以下の点について教えていただけますでしょうか。

  • 分析をエクスポートする際に -IncludeAllDependency パラメータは指定していますでしょうか?
  • 「前の環境で作成し繋がっていたデータセットを削除し、新しいアカウントで作成したデータセットを接続」というのは具体的にどのような手順で行われていますでしょうか?

なお、分析をエクスポートする際に -IncludeAllDependency パラメータを指定すると、分析と依存関係にあるデータセットやデータソース等のアセットも.qsファイルに含まれる形でエクスポートが実行されます。この場合、アカウントBにインポートする際、-OverrideParameters_DataSource パラメータを利用することで、データ―ス定義が参照している物理データソース(S3、Athena、Redshift等々)をアカウントB内のもので上書きしデータソースおよびデータセットがインポート(作成)されます。こちらの方法を使うと、データソースやデータセットを作り直す必要がありませんので、もしこの方法をお使いでない場合にはお試しいただければと思います。

-OverrideParameters_DataSource に指定可能なパラメータについては以下ページを参照ください。

PowerShellではなくAWS CLIにはなりますが、以下ブログにS3データソースを上書きする例があり、こちらをご覧いただくとイメージが掴めるかと思いますのでご参考にしてください。

ご返信ありがとうございます。
ご認識に相違ございません。

いただいたご質問について、補足を含めて共有させていただきます。

まず、パラメータの指定に関してですが、当方でも明確に把握しないままコマンドを実行してしまったため、参考として、以下の画像(エクスポート時に使用したコマンド)をご確認いただけますと幸いです。

データセットの作成手順としては、アカウントAのS3上にあった既存のCSVファイルを、新しいファイル名でアカウントBのS3アップロードし、QuickSight内ではアカウントAと同名のデータセットを新たに作成しています。

結果としては自力で解決できたのですが、以下の点について不明な部分があり、ご確認させていただきたく存じます。


エクスポートし、ダウンロードした .qsファイル内に、データセット情報が含まれていなかったことが、主な原因と考えています。
そのため、当該 .qs ファイルのJSON内に、手動で以下の情報を追記しました。

  • インポート先(アカウントB)のアカウントID
  • アカウントB上のデータセットARN(データセットURLより取得)

この作業を踏まえ、以下3点についてご教示いただけますと幸いです。


手動追記以外に、より適切な方法はございますか?
例:エクスポート時にデータセット情報を自動的に含める設定など。

“customLabel”: “” の扱いについて
当初、インポート時に "FAILED_ROLLBACK_COMPLETED" エラーが発生し、エラーメッセージとして "Provided bundle is not a valid QUICKSIGHT format asset bundle" が表示されました。そこで、.qs ファイル内の "customLabel": "" をすべて "customLabel": "xxx" に一括置換したところ、インポート自体は成功しましたが、分析画面上で一部のラベル名が意図せず"xxx"に変更されてしまいました。
本項目については、空白のまま保持しておくべきか、それとも他に推奨される記述方法があるかをご教示いただけますと幸いです。

データセット名の一致要否について
アカウントBで、アカウントAと同一のデータセット名にする必要があるかどうか、および名前の一致がJSON読込時に与える影響について、確認させてください。


お忙しい中恐縮ですが、ご確認のほどよろしくお願いいたします。

@youpinco さん、ご確認いただきありがとうございます。

頂いた情報で状況が良く理解できました。最初の投稿でPowerShellとの記載がありましたが、実際にご利用になっているのはAWS CLIであることも併せて理解しました。

–include-all-dependencies パラメータを指定していないため分析単体でエクスポートしており、インポートした際に分析内で参照しているデータセットの情報が一致していないのがエラーの原因と見て間違いないと思います。

手動追記以外に、より適切な方法はございますか?

前回の投稿の通り、–include-all-dependencies パラメータを指定してデータセットやデータソースの定義も含めてエクスポートし、–override-parameters パラメータでデータソースをアカウントB側のS3(CSV)にすることで対応が可能です。
※前回参考として添付したブログ内で行っているのが、まさにこちらの方法です。

“customLabel”: “” の扱いについて

こちらは特段インポートの際に変更いただく必要はございません。念のため私の手元環境でも試したところcustomLabelの値が空欄(“”)でもエラーは発生しませんでした。
"Provided bundle is not a valid QUICKSIGHT format asset bundle" のエラーはインポートしたバンドル内のフォーマットに構文的な誤りがあることが原因として考えられます。実際にエラーが発生した際のファイルを見てみないと具体的な原因箇所の特定はできませんが、恐らくどこか別のところに原因があったのではないかと思います。

データセット名の一致要否について

エクスポートした分析の.jsonファイルをご覧いただくと分かるのですが、前述の通り分析内で利用されているフィールドにはデータセット内のテーブルを参照する形でフィールドIDが付与されています。そのため、単純に同名のデータセットをアカウントB側に作っておいても、分析内部で参照しているデータセット内の情報とは一致しません。そのため、むしろデータセット名はまあり重要ではなく、アカウントA側の定義と同じデータセットBを作ることが重要となります。そのため、①で回答した方法をお試しいただけますと幸いです。