CodeBuildのプロビジョニングフェーズでdocker pullの制限を回避する
こんにちは
株式会社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
- これで完了です
おわり
キーはusername
とpassword
で値はdockerhubのユーザ名とパスワードになります
次に進んでシークレットの自動ローテーションを設定します
シークレットのARNをコピーします
- ↑で作ったシークレットの名前と違います、sampleです
- ビルドプロジェクトのビルドの詳細から環境の項目を編集します
- イメージを上書きを選択すると↓の項目が出てくるので先程コピーしたシークレットの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
- これで完了です
おわり
{
"username": "dockerhubのユーザ名",
"password": "dockerhubのパスワード"
}
aws secretsmanager create-secret --name dockerhub --secret-string file://secret.json
aws codebuild batch-get-projects --names プロジェクト名 > project-info.json
"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さんになります!
Author And Source
この問題について(CodeBuildのプロビジョニングフェーズでdocker pullの制限を回避する), 我々は、より多くの情報をここで見つけました https://qiita.com/python_spameggs/items/4611f5bad3749ffc2e7e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .