1
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?

【覚書き】composer install時にGitHubAPIのレート制限に引っかかった時の対処法

Posted at

初めに

composer installを実行した際、裏で呼んでいたGitHubのAPIのレート制限に引っかかりました。
レート制限の上限値や回避法について書きます。

GitHubAPIにはレート制限がある

Githubが提供しているAPIにはレート制限があります。
レートの上限値は認証済みのユーザでアクセスするかどうかで決まり、それおぞれ以下の通りです。

  • 認証されてない場合:60回/時間
  • 認証されている場合:5000回/時間

レート制限にひっかかったか確認する方法

認証されてない状態でレート制限に引っかかった場合、以下のようなレスポンスが返ってきます。
その後、認証トークンの入力を求められますが、作成しない場合はレート制限状態になってしまいます。

$ composer update
Loading composer repositories with package information
GitHub API limit (60 calls/hr) is exhausted, could not fetch https://api.github.com/repos/hogehoge Create a GitHub OAuth token to go over the API rate limit. You can also wait until 2024-12-01 04:12:35 for the rate limit to reset.

また、レート制限にあるかどうかはAPIでも確認が可能です。
このAPIへの呼び出しはレート制限にはカウントされません。

$ curl -i https://api.github.com/rate_limit -k
HTTP/1.1 200 OK
~ヘッダー中略~

{
  "rate": {
    "limit": 60,
    "remaining": 0,
    "reset": 1733026355,
    "used": 60,
    "resource": "core"
  }
}

GitHubのレート制限は二種類あり、この記事で扱っているのは前者です。

  • primary-rate-limits
    • ユーザが一定時間に投げてよいリクエストの上限値
  • secondary-rate-limits
    • 不正防止用のアクセスレート制限
    • 同時リクエストや、1分あたりのリクエスト数の制限など

対処法

PATを用いて認証を行うのが簡単でした。
トークンはFine-generated tokensを使用し、Repository accessPublic Repositories (read-only)を指定しています。Permissionsは特に指定しなくても大丈夫でした。

トークン作成後、以下のコマンドでcomposerに登録することでレート制限を回避することができます。

$ composer config -g github-oauth.github.com 作成したトークン

この設定で無事にcomposer installを実行することができました!

終わりに

今回はcomposerを用いたGitHubAPIのレート制限の緩和方法をまとめました。
今後も何か分かったらまとめようと思います。

ここまでご覧いただきありがとうございました!

1
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
1
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?