DoiT Cloud Intelligence CLIで実現する、より高度なクラウド管理の方法をご紹介します。
このたび DoiT Cloud Intelligence CLI をリリースしました。このリリースが私をどれほど笑顔にしたか、きっと想像もつかないと思います。少し年がバレるかもしれませんが、私はbashスクリプトがまるで超能力のように感じられた時代に育ちました。当時、grepを自在に操れる人は、今で言えば一流のデータアナリストのように一目置かれていたものです。話が逸れましたね。
さっそく、リリースされたばかりのCLIを試してみたところ、最初から発見がありました。実装の土台には restish を採用しています。お使いのAPIがOpenAPIベース(DoiTのAPIはまさにそうです)であれば、スキーマの検出と認証をまとめて処理してくれます。
セットアップ
まずは 公式ドキュメント に沿って、ターミナルで brew から restish をインストールし、DoiT APIと連携するように設定しました。デフォルトプロファイルではAPIコールのカスタマイズも可能で、最初は使いませんでしたが、興味のある方もいると思うのでここで紹介しておきます。

ここで動作確認です。restish dci validate コマンドでログインを検証すると、OAuthのフローが起動します(手放せないほど便利なブラウザセレクター Browserosaurus に感謝!)。

DoiT Cloud Intelligenceテナントへのログインも問題なし。これでスクリプトを駆使したクラウド管理の準備が整いました。

ゴール
最初のユースケースには、DoiTと提携する以前に多くのお客様が長年悩まされてきた課題、コストアカウンタビリティ(コスト責任の明確化) をそのまま選びました。
お客様にとってスムーズかつシンプルな手順で、次の3つを実現することを目指します。
- DoiT Cloud Intelligenceに新規ユーザーを招待する
- そのユーザー名をベースにAllocationを作成し、ユーザーが発生させたコストを追跡する
- 作成したAllocationに紐づくBudgetを作成し、特定のしきい値に達したら通知を送る
これにより、新規ユーザーは最小限の手間で、自身のクラウドコストに対するパーソナルなフィードバックループを手に入れられます。それでは始めましょう。
実装
ユーザーを招待する
これ以上ないほどシンプルで、コマンドは次のとおりです。
restish dci invite-user email:<user_email>

メールが届きます。
ユーザー専用のAllocationを作成する
初めての方でAllocationをご存じない場合は、こちらのドキュメントで概要を押さえておくことを強くおすすめします。
ざっくり言えば、Allocationは利用可能な任意のデータディメンションに基づいてクラウドコストを論理的にグルーピングできる仕組みです。今回のケースでは、新たに招待したユーザーが発生させるクラウドコストをひとまとめにして、本人が自分の支出を簡単にモニタリングできる状態にしたいわけです。
コマンドはこちらです。
restish dci create-allocation < allocation_conf.json
ただし、いくつかのパラメーターを設定として渡す必要があります。少しズルをして、課金データに member というTagキーが用意されており、各値がクラウドエンジニア(今回の例では luca+test)に対応していると仮定します。
conf.json ファイルは次のようになります。
{
"name": "luca+test generated costs",
"description": "All costs generated by luca+test",
"rule": {
"formula": "A OR B",
"components": [\
{\
"key": "member",\
"type": "label",\
"mode": "is",\
"values": [\
"luca+test"\
]\
}\
]
}
}
コマンドを実行すると、Allocationの id が返ってきます。これは後ほど使います。

ユーザー専用のBudgetを作成する
「予算(Budget)」という言葉は、私が話す多くのエンジニアにとって恐怖の対象です。制約や障壁でイノベーションにブレーキをかけるもの、というイメージが根強いからです。
過去にそうした側面があったことは否定しません。しかし、DoiT Cloud IntelligenceのBudgetは、クラウドエンジニアと彼らが生むコストの間に建設的なフィードバックループを作り出す仕組みになっています。嫌なサプライズはほぼなくなり、「気付き」こそが鍵となります。
詳しく知りたい方は、ぜひ 公式ドキュメント をご覧ください。すべての機能を詳しく解説しています。
今回のユースケースはシンプルです。月額1,000ドルの月次予算を1つ用意し、新規ユーザーが自分の支出を把握できるようにするとともに、Allocationで捕捉した支出が予算の80%に達したら自動でアラートが届くようにします。
こちらも至ってシンプルです。
restish dci create-budget < budget_conf.json
budget_conf.json は次のようになります。
{
"name": "luca+test - Monthly Budget",
"scope": ["<ALLOCATION_ID>"],
"amount": 1000,
"type": "recurring",
"timeInterval": "month",
"startPeriod": $(( $(date -u -v1d -v0H -v0M -v0S +%s) * 1000 )),
"currency": "USD",
"alerts": [{"percentage": 80}],
"collaborators": [\
{\
"email": "<user_email>",\
"role": "owner"\
}\
]
}
ここで押さえておきたいポイントが2つあります。
startPeriodの値はepochからの秒数で指定する必要があります。その値を取得するコマンドを設定ファイル内に記載しています。- 異なるしきい値で複数のアラートを設定することもできますが、今回は1つに絞りました。
コマンドを実行すると、成功レスポンスが返ります。

もうサプライズはありません!

WebUIでは、追跡中のデータとしきい値が確認できます。
DoiT Cloud Intelligence CLIをひと通り触ってみた最初のレポートは以上ですが、可能性はまだまだ広がります。ここまでのステップを組み合わせて、オンボーディング用スクリプトに仕立てることだってできるはずです。
それはまた別の記事で取り上げる価値がありそうですね。それまでにぜひ DoiT Cloud Intelligence CLIをインストール して試してみてください。サポートが必要な際は、お気軽にお問い合わせください。