【AWS】CodeBuild で カスタムDockerイメージを使ってビルドする

■ はじめに

https://dk521123.hatenablog.com/entry/2020/05/22/165711

の続き。
Amazon ECR を学んだので、今回は、当初の目標である
CodeBuild で、カスタム Docker ビルドイメージを
使用する方法について、学ぶ。

■ 導入前に

標準で用意されているDocker イメージの確認

 まず、カスタム Docker ビルドイメージを導入する前に
標準で用意されているDocker イメージで賄えないかどうかを
調査しておいた方がいい。
以下の公式サイトに記載されている。

公式サイト:CodeBuild に用意されている Docker イメージ
https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/build-env-ref-available.html

■ 手順

【1】ECRの画面からCodeBuildのロールに対して、許可を行う
【2】作成したDockerイメージを作成し、ECRにPushしておく
【3】カスタムイメージを適用する
【4】CodeBuildを実行し動作確認

【1】ECRの画面からCodeBuildのロールに対して、許可を行う

# これにめっちゃはまった。。。
# はじめ、IAMのページからやると勘違いしてた。あと★部分。

1)AWSマネージメントコンソール「Elastic Container Registry」で
  対象のリポジトリを選択し、左ペインの[Permissions]を選択する

2)ECRのPermissonの設定を行う

・Statement name:任意の文字列(今回は「hello-world-ecr-permisson」)
・Effect:Allow or Deny(今回は「Alllow」)
・Principal:適切に設定(今回は「Everyone(*)」にチェック )
 ⇒ ★『「Everyone(*)」にチェック 』をしなくてはまった★
・IAM entities:CodeBuildの IAM ロール
・Actions:適切に設定
 今回は、以下の公式サイトを参考に以下のActionを登録
 A)ecr:GetDownloadUrlForLayer
 B)ecr:BatchGetImage
 C)ecr:BatchCheckLayerAvailability

https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/sample-ecr.html

【2】作成したDockerイメージを作成し、ECRにPushしておく

以下の関連記事を参照のこと

https://dk521123.hatenablog.com/entry/2020/05/22/165711

【3】カスタムイメージを適用する

CodeBuildのプロジェクトを新規作成しても適用できるし、
既にある作成してあるCodeBuildのプロジェクトから変更も可能。

[Environment]を選択し、以下を行う
・New enviroment Image:Custom Image
・Enviroment type:Custom ImageのOSタイプ(今回は、「Linux」)
・Image registry:Amazon ECR
・ECR account:My ECR account
・Amazon ECR repository:自分で作成したECRのリポジトリ(今回は「hello-world-ecr」)

【4】CodeBuildを実行し動作確認

CodeBuildの「Start Build」でBuildできるかどうか確認する

補足:buildspec.yml の修正

https://dk521123.hatenablog.com/entry/2020/05/22/165711

で、Python3.6に変更したので、buildspec.yaml の「runtime-versions」
も変更したら、エラーになってしまった。
 ⇒ 対処策として、「install:」の区間を丸ごと削除した

エラーが発生したbuildspec.yml

version: 0.2

phases:
  install: # ← 結局、この句から全て削除して対応
    runtime-versions:
      # Python3.6を使っていて「3.6」にしたらエラー
      python: 3.6

参考文献

https://qiita.com/akikinyan/items/2ff72cf1129b66304616
公式サイト
https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/sample-docker.html
https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/sample-docker-custom-image.html

関連記事

CodeBuild ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/01/21/221122
CodeBuildに flake8 を組み込む
https://dk521123.hatenablog.com/entry/2020/02/17/220545
CodeBuild で パラメータストア / Secrets Manager を使う
https://dk521123.hatenablog.com/entry/2020/02/18/230358
CodeBuild で Python のバージョンを切り替える
https://dk521123.hatenablog.com/entry/2020/02/19/230909
Amazon ECR ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/05/22/165711
Amazon ECR でのトラブルシューティング
https://dk521123.hatenablog.com/entry/2020/05/24/000000