OCI Data CatalogのREST APIの利用方法

Oracle Cloud Infrastructure（OCI）Data Catalogは、データの専門家がデータを発見し、データガバナンスをサポートするのに役立つメタデータ管理サービスです。

OCI Data Catalogについては以下を参照ください。
- [Oracle Cloud Infrastructure Data Catalog](https://www.oracle.com/jp/big-data/data-catalog/)
- [データカタログとは？なぜそれが必要なのか？](https://www.oracle.com/jp/big-data/what-is-a-data-catalog/)

GUIでのOCI Data Catalogの利用方法が下記のドキュメントをご参考になりますが、今回REST APIでの利用方法を紹介します。
- [データ・カタログ](https://docs.oracle.com/ja-jp/iaas/data-catalog/home.htm)
## 実行環境
Data Catalog APIのドキュメントを参照して、Java、Python、.NETなどのいつくの開発言語をサポートするから、今回PythonでREST APIを試してました。
REST APIの実行が特別なPython実行環境に拘らないため、既存のOracle Cloud Infrastructure（OCI）Data Science ServiceのノートブックでPythonを実行してみました。

OCI Data Science Serviceの利用方法について、下記をご参考ください。

https://qiita.com/kenwatan/items/afba7c11cee002a987b2

## サンプルコード
OCI Data Science Serviceのノートブックセッションを起動して、下記のコードをノートブックで作成し、実行します。今回のサンプルがデータカタログ作成のAPIを呼び出して、指定したコンパートメントにデータカタログを作成します。設定必要な項目がコンパートメントID、データカタログ名、リクエストIDなどです。
```
# This is an automatically generated code sample.
# To make this code sample work in your Oracle Cloud tenancy,
# please replace the values for any parameters whose current values do not fit
# your use case (such as resource IDs, strings containing ‘EXAMPLE’ or ‘unique_id’, and
# boolean, number, and enum parameters with values not fitting your use case).

import oci

# Create a default config using DEFAULT profile in default location
# Refer to
# https://docs.cloud.oracle.com/en-us/iaas/Content/API/Concepts/sdkconfig.htm#SDK_and_CLI_Configuration_File
# for more info
config = oci.config.from_file('config-Copy1')


# Initialize service client with default config file
data_catalog_client = oci.data_catalog.DataCatalogClient(config)


# Send the request to service, some parameters are not required, see API
# doc for more info
create_catalog_response = data_catalog_client.create_catalog(
    create_catalog_details=oci.data_catalog.models.CreateCatalogDetails(
        compartment_id="ocid1.compartment.oc1..aaaaaa",
        display_name="EXAMPLE-displayName-Value",
        freeform_tags={
            'EXAMPLE_KEY_eOc9R': 'EXAMPLE_VALUE_c5tN5ohYv094ggp20EIA'}),
    opc_retry_token="EXAMPLE-opcRetryToken-Value",
    opc_request_id="1AY9NZNH4TBYHSH6I0EB")

# Get the data from response
print(create_catalog_response.headers)
```
REST APIのドキュメントが下記となります。その中にサンプルコードがあり、それを参照すれば自分のコードを簡単に作成できます。

https://docs.oracle.com/en-us/iaas/api/#/en/data-catalog/20190325/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387966/44a34f2c-9597-4c3b-17b7-09b8d3b50481.png)

また、OCIサービスのアスセス認証を設定する必要となります。下記のドキュメントを参照して、認証用のconfigファイルとKeyファイルをData Scienceのサーバーにアップロードします。RegionにはData Catalog所在のRegionで設定してください。

https://docs.oracle.com/ja-jp/iaas/Content/Identity/Tasks/managingcredentials.htm#upload_key

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387966/68efc440-36c9-cc97-b31e-254296eb2b82.png)

## 実行結果
Pythonコードをノートブックで実行してから、OCIサービスがREST APIのリクエストを受け取り、しばらく待つとOCI Data Catalogのサービスが作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387966/0b7a5b63-c37c-7a7b-9532-a29a0aaa1eb2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387966/bf01ed20-f4a5-705c-55fd-7b0485414f77.png)

## 最後に
OCI Data CatalogのREST APIを紹介する公式ドキュメントがあり、各APIの利用サンプルコードもそこで紹介されるが、日本語の資料がないため、この度簡単の例で手順書をまとめました。ご参考ください。