AWSのCode系サービスは4つあり、それぞれ役割が違います。まずは「GitHub → CodeBuild → ECS」の最小3ステージで、最初のデプロイを通すところまでを一気に整理します。

AWSでCI/CDを組もうとすると、まず名前が似た4つのサービスに出会います。CodePipelineCodeBuildCodeDeployCodeCommitです。役割を分けて理解すれば難しくありません。この記事は、SIerや情シスの方が「この流れで作れば最初のデプロイは通る」と確信できることをゴールに、最小構成を一本通します。IaC側のパイプライン設計はインフラのCI/CDパイプライン設計で扱っているので、本記事はアプリのデプロイに寄せて書きます。

014つのサービスの役割を先に分ける

最初にやるべきは、4つを混同しないことです。それぞれの守備範囲はきれいに分かれています。

ECS/Fargate上のコンテナを動かしている読者が多いはずなので補足すると、ECSへのデプロイには2通りあります。CodePipelineの「Amazon ECS」デプロイアクション(ローリング更新)を使う手軽な方法と、CodeDeployを噛ませてECSの blue/green を行う方法です。まずは前者で十分です。

現場のコツ:4サービスは全部使う必要はありません。「オーケストレーション(Pipeline)」「ビルド(Build)」「デプロイ(Deploy)」の3役をどう埋めるかだけ意識し、リポジトリはGitHub等の使い慣れたものでOK、という発想が最短です。

02CodeCommitの現在地 — 「新規非対応」から「再開」まで

ここは正確に押さえてください。過去の記事や社内Wikiには古い情報が残りがちな箇所です。時系列はこうです。

つまり2026年時点では、新規アカウントでもCodeCommitのリポジトリを作れます。ただしEMWとしての現実的な整理はこうです。「すでにCodeCommitを使っているなら、そのまま継続で問題ありません。これから新しく始めるチームは、無理にCodeCommitを選ばず、普段使っているGitHub/GitLab/Bitbucketを接続するのが素直です」。一度は新規停止した経緯があること、そして開発者の多くがGitHubに慣れていることを踏まえると、新規はGitHub連携を第一候補に置くのが穏当だと考えています。

現場のコツ:「CodeCommitは新規で使えない」と断言している資料を見かけたら、日付を確認してください。2024年7月〜2025年11月の情報である可能性が高いです。仕様の細部と対応リージョンは動くので、採用判断の前に必ず公式で最新を確認してください。

03ソースの繋ぎ方 — CodeConnections(旧CodeStar Connections)

新規でGitHub/GitLab/Bitbucketを使う場合、CodePipelineのSourceステージにこれらを繋ぐ仕組みがCodeConnectionsです。2024年3月29日にCodeStar Connectionsから改称されました。名称はAPI・CLI・SDK・ドキュメントで切り替わっており、既存の接続はそのまま動きますが、新しいリソースのARNやIAMのサービスプレフィックスはcodeconnections系になります。

ブランチ戦略をどう乗せるかはGitHub Flow / GitLab Flow / Trunk Basedの記事が参考になります。どの流儀でも、CodeConnectionsで拾うブランチを決めるだけでSourceステージは組めます。

04最小構成 — GitHub → CodeBuild → ECS の3ステージ

「とりあえずデプロイできる」ラインは、3ステージで十分に引けます。コンテナをECS(Fargate)で動かす前提で、次の流れを作ります。

CodePipeline がステージを繋ぐ Source GitHub / CodeConnections Build CodeBuild / buildspec.yml Approval 手動承認(任意) Deploy ECS(ローリング) Amazon ECR イメージをpush S3(artifacts) 成果物の受け渡し ECS Service タスクを差し替え imagedefinitions.json が Build→Deploy を橋渡しする
図:GitHub(CodeConnections)→CodeBuild(buildspec)→承認→ECSデプロイの最小パイプライン。ECRとS3(artifacts)は脇で支える。

Buildステージの中身はbuildspec.ymlで決まります。骨子はこれだけです。pre_buildでECRにログインし、buildでDockerイメージをビルド、post_buildでECRへpushして、Deployに渡すimagedefinitions.jsonを出力します。

このimagedefinitions.jsonが、BuildとDeployをつなぐ橋です。ここさえ出力できていれば、CodePipelineのECSデプロイアクションが新しいイメージでサービスを更新してくれます。

05EC2/オンプレなら appspec.yml と CodeDeployエージェント

コンテナではなく、EC2やオンプレのサーバーに直接デプロイする構成もまだ多くあります。その場合はCodeDeployの出番です。デプロイ先にCodeDeployエージェントを導入し、リポジトリ(または成果物)のルートにappspec.ymlを置きます。appspec.ymlには、どのファイルをどこへ配置するか(files)と、停止・インストール・起動・ヘルスチェックといったライフサイクルフック(hooks)で走らせるスクリプトを書きます。in-place(既存インスタンスを入れ替え)と blue-green(新しいインスタンス群に切り替え)がありますが、blue-green を選べるのはEC2(多くはAuto Scalingグループが前提)で、オンプレは in-place のみです。

ECSはimagedefinitions.json、EC2/オンプレはappspec.yml。デプロイ先によって「Deployに渡す設定ファイル」が変わる、と覚えておけば迷いません。

06最初に用意するもの — IAMと箱

パイプラインを回す前に、いくつか器を用意します。難しくはありませんが、権限まわりでつまずきやすいので先に挙げます。

ロールの権限は、最初から絞りすぎると動かず、緩めすぎると事故のもとです。この塩梅はIAM最小権限の現実で扱っています。アカウントを新設した直後であればAWSアカウント初期設定も合わせてご覧ください。

現場のコツ:最初のデプロイが失敗する原因の大半は、コードではなくIAMです。CodeBuildがECRにpushできない、パイプラインがS3を読めない、CodeConnectionsが承認されていない——このあたりをCloudWatch Logsで先に潰すと、体感の難易度が一段下がります。

07Code系 と GitHub Actions/GitLab CI の使い分け

「そもそもCode系を使うべきか、GitHub Actionsで良いのか」は正当な問いです。どちらも良いツールで、優劣ではなく相性で選ぶのが正解です。

AWS Code系が向く AWSネイティブで完結させたい IAMロールで権限を統合したい ランナー管理をしたくない 監査・境界をAWS側に寄せたい 閉域・VPC内ビルドが要る GitHub Actions が向く 開発体験と普及度を重視 豊富なMarketplaceを使いたい マルチクラウド/外部連携が多い OIDCでキーレスにAWSへ PRと同じ画面で完結させたい どちらもデプロイ先はAWSでよい。境界と運用をどちらに寄せるかの選択。
図:AWS Code系はネイティブ統合と運用の軽さ、GitHub Actionsは柔軟性と普及度。デプロイ先がAWSでも選択は分かれる。

Code系の強みは、AWSネイティブであること。ビルドとデプロイの権限をIAMロールで一元管理でき、ランナー(実行基盤)をこちらで管理する必要がありません。閉域やVPC内でのビルドもやりやすく、監査境界をAWS側に寄せたいエンタープライズと相性が良いです。一方GitHub Actionsは、Marketplaceの豊富さと普及度、そしてPRと同じ画面で完結する開発体験が魅力で、OIDCを使えば長期のアクセスキーを持たずにキーレスでAWSへデプロイできます。実際の現場では、CIはGitHub Actions、AWS内部の込み入ったデプロイはCodeDeploy/CodePipeline、と併用する構成も珍しくありません。IaC側での使い分けはインフラのCI/CDパイプライン設計にも通じます。

現場のコツ:「GitHub ActionsからOIDCでAWSへ」も「CodeConnectionsでGitHubをCodePipelineへ」も、どちらも“キーを埋め込まない”方向は同じです。まずはキーレスにできているか、を選定の共通の物差しにすると議論がぶれません。

まとめ

最初の一本は、器を難しく考えないことが近道です。役割を「Pipeline=指揮、Build=ビルド、Deploy=デプロイ」と分け、ソースは使い慣れたGitHubをCodeConnectionsで繋ぎ、ECSならimagedefinitions.json、EC2/オンプレならappspec.ymlを出力する。これで「GitHub → CodeBuild → ECS」の3ステージは通ります。CodeCommitは2024年に一度新規停止しましたが2025年11月に新規受付を再開しており、既存利用なら継続、新規はGitHub連携が素直、という整理で十分です。あとは承認ゲートや通知、権限の絞り込みを段階的に足していけば、最初のデプロイから“運用に耐えるパイプライン”へ育てられます。仕様や対応リージョンは変わるため、着手前に公式で最新をご確認ください。EMWでは事例のとおり、大手SIerやエンタープライズの本番パイプライン構築を数多く支援しています。

参考(一次情報)

「うちの環境だと最初のパイプラインはどう組むのが早いか」を具体的に詰めたい方は、お問い合わせください。設計レビューから伴走まで対応します。

相談する
← ブログ一覧へ戻る