AWS CodePipeline のアイコン

AWS CodePipeline

コードの変更を自動的にビルド・テスト・デプロイする CI/CD パイプラインサービス

何ができるか

AWS CodePipeline は、ソフトウェアのリリースプロセスを自動化する継続的デリバリー (CD) サービスです。コードの変更を検知すると、ビルド、テスト、デプロイの各ステージを自動的に実行し、手動作業なしでアプリケーションを本番環境にリリースできます。CodeCommit、GitHub、S3 などのソースプロバイダーと、CodeBuild、Jenkins、Lambda などのビルド・デプロイプロバイダーを組み合わせて、柔軟なパイプラインを構築できます。

どのような場面で使うか

Web アプリケーションの自動デプロイ、Lambda 関数のコード更新の自動化、コンテナイメージのビルドと ECS へのデプロイ、CloudFormation テンプレートによるインフラ変更の自動適用、複数環境 (開発・ステージング・本番) への段階的リリースなど、ソフトウェアのリリースサイクルを高速化したい場面で利用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。

身近な例え

工場の組立ラインに例えるとわかりやすいでしょう。原材料 (ソースコード) が投入されると、加工 (ビルド)、品質検査 (テスト)、出荷 (デプロイ) が自動的に流れていきます。どこかの工程で不良品が見つかれば、ラインが止まって通知が届きます。人手を介さず、品質を保ちながら製品を素早く届ける仕組みです。

CodePipeline とは

AWS CodePipeline は、ソフトウェアのリリースプロセスをモデル化し自動化するフルマネージドの CI/CD サービスです。パイプラインは複数のステージで構成され、各ステージにはソースの取得、ビルド、テスト、承認、デプロイなどのアクションを定義します。コードリポジトリへのプッシュをトリガーにパイプラインが自動起動し、定義された順序でアクションが実行されます。

主な特徴

CodePipeline の特徴は、AWS サービスとサードパーティツールの両方を柔軟に組み合わせられる点です。ソースステージでは CodeCommit、GitHub、Bitbucket、S3 を選択でき、ビルドステージでは CodeBuild や Jenkins を、デプロイステージでは CodeDeploy、ECS、CloudFormation、S3 などを指定できます。並列アクションにより複数のリージョンやアカウントへの同時デプロイも可能です。手動承認アクションを挟めば、本番デプロイ前に人間のレビューを必須にできます。

パイプラインの構成

パイプラインは「ステージ」と「アクション」の 2 層構造で定義します。ステージはパイプラインの論理的な区切りで、Source、Build、Test、Deploy などの名前を付けます。各ステージには 1 つ以上のアクションを配置し、アクション間でアーティファクト (ビルド成果物) を受け渡します。アーティファクトは S3 に自動保存されるため、各ステージの入出力を後から確認できます。パイプラインの定義は JSON または YAML で記述でき、CloudFormation でインフラと一緒に管理するのが一般的です。

料金体系

CodePipeline の料金はアクティブなパイプライン数に基づきます。V1 タイプのパイプラインは 1 パイプラインあたり月額 1 USD、V2 タイプではアクション実行回数に応じた従量課金です。最初の 1 パイプラインは無料枠として提供されます。パイプライン内で使用する CodeBuild や CodeDeploy などの料金は別途発生しますが、CodePipeline 自体のコストは非常に低く抑えられています。

はじめかた

CodePipeline を使い始めるには、AWS マネジメントコンソールで CodePipeline ダッシュボードを開き、「パイプラインの作成」をクリックします。ソースプロバイダー (GitHub や CodeCommit) を選択し、ビルドプロバイダー (CodeBuild) とデプロイプロバイダー (S3 や ECS) を設定すれば、基本的なパイプラインが完成します。コードをプッシュするとパイプラインが自動起動し、各ステージの進行状況をコンソール上でリアルタイムに確認できます。

注意点

  • パイプラインの失敗通知を SNS や Slack に設定し、デプロイ失敗を即座に検知できる体制を整えること
  • 本番環境へのデプロイ前には手動承認アクションを挟み、意図しないリリースを防止すること

さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。