【Microsoft Flow】Arukas アプリ作成時にハマったこと(API 認証編)


はじめに

さくらインターネットの Docker ホスティングサービスである Arukas でアプリを作成しているときにハマったのでメモ。

顛末

Microsoft Flow から Arukas アプリの制御を行いたい。

Arukas にはユーザーが利用できる API が用意されており、以下の公式ドキュメントに
API によるアプリの作成、設定変更、起動、停止などの方法がまとまっている。

これをフローの HTTP アクションで叩くだけで良いと思ったが、ハマったのが API 利用時の認証方法についてである。

ドキュメントの Authentication の章を見ると、

The API keys consist of API token and secret token. You can generate them in Arukas user control panel.
To follow along with this document smoothly, it would be nice to create including a ~/.netrc line of code below.
machine app.arukas.io login #{ARUKAS_JSON_API_TOKEN} password #{ARUKAS_JSON_API_SECRET}

とだけあり、コントロールパネルで取得できる API key を netrc ファイルに設定せよとのこと。
しかし、今回使いたい Microsoft Flow では netrc ファイルによる認証は利用できない。

そこで Arukas のサポートに問い合わせてみると以下のような回答があった。

--user オプションを指定して、リクエスト可能です。
curl -H "Content-Type: application/json" --user #{ARUKAS_JSON_API_TOKEN}:#{ARUKAS_JSON_API_SECRET}@app.arukas.io/api/apps/${APP_ID}

また以下のような書き方でもリクエスト可能となります。
curl -X GET https://#{ARUKAS_JSON_API_TOKEN}:#{ARUKAS_JSON_API_SECRET}@app.arukas.io/api/apps/${APP_ID}

つまりは基本認証でも API の認証が可能とのこと。
幸い、Microsoft Flow の HTTP アクションでは基本認証が利用できるので、以下のように API Key を設定したら、認証も通り Arukas API を利用してアプリを制御できた。(画像はアプリを起動する場合)

おわりに

「API key で netrc ファイルによる認証が利用可能」という情報から、「つまり同じ API key をそのまま指定した基本認証も利用可能なのでは?」へ、自分の中ですぐに結びつかなかったは残念でした。