Instiq
第4章 · デプロイ·v2.1.0·更新 2026/6/28·読了目安 約9分

変更要約: in-scopeサービス網羅(軸B): s1にCodeArtifact/CloudShell、s3にAmplifyの定義・役割・選択基準を追記。

4.1CI/CD パイプライン

この節の要点

CodePipeline によるソース→ビルド→テスト→デプロイの自動化、CodeBuild(ビルド/テスト)と CodeDeploy(デプロイ)の役割、buildspec といった CI/CD の基礎を理解します。DVA-C02 の「デプロイ」の中心です。

コードの変更を自動でビルド・テスト・デプロイする仕組みが CI/CD です。AWS では CodePipeline が全体を編成し、各段階を専用サービスが担います。

4.1.1パイプラインの段階

ソース(CodeCommit/Git)→ビルド(CodeBuild)→テスト(CodeBuild)→デプロイ(CodeDeploy)という段階を CodePipeline が編成し、コミットがビルド→テスト→デプロイをトリガーする流れを示した図。
CodePipeline による CI/CD
  • CodePipeline:ソース→ビルド→テスト→デプロイの段階全体を編成する。
  • CodeBuild:ソースをビルド/テストする。手順は buildspec.yml に記述する。
  • CodeDeploy:EC2/オンプレ/Lambda/ECS へデプロイする。手順は appspec に記述。
  • CodeCommit は Git リポジトリ(外部 Git も可)。コミットがパイプラインを起動する。※CodeCommit は 2024 年 7 月以降 新規顧客の受付を終了(既存は継続)。新規は GitHub 等+CodeConnections が一般的。
試験ポイント

「全体の編成=CodePipeline」「ビルド/テスト手順=CodeBuild の buildspec.yml」「デプロイ手順=CodeDeploy の appspec」 は DVA で頻出です。役割の取り違えに注意しましょう。

CI/CD の肝は「役割の切り分け」です。CodePipeline はステージ(ソース→ビルド→テスト→デプロイ)を編成するだけで、実際の処理は各サービスに委譲します。ビルドとテストは CodeBuildbuildspec.yml の手順(install/pre_build/build/post_build フェーズ)で実行し、生成物(アーティファクト)を S3 に置いて次ステージへ渡します。デプロイは CodeDeployappspec の指示(どのファイルをどこへ・フック処理)で行います。各ステージ間はアーティファクトで連携し、承認アクションを挟めば手動承認を要求できます。ソースには CodeCommit のほか GitHub などの外部 Git も使え、コミットや Pull Request が トリガー となってパイプラインが自動起動します。失敗したステージで止まる(=不良コードが本番に届かない)のが CI/CD の安全性です。

段階担当サービス定義ファイル
全体の編成CodePipeline(パイプライン定義)
ビルド/テストCodeBuildbuildspec.yml
デプロイCodeDeployappspec.yml
ソース管理CodeCommit / 外部 Git(リポジトリ)

CodeBuild をもう少し掘り下げます。ビルドは隔離されたコンテナで実行され、実行環境(イメージ・コンピュートサイズ)環境変数を指定できます。パスワードや API キーは平文の環境変数に置かず、Secrets Manager / Parameter Store から参照します(前章のシークレット管理と一貫)。依存関係のダウンロードを短縮するキャッシュ(S3 やローカル)や、複数フェーズの並列実行、テスト結果レポートにも対応します。CodePipeline では1つのステージに複数アクションを置いて並列実行でき、別リージョン/別アカウントへのデプロイ(クロスアカウント)も組めます。ソース変更の検知は、ポーリングよりWebhook/イベント駆動(EventBridge)が推奨で、無駄なくパイプラインを起動します。ビルド成果物やキャッシュ、アーティファクトの保管先は基本的に S3 です。

シナリオ:本番反映前に手動承認を入れたい。 ソース(CodeCommit)→ビルド/テスト(CodeBuild の buildspec.yml)の後に CodePipeline の承認アクションを挟み、責任者が承認したら CodeDeploy が本番へ。テストが失敗すればパイプラインはそこで停止し、不良ビルドは本番に届きません。

補足

Q. buildspec と appspec の違いは? buildspec は CodeBuild のビルド/テスト手順、appspec は CodeDeploy のデプロイ手順。Q. ステージ間はどう連携? アーティファクト(S3)で受け渡す。Q. 外部 GitHub は使える? はい、ソースステージで接続できる。

注意

混同に注意:
buildspec.yml=CodeBuildappspec=CodeDeploy——取り違えが頻出。
②CodePipeline は処理を「編成するだけ」で自分ではビルド/デプロイしない。
③成果物はステージ間でアーティファクトとして受け渡される。

4.1.2依存パッケージと開発者シェル(CodeArtifact・CloudShell)

CI/CD のビルドでは、外部の公開リポジトリから依存パッケージを取得しますが、社内共有や可用性・セキュリティの観点でこれを内製化したいことがあります。AWS CodeArtifactマネージドなパッケージリポジトリで、npm・pip・Maven・NuGet などに対応し、公開リポジトリのプロキシ/キャッシュとして機能しつつ、組織内のプライベートパッケージを共有できます。CodeBuild から CodeArtifact を参照すれば、バージョンを固定し、外部障害や不正パッケージの影響を抑えられます。一方、ブラウザだけで AWS CLI をすぐ使いたいときは AWS CloudShell が便利です。CloudShell は認証済み・AWS CLI/SDK 同梱のブラウザシェルで、ローカルにキーや CLI を用意せずに、その場でコマンドを実行できます。判断の勘所は「依存パッケージの共有/プロキシ=CodeArtifact」「ブラウザから即 CLI 実行=CloudShell」です。

やりたいこと選択
依存パッケージの共有・公開リポジトリのプロキシAWS CodeArtifact
ブラウザから認証済みの AWS CLI を即実行AWS CloudShell

4.1.3この節のまとめ

  • CodePipeline(編成)/CodeBuild(buildspec)/CodeDeploy(appspec)
  • コミットが自動でビルド→テスト→デプロイを起動

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. ソース→ビルド→テスト→デプロイという CI/CD の段階全体を編成する AWS のサービスはどれですか?

Q2. CodeBuild のビルド手順を記述するファイルはどれですか?

Q3. EC2 や Lambda などへアプリケーションをデプロイする AWS のサービスはどれですか?

理解度を確認第4章「デプロイ」の問題を解く

学習の記録を残しませんか

参考書はすべて無料で読めます。無料登録すると、問題集での演習・既読と進捗の記録・間違えた問題の復習・ハイライトが使えます。