こんにちは、ニフクラエンジニアの d:id:tily です。
今回は、本日公開されたニフクラ SDK for Python (Developer Preview)について、簡単にご紹介いたします。
- GitHub: https://github.com/nifcloud/nifcloud-sdk-python
- ドキュメント: https://nifcloud-sdk-python.readthedocs.io
- PyPI: https://pypi.python.org/pypi/nifcloud
- ニフクラ SDK for Python (Developer Preview) とは?
- ニフクラの複数サービスに対応
- デバッグ用 CLI でコマンドラインから実行
- AWS SDK JSON 互換によるデータ駆動の仕組み
- まとめ
ニフクラ 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 等でフィードバックをいただけると非常にうれしいです。