AWS CodePipeline・CodeBuildでCI/CDパイプライン構築|GitHubと連携したAWSネイティブな自動デプロイ

現場実践|AWS CI/CDパイプライン
AWS CodePipeline・CodeBuildでCI/CDパイプライン構築|GitHubと連携したAWSネイティブな自動デプロイ
「GitHub ActionsのCI/CDをAWSネイティブなサービスに移行したい」——AWS CodePipeline・CodeBuild・CodeDeployを使ったGitHub連携CI/CDパイプラインの設計と実装を解説します。
💡 AWS CodePipeline/CodeBuildはAWSのネイティブCI/CDサービス。IAMロールでアクセスキーが不要・AWSサービスとの統合が深い・マネージドで管理が簡単という特徴があります。
1. CodePipeline・CodeBuild・CodeDeployの役割
CodePipeline
パイプライン全体のオーケストレーター。Source(GitHub)→Build(CodeBuild)→Deploy(ECS等)のステージを管理する。
CodeBuild
buildspec.ymlに記述したビルド・テスト・Dockerイメージビルドなどを実行するマネージドなビルド環境。
CodeDeploy
EC2・Lambda・ECSへのデプロイを管理。Blue/Greenデプロイ・カナリアデプロイをサポート。
2. buildspec.ymlの基本構成
version: 0.2
phases:
pre_build:
commands:
- aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin $ECR_URI
- COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
build:
commands:
- docker run --rm test-image pytest tests/
- docker build -t $ECR_URI:$COMMIT_HASH .
post_build:
commands:
- docker push $ECR_URI:$COMMIT_HASH
- printf "[{\"name\":\"app\",\"imageUri\":\"%s\"}]" $ECR_URI:$COMMIT_HASH > imagedefinitions.json
artifacts:
files:
- imagedefinitions.json3. ECS Blue/Greenデプロイの設定
- 自動切り替えフロー:新バージョンのタスク(Green)を起動→ALBのトラフィックをGreenに切り替え→旧バージョン(Blue)を削除という流れを自動化する
- カナリア設定:「最初の5分間は10%のトラフィックをGreenに流し、問題なければ100%に切り替える」というカナリアデプロイも設定可能
- 自動ロールバック:デプロイ中にCloudWatchアラームが発火した場合に自動ロールバックする設定ができる
4. GitHub Actionsとの比較
| AWS Code系 | GitHub Actions | |
|---|---|---|
| AWSとの統合 | IAMロールでアクセスキー不要 | OIDCでアクセスキー不要(設定が必要) |
| 管理 | AWSマネジメントコンソールで一元管理 | GitHubで管理 |
| コスト | CodeBuildはビルド時間課金 | パブリックリポジトリは無料 |
📌 この記事のポイント
- CodePipelineがオーケストレーター・CodeBuildがビルド実行・CodeDeployがECS/EC2へのデプロイを担当
- buildspec.ymlにECRログイン→テスト→イメージビルド→プッシュの流れを記述。コミットハッシュをイメージタグに
- ECS Blue/Green+CloudWatchアラームによる自動ロールバックが本番デプロイの安全な設計パターン
キャリアの疑問、一緒に解決しませんか?
Infra Academyでは、インフラ系ITエンジニアを目指す方への個別サポートを行っています。2026年7月からフリーランス講師として本格始動予定です。
ABOUT ME



