Looker API経由でログインしてaccess_tokenをゲットする

多くの人は頑張らなくてもAPIなどたたけると思うのですが、そういう人ばかりではないのではないかと思うんです。そう信じて、そんな3ヶ月後の自分に向けてこの記事を残します。
2020.05.21

LookerはAPIが豊富というのはよく語られることですが、実際に目で見て感じようと思い、がんばりました。

Looker API

冒頭でも触れましたが、LookerのプラットフォームでできることはAPIでもできます。

また、LookerからのAPI経由でのデータの取得は、既にブログになっています。このブログを以ってしてもなおcurlと闘わざるをえなかった無力さよ・・・。

今回は、APIをたたく際に必要なaccess_tokenを取得して、model一覧を取得してみます。

実行環境

macOS Catalina 10.15.4
google chrome 81.0.4044.138
Looker 7.6

access_tokenを取得する

まず、認証情報取得にclient_idclient_secretが必要なので発行します。Admin > Usersで自分を探してActionからEditを選択します。

API3 Keysの欄のEdit Keysを選択すると、Client IDとClient Secretが表示されるので、メモしておきます。
初めての場合は、New API3 Keyを選択すると生成されます。

今回はシンプルにAPIのポートは19999を使用します。その他のポートを使用する場合には、別途 Admin > APIから設定が必要です。

そして、curlを使用した認証情報の取得方法はGitHubに掲載されています。

先ほどメモしたclient_idとclient_secretをコピペして、URLも該当のものに直します。

# Do the login to get an access_token
curl -i -d "client_id=xxxxxxxxxx&client_secret=xxxxxxxxxx"  \
https://<instance_name>.looker.com:19999/login

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 21 May 2020 05:35:20 GMT
Content-Type: application/json
Content-Length: 99
Connection: keep-alive
Vary: Accept-Encoding
X-Content-Type-Options: nosniff

{"access_token":"xxxxxxxxxx","token_type":"Bearer","expires_in":3600}%      

無事にaccess_tokenが取得できました!

今回のつまりポイントその1は、改行\とURLの間にスペースを入れていなかった。 その2はURLを間違えないようにとブラウザのアドレスバーからコピペしたら.com/とスラッシュが入ってしまっているのに気づかずに実行してしまった点でした。
こんな感じですね:https://<instance_name>.looker.com/:19999/login

オプションは、こちらのブログを参考にメモメモ。

オプション 説明
-i HTTPヘッダを出力に含める
-d POSTリクエストとしてフォームを送信する

モデルの一覧を取得する

APIでできることはこちら。

今回は、LookmlModel : Manage LookML ModelsのGet All LookML Modelsを試して、結果をCSVに出力します。

YOUR_ACCESS_TOKENに先ほど取得したaccess_tokenを入力して、今回はオプションでファイル出力も指定します。

curl -i -H "Authorization: token YOUR_ACCESS_TOKEN" \ 
https://<instance_name>.looker.com:19999/api/3.1/lookml_models -o models.csv
  
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 33342  100 33342    0     0  77901      0 --:--:-- --:--:-- --:--:-- 77901

こんな感じで出力されていました!

先ほどのプログを参考に、再度メモメモ。

オプション 説明
-H HEADER HTTPヘッダにHEADERを追加もしくは変更する

まとめ

APIで呼び出せたり、情報を送れたりすれば柔軟にLookerを使用することができますね。

APIで格闘するのが楽しかったので、もう少し別の情報を呼び出したり、更新できたりできたらまたブログに書きます。
Lookerのマーケットプレースも色々と試してブログにするぞ。