0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

YouTube APIのクォータ(利用枠)枯渇を防ぐ!Cloud Monitoring APIを使った残量監視システム

0
Posted at

1. はじめに

YouTube Data APIを使っている開発者にとって、最も恐ろしい言葉。
それは 「Quota Exceeded(利用枠超過)」 です。

YouTube APIには1日あたり10,000ユニットという厳しい制限があります。
これを超えると、翌日までAPIが一切使えなくなり、アプリは機能停止に追い込まれます。

「あとどれくらい使えるんだろう?」
「突然止まったらどうしよう…」

そんな不安を解消するために、「クォータ残量を監視する環境」 を構築しました。
今回は、その第一歩となる 「Google Cloud Monitoring APIのセットアップ手順」 を解説します。

2. 直面した課題:残量を確認する術がない

最初は「APIを叩くたびに消費量を記録すればいいのでは?」と考えました。
しかし、複数のプログラムからAPIを利用している場合、正確な合算値を出すのは困難です。

そこで、Google Cloud Platform (GCP) 自体が持っている監視データ(Cloud Monitoring)に外部からアクセスし、正確な消費量を取得することにしました。
これなら、YouTube APIのクォータを消費せずに、監視データだけを取得できます。

3. なぜCloud Monitoring APIなのか?

  • 正確性: Googleが集計している公式データなので間違いがありません。
  • 安全性: 監視専用の権限(Monitoring Viewer)を使うため、万が一キーが漏れてもYouTube動画を削除されたりはしません。
  • 無料枠: 個人開発レベルのアクセス数なら、Monitoring APIの利用料はほぼ無料です。

4. 構築手順:監視用アカウントの作成

それでは具体的な手順を見ていきましょう。
GCPコンソールでの操作がメインになります。

手順1:Cloud Monitoring APIの有効化

まず、プロジェクトで監視機能をONにします。

  1. GCPコンソールの上部検索バーで 「Cloud Monitoring API」 を検索。
  2. 「有効にする」 をクリック。

Cloud Monitoring API_1.png
Cloud Monitoring API_2.png

手順2:サービスアカウントの作成

監視プログラム専用の「身分証明書」を作ります。

  1. 「IAM と管理」 > 「サービス アカウント」 を開く。
  2. 「+サービス アカウントを作成」 をクリック。
  3. サービスアカウント名(例:youtube-quota-monitor)を入力して次へ。

IAM サービスアカウント.png
IAM サービスアカウント_2.png

手順3:権限(ロール)の付与

ここが重要です。余計な権限を与えず、監視だけに絞ります。

  • ロールの選択: フィルタに 「モニタリング閲覧者」roles/monitoring.viewer)と入力して選択。
  • これで「YouTube APIの使用量を見るだけ」の権限が付与されます。

IAM サービスアカウント_3.png

5. ハマりポイント:組織ポリシーの壁

ここで一つ、個人開発でも遭遇しやすいトラブルがあります。
「サービスアカウントキー(JSON)を作成しようとしたらエラーになる」という現象です。

これはGCPのセキュリティ強化により、デフォルトで 「キーの作成が無効化」 されている場合があるためです。
以下の手順で解除しました。

解除手順(エラーが出た場合のみ)

  1. 「IAM と管理」 > 「組織ポリシー」 を開く。
  2. 検索バーに iam.disableServiceAccountKeyCreation と入力。
  3. 「サービス アカウント キーの作成を無効にする」 というポリシーを選択。
  4. 「ポリシーを管理」 をクリックし、以下のように設定変更します。
    • 適用範囲: 「親のポリシーをオーバーライドする」
    • ルール: 「オフ(強制なし)」に設定

これで無事にキーが作れるようになります。

6. JSONキーの発行

最後に、プログラムから使うための認証ファイルをダウンロードします。

  1. 作成したサービスアカウントの詳細画面へ移動。
  2. 「キー」 タブ > 「鍵を追加」 > 「新しい鍵を作成」
  3. 「JSON」 を選択して作成。
  4. 自動的に xxxx-xxxx.json というファイルがダウンロードされます。

⚠ セキュリティ注意: このJSONファイルはパスワードそのものです。GitHubなどに絶対にアップロードしないでください。

7. 注意点

注意点としては、正確にデータが取得できるものの、その中身は少し古く、5~15分前時点のデータを参照して結果を出力する、という処理になるみたいです。
なのでリアルタイムで正確に情報を確認したい、と言った場合はほかの手法を考える必要がありそうです。

取得するときに処理としては1. 5秒ぐらいかかるので、並行処理などを織り交ぜながら時間の効率化を図る必要があります。

8. おわりに

これで、YouTube APIの利用状況を外部から監視する下準備が整いました。
あとはこのJSONキーを使ってPythonなどのスクリプトからCloud Monitoring APIを叩けば、「現在◯◯%消費中」といったデータを取得できます。

「転ばぬ先の杖」。
API枯渇でサービスが止まる前に、まずは監視環境だけでも整えておくことを強くおすすめします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?