Box CLI を Mac で使うまでの手順(メモ)
少しずつ追加する予定・・・
目的
Mac のターミナルから Box を操作するために CLI SDK 入れて動かす。
何が出来るのか一通り試すにはコマンドが一番手っ取り早いのでは?的な。
セットアップ
Box CLIのインストール に従ってセットアップ
基本的な流れは
- CLI ツールをインストール
- 設定ファイルを作成
という感じ。
CLI をインストール
下記のURLからダウンロードできる。
設定ファイルを作成
Box Developer Console で JWT認証を使った Boxアプリケーションをセットアップし、設定ページから JSON構成ファイルをダウンロードする、と言う流れ。
カスタムアプリの作成
- Box Developer Console にアクセス
- 「アプリの新規作成」をクリック
- 「カスタムアプリ」を選択して「次へ」
- 認証方法で「JWTを使用したOAuth 2.0(サーバー認証)」を選択して「次へ」
- アプリに名前をつけて「アプリの作成」をクリック
JWTキーペアを生成
- アプリケーションの左側のサイドバーで[構成]オプションをクリック
- [公開キーの追加と管理]セクションで[公開/秘密キーペアを生成]ボタンをクリック
- 秘密鍵が含まれたJSONファイルが落ちてくるので保存
上記の手順を行わないで進めると構成ファイルのロード時にエラーになる。
% box configure:environments:add 0__config.json
Config object missing key boxAppSettings.appAuth.publicKeyID
アプリの承認
この手順を行わずに進めた場合、コマンド実行時に下記のエラーが発生する
% box folders:get 0
Unexpected API Response [400 Bad Request] unauthorized_client - This app is not authorized by the enterprise admin
構成ファイルを CLI に設定する
ダウンロードした構成ファイルを指定してコマンドを実行して構成を追加
% box configure:environments:add PATH_TO_CONFIG_FILE
Successfully added CLI environment "default"
Successfully となっていれば成功!
構成ファイルについて
CLI には複数の構成ファイルを読み込むことが可能。
構成ファイルの追加
複数の構成ファイルを読み込む場合には名前をつけて読み込む。
% box configure:environments:add entgov_user1_app.json -n user1_app
Successfully added CLI environment "user1_app"
構成ファイルの切り替え
configure:environments:set-current で切り替える環境の名前を渡せば切り替わる。
user1_app に切り替える場合は下記のコマンドを実行する。
% box configure:environments:set-current user1_app
環境の一覧は下記のコマンドで取得可能
% box configure:environments:get
実行ユーザー
上記の手順で作成した構成ファイルを使って Box CLI を実行した場合、デフォルトではサービスアカウントで実行される。
当然、権限はアプリの作成者とは関係ないので、CLI でコラボレータとして操作する場合、対象のファイルやフォルダに対してサービスアカウントに権限がないとエラーになる。
また、設定やオプションによって実行時のユーザーを切り替えることも可能なので、実際にコマンドを実行しているユーザーを確認しながら処理をする必要がある。
現在のユーザーを取得
下記のコマンドを実行して、 Login:
の値として返却される値が現在のアカウント。
% box users:get me
何も設定してない場合にはサービスアカウントが返却されるはず。
ユーザーを切り替える
デフォルトユーザーを切り替える方法と、実行時にユーザーを切り替えて実行する方法の二通りの方法がある。
デフォルトユーザーの切替
このコマンドを実行すると以後、全てのコマンドがここで設定したユーザーで実行される。
% box configure:environments:switch-user [USERID]
明示的にユーザーを切り替えるまで mac を再起動しても引き継がれる。
サービスアカウントに戻す
% box configure:environments:switch-user --default
コマンド実行時に切り替える
コマンド実行時のみ特定のユーザーとして実行する場合はこっち。
% box users:get --as-user=[USERID]
ユーザーの一覧を取得
切替可能なユーザーの一覧を取得
% box users
token 周り
token の取得
実行時に使われているトークンを表示する。
% box tokens:get
これをコピって curl の実行などに利用可能。
たとえば、現在のユーザーを取得するためのエンドポイントに上記の結果を入れると、サービスアカウントの結果が取れる。
% curl -i -X GET "https://api.box.com/2.0/users/me" \
-H "Authorization: Bearer <ACCESS_TOKEN>"
token のキャッシュを無効にする
CLI はデフォルトでトークンがキャッシュされる設定になっている。
通常は問題にならないが、開発者コンソールで設定を変更してアプリの再認証した時など、古い設定を引き継いでしまうので、設定を変えながらテストしたい時には無効にすると楽。
% box configure:environments:update --no-cache-tokens
便利な設定など
オートコンプリート
入力補完が使える様になって便利。
指示に従ってコマンドを打てば OK
% box autocomplete
Building the autocomplete cache... done
Setup Instructions for BOX CLI Autocomplete ---
1) Add the autocomplete env var to your zsh profile and source it
$ printf "$(box autocomplete:script zsh)" >> ~/.zshrc; source ~/.zshrc
NOTE: After sourcing, you can run `$ compaudit -D` to ensure no permissions conflicts are present
2) Test it out, e.g.:
$ box <TAB> # Command completion
$ box command --<TAB> # Flag completion
Enjoy!