はじめに
OCI Data Integrationのエクスポート、インポート機能を使うと、任意のタイミングのリソースをObject Storageに保存し、それを別のワークスペースにインポートすることが可能です。
以下を対象にエクスポート、インポートを実行できます。
- プロジェクトおよびフォルダ
- タスク
- データ・フロー
- パイプライン
- ユーザー定義関数および関数ライブラリ
- アプリケーション(12月リリースで可能になりました)
Livelabsのワークショップで作成できるプロジェクトでエクスポート/インポートを試してみます。
なお、前提として、エクスポートおよびインポートに使用されるObject Storageのバケットへのアクセスに必要なポリシーは付与済みとします。
プロジェクトのエクスポート/インポート
エクスポートをクリックすると、エクスポートファイルを出力するオブジェクト・ストレージの設定画面になります。
テナンシOCID、OCIDリージョン、コンパートメント、バケット、ファイル名の編集が可能です。
ファイルの拡張子はproject.zipのようにエクスポートする対象.zipとなります。このファイルの拡張子はインポートの時も参照されるため変更不可です。
また参照を含めるのチェックボックスをチェックすると、プロジェクトで参照しているデータ・アセットなどのオブジェクトを含めることができます。デフォルトはチェックがされています。
設定後エクスポートを実行すると、エクスポート・リクエストの表示のリンクを含む通知が表示されます。
もし通知が消えてしまっても、ホーム画面のエクスポート/インポートのリクエストで確認ができます。
アクセスすると、実行したリクエストのステータスおよびこれまでのリクエストの履歴が確認できます。
詳細の表示ではエクスポートしたオブジェクトのリストを確認することができます。
エクスポートが成功だったので、Object Storageを確認すると設定された名前のファイルが確認できました。
エクスポートファイルの中身は?
エクスポートファイルをダウンロードして中をのぞいてみました。Objectsというフォルダとマニフェストファイルがあります。
Objectsフォルダにはプロジェクトに含まれている設計リソースのJSONファイルがあるようです。参照を含めたため、データ・アセットや接続のJSONファイルも存在します。
各JSONファイルをのぞいてみると、マニフェストファイルの内容は以下でした。
データ・アセットは例えば以下でした。
エクスポートファイルを同じテナンシーの別リージョンのOCI Data Integrationワークスペースにインポート
エクスポートしたファイルのインポートを試します。インポート先は同じテナンシーで別リージョンのワークスペースです。
プロジェクトの作成からインポートを選択します。
エクスポートファイルを出力したObject Storageのバケットとエクスポートファイル名を指定します。
インポート先に同じ名前のオブジェクトが存在した場合のアクションを保持、置換、複製から選択することが可能です。複製の場合は、指定した接頭辞、接尾辞が追加されたオブジェクト名でインポートがされます。
インポートをクリックすると、インポート・リクエストの表示リンクを含む通知が表示されます。もし、消えてしまってもエクスポートの時と同じく、ホーム画面のエクスポート/インポートのリクエストで確認ができます。
インポートされたオブジェクトのリストが確認できます。解決処理にはインポートで指定したアクションに従った処理がされた結果がはいります。例では新規に作成されたため、「作成済み」となっています。
プロジェクトのページではインポートされたプロジェクトを確認できました。
プロジェクトの配下には、設計リソースも確認できます。
データ・アセットも確認できます。
Object Storageのデータ・アセットはポリシー上アクセスできるようになっていたので、そのままスキーマ(バケット)などを確認することができました。
しかし、Autonomous Databaseのほうは、クレデンシャルファイルデータがない、というエラーになりました。
実際に処理を実行するためには、クレデンシャルを再設定する必要があります。
エクスポートファイルを別のテナンシーの別リージョンのOCI Data Integrationワークスペースにインポート
次に別テナンシーの場合を試してみました。今回はテナンシーをまたいだポリシー設定を行っていないので、出力したエクスポートファイルを別テナンシーのObject Storage上のバケットに配置してインポートしました。インポートの結果は成功です。
インポートされたデータ・フローを確認すると、エクスポートされたフローがきちんと表示されました。しかし、ソースであるObject Storageのファイル、ターゲットであるAutonomous Databaseいずれもアクセスするとデータ・エンティティを取得できないというエラーが表示されます。
これは、インポートの結果から確認できる通り、どちらもデータ・アセットとしては作成されていますが、Object Storageのデータ・アセットはアクセスできるポリシーがないため、またAutonomous Databaseもクレデンシャルがないためアクセスできないからとなります。
おわりに
OCI Data Integrationのプロジェクトをエクスポートし、インポートをリージョン、テナンシーを変えて試してみました。どちらも設計リソースのインポートは成功しますが、データ・アセットをともにエクスポートして、インポートした場合は環境に適したポリシーや改めてのクレデンシャルの指定が必要となることが確認できました。
参考資料
- ドキュメント:オブジェクトのエクスポートおよびインポート
- Davidさんのblog : Exporting and Importing in OCI Data Integration
⇒OCICLIでの方法も記載されています