先日AWSでCodePipelineを利用してCodeBuildを実行してコンテナイメージを作成するときにハマったときの対処方法の備忘します。
CodeBuildのエラーログ「You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limits」
結論から言うとDockerHUBにログインしないでイメージをダウンロードするのに回数制限がありました。
■DockerHUBの制限
①認証していない(anonymous ユーザ)場合は、100ダウンロード/6時間
②認証している場合(Free アカウント)は 200 ダウンロード/6時間
③Docker Pro / Team 有償アカウントでログイン時は無制限
私が実施していたのは①のケースで6時間あたり100ダウンロードの条件に当てはまっていたのですがどう考えても6時間に100回ビルドしていない。
問題はAWSからDockerHUBにアクセスするIPアドレスは複数あるが、AWSユーザで共用のため他のAWSユーザがダウンロードを実施している可能性がる。結果的にダウンロード制限を超えたIPを利用してアクセスしたときに制限がかかるという仕組みでした。
■解決方法
1.CodeBuildに利用するBuildSpec.yamlにDockerHUBのユーザ情報を記載(②のケースを利用)
2.ECRに当該Dockerイメージをアップロードし、そのファイルをBildするときにダウンロードするようにDockerFileにパスを記載する。
詳しい実施方法を知りたいかたはお問合せくださいませ。
コメント