api
apiconnect

API ConnectのCatalog中のAPIをバックアップする小技

はじめに

API を作成してデプロイを続けていると使用しているカタログ中にある全てのAPIをまとめてバックアップしたいと思うことがあります。きちんとしたプロジェクトでは、ソースコード管理されるものと思われますが(参考記事)、ここでご紹介するのは、とりあえず手元に置いておきたいという場合の非常に簡易的な方法です。個人的には意外に重宝しています。

apicコマンドによるAPI、製品の管理

バックアップを行うには、万能コマンドライン・ツール "apic"を使用します。apicは、幅広い機能を持っていますが、API製品およびAPIを管理する機能も充実しています。

apicコマンドを発行するには、事前の準備が若干必要になります。

最初にCLI環境でのディフォルトのカタログを指定します。

ディフォルトのカタログの設定(例)

apic config:set catalog=apic-catalog://mgmnthost.com/orgs/climbon/catalogs/sb

このコマンドは、以下の様に全文をAPI Managerを使って入手することができます。

catalog.png

クリップの様なリンクをクリックするとカタログをセットするコマンドが表示されます。

catalogID.png

これをそのまま、コピーして実行します。

引き続いてAPI Connect環境にログインします。

ログインの例

apic login --username some-user --password some-password --server mgmnthost.com

これでJSON Web Token(JWT)が発行されるらしいです。JWTに関してはQiitaの記事に解説がありました。トークンの期限が切れるとエラーになるので再度ログインする必要があります。このログインですが、筆者は、面倒なのでapic editを起動してデザイナーの起動画面でログインしています。少なくともパスワードが含まれるスクリプトやバッチにはしない方がいいですね。

これでカタログに向けてapicコマンドを発行する準備が整いました。

カタログに存在するAPIのリストを入手するには以下のコマンドを発行します。

c:\>apic apis
sawaxxxyyycom-sawas-space:production の dicip02:1.0.0
sawaxxxyyycom-sawas-space:production の dicp04:1.0.0

製品のリストを入手するには、以下のコマンドを発行します。

c:\>apic products
sawaxxxyyycom-sawas-space:production の dicip02:1.0.0
sawaxxxyyycom-sawas-space:production の dicip04prod:2.0.0
sawaxxxyyycom-sawas-space:production の dicip04prod:1.0.0

APIをダウンロードするには、以下のコマンドを発行します。筆者は、Bluemix環境を使っているのですが、コマンドを発行してから、ダウンロードされるまで、数秒待つ感じです。

c:\>apic apis:clone
dicip02:1.0.0 API 定義が sawaxxxyyycom-sawas-space:production [dicip02_1.0.0.yaml] からプルされました
dicp04:1.0.0 API 定義が sawaxxxyyycom-sawas-space:production [dicp04_1.0.0.yaml] からプルされました

製品とAPIをまとめてダウンロードするには、以下のコマンドを発行します。このコマンドがあれば、カタログのとりあえずのバックアップは行えそうです。

c:\>apic products:clone

簡易バックアップ・ツールの作成

ツールと呼ぶのは大げさですが、簡単なバッチ・コマンドと組み合わせるとその時点での製品、APIのスナップ・ショットを取ることができます。以下は、Windowsでの例です。

簡易バックアップ・ツール ”apic_catalog_backup.bat”

@echo off
set hiduke=%date:~0,4%%date:~5,2%%date:~8,2%
set jikoku=%time: =0%
set jikoku=%jikoku:~0,2%%jikoku:~3,2%%jikoku:~6,2%
mkdir %1%hiduke%%jikoku%
cd %1%hiduke%%jikoku%
call apic products:clone
cd ..

任意のディレクトリで以下のようにコマンドを実行すると日付と時刻を付けたディレクトリを作成してカタログ中の製品とAPIのバックアップをとることができます(引数は、ディレクトリの頭になる任意の文字です)。

C:\apiworks\uk-prod-catalog>apic_catalog_backup Production

日付と時刻を使用したユニークなディレクトリ名の下にカタログ中の全ての製品とAPIのバックアップが作られます。

 C:\apiworks\uk-prod-catalogのディレクトリ

2017/09/27  10:38    <DIR>          .
2017/09/27  10:38    <DIR>          ..
2017/09/27  10:39    <DIR>          Production20170927103842
               0 個のファイル                   0 バイト
               3 個のディレクトリ  56,713,973,760 バイトの空き領域

今回は、バックアップ目的にapicを使用しましたが、公開することも可能です。詳しくは、こちらをご参照下さい。