ニフクラ ブログ

ニフクラ/FJ Cloud-Vやクラウドの技術について、エンジニアが語るブログです。

ニフクラ SDK for Python (Developer Preview) のご紹介

こんにちは、ニフクラエンジニアの d:id:tily です。
今回は、本日公開されたニフクラ SDK for Python (Developer Preview)について、簡単にご紹介いたします。

ニフクラ SDK for Python (Developer Preview) とは?

ニフクラ SDK for Python (Developer Preview) は、Python からニフクラ API を実行するための SDK です。
下記のような特徴があります。

  • ニフクラの複数サービスに対応 (Computing / RDB / NAS / Script)
  • 付属のデバッグ CLI でコマンドラインから動作確認が可能
  • AWS SDK JSON 互換によるデータ駆動の仕組みを採用

上記について詳しく見ていきましょう。

※なお、「Developer Preview」という名前の通り、実験段階の開発者プレビュー版です。いくつかご注意いただきたい点がございます。

  • 本番向けのクリティカルな用途では利用しないでください
  • 「指定できないリクエストパラメーターがある」「取得できないレスポンス項目がある」といった不具合は想定内のものです
  • 予告なく大幅な仕様を変更を行う可能性があります

ニフクラの複数サービスに対応

ニフクラ SDK for Python (Developer Preview)はニフクラの複数サービスの全 API (2017/11/13 時点) に対応しています。
現在対応しているサービスは下記の通りです。

  • ニフクラ Computing (サーバー・FW 等の操作 全 188 API)
  • ニフクラ RDB (DB サーバー等の操作 全 39 API)
  • ニフクラ NAS (NFS / CIFS 等の操作 全 12 API)
  • ニフクラ スクリプト (スクリプト実行 全 1 API)

これを使用することで、たとえば下記のように 1 つのライブラリで複数サービスを操作するようなプログラムを書くことが可能です。

import pprint

from nifcloud import session

pp = pprint.PrettyPrinter(indent=4)

print("########## Computing DescribeInstances の実行")
computing = session.get_session().create_client(
    "computing", region_name="jp-east-1"
)
res = computing.describe_instances()
pp.pprint(res)

print("########## RDB DescribeDBSecurityGroups の実行")
rdb = session.get_session().create_client(
    "rdb", region_name="jp-east-1"
)
res = rdb.describe_db_security_groups()
pp.pprint(res)

print("########## NAS DescribeNASInstances の実行")
nas = session.get_session().create_client(
    "nas", region_name="jp-east-1"
)
res = nas.describe_nas_instances()
pp.pprint(res)

print("########## Script ExecuteScript の実行")
script = session.get_session().create_client(
    "script"
)
res = script.execute_script(
    ScriptIdentifier="test.js", Method="GET"
)
pp.pprint(res)

また、上記スクリプトの実行方法については GitHub の README を、詳しいドキュメントについてはこちらをそれぞれご参照ください。

デバッグ用 CLI でコマンドラインから実行

nifcloud モジュールには、nifcloud-debugcli という名前のコマンドが付属しています。
簡易的な CLI となっており、コマンドラインから手軽に SDK を利用した API リクエストを実行することができます。
使い方は下記の通りです。(こちらも内部的には awscli を利用しています。)

## API キーとデフォルトリージョンの設定
$ export AWS_ACCESS_KEY_ID=<Your NIFCLOUD Access Key ID>
$ export AWS_SECRET_ACCESS_KEY=<Your NIFCLOUD Secret Access Key>
$ export AWS_DEFAULT_REGION=jp-east-1

## 利用可能なサービスの一覧を表示
$ nifcloud-debugcli help

## 指定されたサービスで利用可能な API の一覧を表示
$ nifcloud-debugcli computing help

## 指定されたアクションで利用可能なパラメーターの一覧を表示
$ nifcloud-debugcli computing create-key-pair help

## 実際にコマンドを実行 (下記は料金が発生しない SSH キー作成の API を実行しています)
$ nifcloud-debugcli computing create-key-pair --key-name foobar123 --password foobar123

AWS SDK JSON 互換によるデータ駆動の仕組み

ニフクラ SDK for Python (Developer Preview) は、AWS の各プログラミング言語 のSDK がサポートしているデータ駆動の仕組みに沿った形で作成されています。
たとえば botocore (AWS の Python SDK) には下記のように API リクエスト用の各種 JSON が同梱されていますが、

上記と同様の JSON を独自に用意し、botocore モジュールに渡すことでニフクラの API を実行することが可能になっています。

これにより、メンテナンスコストを最小限に抑え、SDK が API 自体のバージョンアップに迅速に対応していけると考えています。

まとめ

Python からニフクラ複数サービスの API を実行可能な、ニフクラ SDK for Python (Developer Preview) について簡単にご紹介しました。

今後は SDK 自体の品質を高めつつ、Computing / RDB / NAS / Script 以外のサービスに対応したり、 同じ JSON データを利用してPython 以外の言語に対応したりといったエンハンスを検討しております。

ご興味を持たれた方は、ぜひ一度 ニフクラ SDK for Python (Developer Preview) をお試しください! そして、GitHub の issue 等でフィードバックをいただけると非常にうれしいです。