[いまさら聞けないIDMC]開発資産をエクスポートする(REST API編)

## IDMCの資産をZip化する
IDMC上で開発したアセットは、Zip化してダウンロードし
管理することができます。

:::note info
IDMCは、Informatica社のデータマネジメントクラウドサービス
Intelligent Data Management Cloudの略です。
:::

数ある豊富なIDMCの機能の全てのアセットがZip化して保存できるわけではありませんので注意が必要ですが
下記のリンクAPIに記載があります通り、<b><font color='red'>2024年末現在</font></b>では、
1. Secure Agent configuration
1. Data Integration objects
1. Application Integration objects
の3つの開発資産(アセット)をエクスポートできます。

https://docs.informatica.com/cloud-common-services/administrator/current-version/rest-api-reference/platform-rest-api-version-3-resources/export-and-import.html

それでは実際にREST APIを使用してエクスポートしてみましょう。

### エクスポートの対象
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2984410/3a73311d-9285-e5e6-f1e1-1bf654ac0621.png)
今回の例では、とあるフォルダに開発した
マッピングと、データベース取り込み処理の<b>2つのアセット</b>を<b><font color='red'>REST APIでエクスポートしZip化して保存</font></b>します。
UIからも上記のように、エクスポート可能ですが、毎日取得するとなると、、、:cold_sweat:
画面からの操作では不便ですね。

### 手順概要
```mermaid
graph TD;
    ログインAPI-->エクスポートAPI;
    エクスポートAPI-->ダウンロードAPI;
```

### 手順１：ログインAPIを実行し、セッションIDを取得
IDMCのREST APIを実行するには、セッションID（API実行のためのトークンみたいなもの）が必要です。


https://docs.informatica.com/cloud-common-services/administrator/current-version/rest-api-reference/platform-rest-api-version-3-resources/login.html
```
https://<cloud provider>-<region>.informaticacloud.com/saas/public/core/v3/login
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2984410/34276359-c844-139e-af19-62ef32ebffd3.png)
これを実行し、SessionIdを取得します。

### 手順２：エクスポートAPIを実行し、クラウド上にZipファイルを生成
https://docs.informatica.com/cloud-common-services/administrator/current-version/rest-api-reference/platform-rest-api-version-3-resources/exporting-objects/starting-an-export-job.html

エクスポートしたい、開発アセットのIDを引数にいれて
エクスポートAPIを実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2984410/1aa1465c-c02b-1b67-1f2a-f12930c1ca72.png)

この場合、IDをObject配列をリクエストの引数にいれておりますが（下記のように）

```
{
    "name":"User conf demo asset export",
    "objects":[
        {"id": "a3D1UpzoIxXffOGQZ4KkM2"},
        {"id": "i2drfMebn2me36xmwxT2Yn"}
        ]
}
```
このIDは、各アセットを表示した際にURLに記載がありますので
事前に確認しておきます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2984410/240142d8-56cf-a1c0-f052-67711e73364f.png)

:::note info
今回は、CDIの開発アセットのIDを <b>個別に2つ</b> 指定しておりますが
プロジェクトのIDやフォルダのIDの指定し、<b>まとめてエクスポート</b> も可能です。
:::

ヘッダーにログインAPIで取得したSessionIdを指定して実行してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2984410/62b9ca02-ac7d-32ad-19cc-f55c21b18e63.png)

エクスポートが成功すると、
IDを取得することができます。

### 手順３：ダウンロードAPIを実行し、クラウド上のZipファイルを保存
https://docs.informatica.com/cloud-common-services/administrator/current-version/rest-api-reference/platform-rest-api-version-3-resources/exporting-objects/downloading-an-export-package.html

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2984410/effc6c24-7cb9-d618-95ef-84a44c4bcc6a.png)

手順２で取得したエクスポートIDを引数のIDに指定し、
ダウンロードAPIを実行します。
下記は、手順２のエクスポートAPIの実行結果のレスポンス例です。

![手順２のレスポンス例](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2984410/4fd11b95-c6f1-2c34-a88b-104bb278d1a2.png "手順２のレスポンス例")

:::note info
手順２と同じく
ヘッダーにログインAPIで取得したSessionIdを指定して実行してください。
:::

:::note warn
この記事の通り、POSTMANで実行してしまうと
Zip形式のレスポンス（バイナリ）がUIに帰ってきてしまうため
実運用では、wgetやcurlなどのコマンドラインツールと組み合わせるのがよいでしょう
:::

## おわりに
定期的に、REST APIを実行するジョブを作成することで
開発資産をローカルもしくは、バックアップディスク等に保存することができそうですね。
本記事は以上となります。