こんにちは
株式会社Diverseで働いている@python_spameggsです
Diverse Advend Calendar 2020の初日になります
CodeBuildのプロビジョニングフェーズでdocker pullの制限でエラーになってしまうことが多くなってきたのでSecrets Managerを使用して解決しました
CodeBuildのプロビジョニングフェーズでのエラー
- このようにエラーになってしまいます
- プロビジョニングフェーズでのエラーなのでbuildspecにdocker loginを設定しても意味がないので別の方法で回避します
Secrets Managerを使う
-
キーは
username
とpassword
で値はdockerhubのユーザ名とパスワードになります -
次に進んでシークレットの自動ローテーションを設定します
-
シークレットのARNをコピーします
- ↑で作ったシークレットの名前と違います、sampleです
CodeBuildへ
- ビルドプロジェクトのビルドの詳細から環境の項目を編集します
- イメージを上書きを選択すると↓の項目が出てくるので先程コピーしたシークレットのARNをペーストします
- これで完了ですので再度ビルドしてエラーにならないことを確認しましょう
aws-cliで更新する
Secrets Managerに登録
secret.json
{
"username": "dockerhubのユーザ名",
"password": "dockerhubのパスワード"
}
aws secretsmanager create-secret --name dockerhub --secret-string file://secret.json
CodeBuildの更新をする
- 現在の設定を取得する
aws codebuild batch-get-projects --names プロジェクト名 > project-info.json
- project-info.jsonにSecrets ManagerのARNを追加する
"registryCredential": {
"credential": "作成したSecrets ManagerのARNを入れる",
"credentialProvider": "SECRETS_MANAGER"
}
- プロジェクトを更新する
aws codebuild update-project --cli-input-json file://project-info.json
- これで完了です
おわり
これでCodeBuildを使うたびにdocker pullの制限でエラーになってしまうことを回避することができました
明日の2日目は@masashi-sutouさんになります!