あるチームがAWS CodePipelineで構築したCI/CDパイプラインを改善しようとしている。ビルドフェーズでDockerイメージをビルドしてAmazon ECRにプッシュする処理を実装するために必要な設定を2つ選択してください。
- A. ECRリポジトリのライフサイクルポリシーでイメージの保持数を設定する
- B. buildspec.ymlのpre_buildフェーズでaws ecr get-login-passwordコマンドを実行してDockerにログインする
- C. CodeBuildプロジェクトの環境でprivilegedモードを有効にしてDockerデーモンを起動可能にする
- D. CodeBuildのサービスロールにAmazonEC2ContainerRegistryPowerUserポリシーをアタッチする
- E. CodePipelineのソースアクションにECRソースタイプを追加する
解答と解説を見る
正解: B, D
DockerイメージをCodeBuildでビルドしてECRにプッシュするためには、まずCodeBuildのサービスロールにECRへの書き込み権限(AmazonEC2ContainerRegistryPowerUserまたは同等のカスタムポリシー)が必要である。次に、buildspec.ymlのpre_buildフェーズでaws ecr get-login-passwordを実行し、その出力をdocker loginコマンドにパイプすることでDockerクライアントをECRに認証させる必要がある。BはDockerのECR認証に必須のステップである。Aのライフサイクルポリシーはイメージの自動削除設定であり、プッシュの実装とは無関係である。CのprivilegedモードはDockerデーモン起動(Docker-in-Docker)に必要だが、標準的なDockerビルドではCodeBuildのホスト環境のDockerを使うためprivilegedモードは不要な場合が多い。EのECRソースは既存イメージの変更をトリガーにするためのものであり、プッシュ処理の設定ではない。
📚 関連サービスの解説: AWS CodeBuild ・ Amazon EC2