ニフクラ ブログ

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

NIFCLOUD CLIがWindowsで簡単に使えるようになりました

こんにちは!FJCT で nifcloud-sdk や terraform provider を開発している id:aokumasan です。

今日はニフクラ API を簡単に実行できる nifcloud-cli を Windows で使う方法について説明していこうと思います。

さて、最新の nifcloud-cli には Windows 環境向けの MSI インストーラーが GitHub の Release ページにて配布されるようになりました。

執筆時点での最新版 v1.6.0 の Release github.com

今までも Windows 環境にPython をインストールし、 pip install nifcloud-cli というコマンドを実行することで CLI をインストールできました。 しかし、環境によって動作しなかったり、そもそも Python のインストールが必須など、使うには少しハードルが高かったと思います。

しかしこのインストーラーを使って CLI をインストールすると、PC に Python をインストールしなくても nifcloud-cli が利用できます。もちろん従来どおり pip 経由でのインストールも可能です。

そこで今回は実際に Windows 環境へインストーラーを使って nifcloud-cli をインストールし、API を実行する例を紹介できればと思います。

今回の環境

今回の記事で使用している環境は下記になります。

  • Windows 10
  • nifcloud-cli v1.6.0

認証情報の取得

ニフクラ API を実行するには、認証情報が必要です。 認証情報はコントロールパネルから取得できます。

まず、コントロールパネル上部の「アカウント名」→「アカウント管理」をクリックします。

アカウントメニュー

ログインアカウントの認証情報を使っても良いですが、ここではあえて新規でマルチアカウントを作成し、マルチアカウントを使って CLI を試してみることにします。 マルチアカウントを利用すれば実行できる操作を絞ったアカウントを発行できるので、万が一パスワードやシークレットアクセスキーが漏洩して悪用された場合でも、攻撃者が行える操作を限定できます。 また、アカウントが不要であればコントロールパネルから簡単に削除できます。

「アカウント作成」をクリックし、必要事項を入力して新規マルチアカウントを作成します。

  • アカウント名: nifcloudcli (何でもよいですが一例として)
  • パスワード: 任意のパスワードを入力
  • 権限: 閲覧者権限 (CLIで操作したいことに合わせて適宜設定してください。本記事では閲覧操作しかしないため、閲覧権限にしています)

マルチアカウント作成

アカウントが作成できたら、作成したアカウントの認証情報を取得します。 アカウント一覧から nifcloudcli の詳細を開くと、アクセスキーとシークレットアクセスキーを取得できます。 それぞれの値を確認しておきます。

※これらのキーは機密情報になります。取り扱いには注意してください。

認証情報の取得

nifcloud-cli のインストール

では、早速インストーラを使って nifcloud-cli をインストールしてみましょう。

まずGitHub の Release ページから、最新版の MSI インストーラーをダウンロードします。

github.com

ダウンロードできたら、インストーラーを実行して nifcloud-cli をインストールします。 ウィザードに従ってインストールを進め、下記の画面になればインストールは完了です。

インストール完了画面

インストールできたら、実際にコマンドプロンプトから nifcloud-cli コマンドが使えるか確認してみましょう。

C:\>nifcloud --version
nifcloud-cli/1.6.0 Python/3.9.13 Windows/10 botocore/1.21.43

--version オプションを指定して、上記のようにバージョン情報が返却されれば正しくインストールできています。

認証情報の設定

次に API を実行する際に使う、認証情報の設定をします。 nifcloud-cli に認証情報を設定する方法は 2 種類あります。

  • 環境変数に設定する
  • nifcloud configure コマンドを使う

環境変数に設定する方法

下記 3 つの環境変数を設定します。 この方法は主に一時的に CLI を使いたい場合などに有効です。

  • NIFCLOUD_DEFAULT_REGION
    • jp-east-1 などのリージョンを指定します
  • NIFCLOUD_ACCESS_KEY_ID
    • 先程取得したアクセスキーを設定します
  • NIFCLOUD_SECRET_ACCESS_KEY
    • 先程取得したシークレットアクセスキーを指定します

具体的には次のように設定します。

  • コマンドプロンプトの場合
C:\> set NIFCLOUD_DEFAULT_REGION=jp-east-1
C:\> set NIFCLOUD_ACCESS_KEY_ID=<先程取得したアクセスキー>
C:\> set NIFCLOUD_SECRET_ACCESS_KEY=<先程取得したシークレットアクセスキー>
  • PowerShell の場合
PS C:\> $env:NIFCLOUD_DEFAULT_REGION="jp-east-1"
PS C:\> $env:NIFCLOUD_ACCESS_KEY_ID="<先程取得したアクセスキー>"
PS C:\> $env:NIFCLOUD_SECRET_ACCESS_KEY="<先程取得したシークレットアクセスキー>"

nifcloud configure コマンドを使う方法

nifcloud configure コマンドを使うことによって、認証情報をファイルへ永続化できます。 これにより、頻繁に CLI を利用する場合には都度、認証情報を設定せずに済むため便利です。

nifcloud configure コマンドは次のように使います。

C:\> nifcloud configure
NIFCLOUD Access Key ID [None]: <先程取得したアクセスキー>
NIFCLOUD Secret Access Key [None]: <先程取得したシークレットアクセスキー>
Default region name [None]: jp-east-1
Default output format [None]:

これらの設定は %UserProfile% 配下の .nifcloud ディレクトリ内に保存されます。

余談ですが、 Default output format には現在 json, table, text が指定可能です。これらの設定をすると CLI の出力表示が変化します。 CLI 使用時に --output オプションで指定も可能です。

  • json: JSON 形式 (デフォルト)
  • table: 表形式
  • text: タブ区切りの文字列

CLI から API を実行してみよう

ここまで来れば、 nifcloud-cli を使う準備は整っています。 試しにコンピューティング機能の API DescribeRegions を実行してみましょう。 この API はユーザーが利用可能なリージョン一覧を取得できます。

C:\> nifcloud computing describe-regions
{
    "RegionInfo": [
        {
            "IsDefault": true,
            "MessageSet": [
                {}
            ],
            "RegionEndpoint": "jp-east-1.computing.api.nifcloud.com",
            "RegionName": "east-1"
        },
        {
            "IsDefault": false,
            "MessageSet": [
                {}
            ],
            "RegionEndpoint": "jp-east-2.computing.api.nifcloud.com",
            "RegionName": "east-2"
        },
        {
            "IsDefault": false,
            "MessageSet": [
                {}
            ],
            "RegionEndpoint": "jp-east-3.computing.api.nifcloud.com",
            "RegionName": "east-3"
        },
        {
            "IsDefault": false,
            "MessageSet": [
                {}
            ],
            "RegionEndpoint": "jp-east-4.computing.api.nifcloud.com",
            "RegionName": "jp-east-4"
        },
        {
            "IsDefault": false,
            "MessageSet": [
                {}
            ],
            "RegionEndpoint": "jp-west-1.computing.api.nifcloud.com",
            "RegionName": "west-1"
        },
        {
            "IsDefault": false,
            "MessageSet": [
                {}
            ],
            "RegionEndpoint": "jp-west-2.computing.api.nifcloud.com",
            "RegionName": "jp-west-2"
        }
    ],
    "RequestId": "ac381df5-93dc-411c-b09d-40d48b7944d7"
}

このように API を実行した結果が表示されました 🎉

他にも様々な API を実行できます。 利用可能な help コマンドで確認するか、ドキュメントをご確認ください。

  • help コマンド
C:\> nifcloud help  # nifcloud-cli で利用可能なサービスのヘルプ
C:\> nifcloud computing help  # コンピューティング機能で利用可能な API の一覧
C:\> nifcloud computing describe-instances help  # コンピューティングの DescribeInstances API の実行に関するヘルプ

コラム: プロファイル機能

nifcloud コマンド実行時に --profile オプションを使うことで、複数の認証情報をプロファイルとして使い分けることも可能です。

  • user-a というプロファイルで認証情報を登録
C:\> nifcloud --profile user-a configure
  • user-a プロファイルで API を実行
C:\> nifcloud --profile user-a computing describe-instances

まとめ

今回は、 nifcloud-cli を Windows 環境で動かす方法について説明しました。
nifcloud-cli を活用することにより、繰り返し処理や定期的な処理の実行など、さまざまな自動化が実現しやすくなります。

ぜひ、みなさんも手元の PC で試して、自動化のアイデアをどんどん膨らませていきましょう!