🧹

年末だしTROCCO APIを活用してTROCCOユーザーの棚卸しをしよう!

2024/12/04に公開

はじめに

この記事は TROCCO® Advent Calendar 2024の4日目の記事です。

TROCCOでは、お客様のデータ基盤を中長期で運用する際の課題を解決するべく、直近APIの拡充を進めています。
また、一部のリソースについて、Terraform Providerを提供し、TROCCOのリソースをTerraformで管理できるように目下開発を進めています。

この記事では、その中で開発されたTROCCO ユーザーAPIを利用したちょっとした便利tipsとして、TROCCOユーザーの棚卸しを実施してみましょう。

具体的なやり方

STEP1: TROCCO API Keyを取得する

TROCCO API keyの取得方法については公式ドキュメントに記載がありますので、そちらを見ながら取得してください。
https://documents.trocco.io/apidocs/overview#trocco-api-keyの作成

STEP2: APIからユーザー一覧を取得する

今回はPythonで取得します。
筆者はColaboratory上にコードを実行しました。

ユーザー一覧を取得する
import requests

TROCCO_HOST = "https://trocco.io"
TROCCO_USERS_ENDPOINT = "/api/users"

TROCCO_API_KEY = "" # https://trocco.io/api_keys から取得できるAPI keyに置換する

header_content = {
    'accept': "application/json",
    'Authorization': f"Token {TROCCO_API_KEY}"  # tips: 先頭に `Token ` という固定値をつける必要がある
}

# APIからデータ取得
res = requests.get(TROCCO_HOST + TROCCO_USERS_ENDPOINT, headers=header_content)
print(res.status_code) # 200が返ってきたら後続の作業を実施する

STEP3: pandas DataFrameに整形し、最近ログインしていないユーザーを抽出する

次にデータを整形していきます。まずJSONから取得したタイムスタンプのデータをpandasのdatetime型に変換しましょう。

データ整形
TIMESTAMP_COLUMNS = ["last_sign_in_at", "created_at", "updated_at"]

# pandas DataFrameに変換
users_df = pd.DataFrame.from_dict(res.json()["items"])

# timestampカラムをdatetime型に変換
for col in TIMESTAMP_COLUMNS:
  users_df[col] = pd.to_datetime(users_df[col])

さっそく整形されたデータを確認しましょう

スキーマとデータを確認
display(users_df.dtypes)
users_df.head()

作成されたデータフレーム

最終ログインが昨年時点のユーザー一覧を抽出しましょう。

最終ログインが昨年以前のユーザー一覧 ※最終ログイン日昇順
users_df[users_df["last_sign_in_at"] < '2024-01-01'].sort_values("last_sign_in_at")

もし対象者が最近TROCCOを使っておらず、今後も使う予定がなさそうなユーザーが見つかったらアカウント特権管理者に依頼して削除してもらいましょう。
削除の方法は以下から確認ください。

https://documents.trocco.io/docs/user-deletion

他にも最終ログイン日時を半年以内を絞ったり、作成が古いユーザーを目検していっても良いかもしれません。
TROCCOの大掃除も済ませて良い年を迎えましょう!

利用したコード

全体の流れは以下のgistにて公開しています。

「Open in Colab」ボタンから環境構築不要で実行できるので※、ぜひ試してみてください!
※TROCCOにIP制限をかけていない場合に限ります。IP制限をかけている場合、許可済みIPアドレスからTROCCOにアクセスできる環境にて実行ください。

参考

株式会社primeNumber

Discussion