AWS

コンテナのCI/CD構築をやってみよう!

NEW 2026年8月18日

目次Category


1.はじめに

今回は、AWSでコンテナのCI/CD構築を行っていきます。
軽くCI/CDについてお話します。

CI/CDとは

アプリケーションの開発から本番環境への反映を自動化する仕組み

CI(Continuous Integration) 
 プログラムの変更を自動で統合し、問題がないか確認する仕組み

CD(Continuous Delivery / Continuous Deployment) 
 CIで作成したアプリを自動でデプロイする仕組み

要するに、コーディング後のビルド~デプロイまでの作業を楽にしてくれるものだと思ってもらえればいいです。

今回使用するAWSサービス

これらのサービスを使って、次のような流れでCI/CDを行います。

*オレンジの枠:CIの流れ / 紫の枠:CDの流れ
Dockerイメージ:コンテナを起動するためのテンプレートであり、アプリケーションの実行に必要なファイルや設定を含むパッケージ

構築手順へ移りましょう!

2.構築手順

*ECRとECSを作成している前提で進んでいきます。作成方法がわからない方は下記のブログを参照してください!
 ECS(Fargate)+ALB Webアプリケーション構築ハンズオン

構築するにあたって

・サービスを作成する際、命名規則は下記とします。
  [サービス名(英字)]-[name]-[採番] 
(*別途指定があればそちらに従ってください)

・gitコマンドを使用するので、インストールしておいてください。

2-0.AWS CLI設定

本記事では、「SSO認証」を用いてAWS CLIの設定を行います。

*SSO認証が出来ていない方は、下記のブログを参照してください!
ECS(Fargate)+ALB Webアプリケーション構築ハンズオン

*IAMユーザー(アクセスキー)で進めたい方は、以下の公式ドキュメントや解説記事を参照の上、”aws configure” コマンド等で設定を行ってください。

AWS CLIの設定(IAMユーザーアクセスキー)-公式ドキュメント

AWS CLIを利用するため必要な初期設定について -Classmethod DevelopersIO

2-1.CodeCommit設定

まずは、ソースコードを管理するためのリポジトリを作成していきます。
CodeCommitのページを開くと、”リポジトリの作成”があるのでクリックしましょう。
すると、下記の画面が出てきます。

① リポジトリ名を入力

② 右下の作成ボタンをクリック
(*他の設定は任意です)

ローカル環境にリポジトリをクローンしていきます。

③ ターミナルまたはコマンドプロンプトを開き,C直下のworkフォルダに移動
(Macでは、ルートディレクトリ直下)

④ 以下のコマンドを実行

Macの場合
・git config –global credential.helper ‘!aws codecommit credential-helper $@’
・git config –global credential.UseHttpPath true

Windowsの場合
・git config –global credential.helper “!aws codecommit credential-helper %*”
・git config –global credential.UseHttpPath true

ここでGitからAWS CodeCommitへHTTP接続する際の認証設定をしています。

 各コマンドを軽く紹介
 1つ目:gitから認証情報の要求が来たらAWS CLIの機能を呼び出すように指定
 2つ目:URLで認証情報を管理していて、パス名まで含めるかを指定
   *デフォルトは、”https://git-codecommit.[リージョン名].amazonaws.com”

⑤ 以下のコマンドでリポジトリをクローン
・git clone [リポジトリURL]

リポジトリURLはHTTPSのクローンから取得してください。(下記画像参照)

2-2.CodeBuildの設定

① buildspec.ymlの準備

VSCode等のエディターを使用して、CodeBuildの設定に必要なbuildspec.ymlを
準備します。
新しくymlファイルを作成して、下記のコードを記載してください。


 

phases:
pre_build:
commands:
– echo Logging in to Amazon ECR…
– aws ecr get-login-password –region $AWS_DEFAULT_REGION | docker login –username AWS –password-stdin 120822896818.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
– REPOSITORY_URI=120822896818.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME
– COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
– IMAGE_TAG=${COMMIT_HASH:=latest}
build:
commands:
– echo Build started on `date`
– echo Building the Docker image…
– docker build -t $REPOSITORY_URI:latest .
– docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
post_build:
commands:
– echo Build completed on `date`
– echo Pushing the Docker images…
– docker push $REPOSITORY_URI:latest
– docker push $REPOSITORY_URI:$IMAGE_TAG
– echo Writing image definitions file…
# ※「コンテナ名」の部分を、ECSタスク定義内の「コンテナ名」にする
– printf ‘[{“name”:”コンテナ名”,”imageUri”:”%s”}]’ $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json

 

artifacts:
files: imagedefinitions.json
————————————————————————————————————————–
*buildspec.yml:CodeBuildがビルドを実行するための手順書
作成したbuildspec.ymlとDockerfile・index.htmlをクローンしたリポジトリのディレクトリに格納してください。
Dockerfileとindex.htmlは、本章冒頭に掲載しているブログで作成したものを再度使用しています。

② gitにステージング、コミット、プッシュする

・git add .
・git commit -m “first commit”
・git push origin master

③ CodeBuildでビルドプロジェクトを作成

【プロジェクトの設定】
 プロジェクト名:codebuild-kamiyama-01
【ソース】
 ソースプロバイダ:AWS CodeCommit
 リポジトリ:codecommit-kamiyama-01(作成したCodeCommit名)
 ブランチ:mainまたはmaster
【環境】
 ・追加設定を開き、特権付与にチェックを付ける
(画像2枚目キュータイムアウトの下)
 ・環境変数を2種類設定する (画像2枚目一番下)
*上記以外は基本デフォルト
*サービスロールでは、”新しいサービスロール”を選択する場合
 ・ロール名は、オブジェクト名を入れたときに自動生成される(文字数制限あり)
 ・既にロールが存在する場合は、確認を取った上でそのロールと付随するポリシー    
  を削除
【Buildspec】
 ・”buildspecファイルを使用する”を選択
 ・入力欄に”buildspec.yml”を入力
 
以降は、デフォルトのままで”ビルドプロジェクトを作成する”をクリック

④ サービスロールへのロール付与

作成したビルドプロジェクトの詳細を開いていください。

サービルロールをクリックしてください。

【許可ポリシー】
 ・許可を追加 -> ポリシーをアタッチ
 ・「AmazonEC2ContainerRegistryFullAccess」を検索して、付与

⑤ 作成したビルドプロジェクトで”ビルド開始”を実行

*エラーが出たら都度解決してください

ビルドが成功したら、次へ移りましょう!

 

2-3.CodePipelineの設定

新規パイプラインの作成を進めていきます。

【Category】 
  ・”カスタムパイプラインを構築する”を選択

【パイプラインの設定】
 ・パイプライン名:pipeline-kamiyama-01
*サービスロールは、CodeBuildと同様の点に注意してください

 【ソース】
 ・ソースプロバイダー:AWS CodeCommit
 ・リポジトリ名:codecommit-kamiyama-01(作成したCodeCommit名)
 ・ブランチ名:mainまたはmaster

【構築する】
 ・プロバイダーを構築する:その他のビルドプロバイダー
 ・プルダウンから”AWS CodeBuild”を選択
 ・プロジェクト名:codebuild-kamiyama-01(作成したCodeBuild名)
 ・リージョン:自分がいるリージョン(デフォルトでよいはず)
*以降はデフォルトのまま

【テスト】
      何もせず次へ

【デプロイ】
 ・デプロイプロバイダー:Amazon ECS
 ・リージョン:自分がいるリージョン(デフォルトでよいはず)
 ・クラスター名:ecs-kamiyama-01 (作成したECSのクラスター名)
 ・サービス名:ecs-service-kamiyama-01(クラスターで作成したサービス名)
*以降はデフォルト

設定内容が問題ないか確認出来たら作成!!

作成できると自動で動き始めるので完了するまで待つ
*エラーが出たら修正しましょう!

 

2-4.動作確認

index.htmlを編集して、CodeCommitにプッシュして、パイプラインが動いて成功するか確認してみましょう。

 

3.最後に

 コンテナのCI/CD構築はこれで以上になります。
 今回作成/使用したサービスは最後に削除しましょう!
 ・Amazon ECS
 ・Amazon ECR
 ・CodeBuild
 ・CodePipeline
 ・CodeCommit

この記事を書いた人

神山颯太

hayato_kamiyama

26卒の神山です。
動くことが大好きです。