初めに
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 access
はPublic Repositories (read-only)
を指定しています。Permissionsは特に指定しなくても大丈夫でした。
トークン作成後、以下のコマンドでcomposerに登録することでレート制限を回避することができます。
$ composer config -g github-oauth.github.com 作成したトークン
この設定で無事にcomposer installを実行することができました!
終わりに
今回はcomposerを用いたGitHubAPIのレート制限の緩和方法をまとめました。
今後も何か分かったらまとめようと思います。
ここまでご覧いただきありがとうございました!