CodePipeline のベストプラクティスとユースケース
AWS CodePipeline は多数の製品およびサービスと統合されています。以下のセクションでは、CodePipeline のベストプラクティスとユースケース、およびこれらの関連製品とサービスについて説明します。
CodePipeline の簡単なビジネスユースケースは、サービスの実装方法とユーザーアクセスの制御方法を理解するのに役立ちます。ユースケースは一般的な用語で説明されています。求めている結果を得るために使用する API を規定していません。
ベストプラクティス
CodePipeline を使用している場合は、こちらのセクションで説明されているベストプラクティスをご利用ください。
CodePipeline リソースで使用するセキュリティのベストプラクティス
パイプラインに接続するソースリポジトリには暗号化と認証を使用します。CodePipeline のセキュリティのベストプラクティスに関しては、「セキュリティのベストプラクティス」を参照してください。
CodePipeline リソースで使用するモニタリングとログ記録のベストプラクティス
AWS のロギング機能を使用すると、ユーザーがアカウントで実行したアクションや使用されたリソースを確認できます。ログファイルは次の情報を表示します。
-
アクションが実行された日時。
-
アクションのソース IP アドレス。
-
不適切なアクセス権限が理由で失敗したアクティビティ。
ロギング機能は次の AWS サービスで使用できます。
-
AWS CloudTrail は AWS アカウントが行った、または AWS のために行われた AWS API コールとそれに関連するイベントをログするために使用できます。詳細については、「AWS CloudTrail による CodePipeline API コールのログ記録」を参照してください。
-
Amazon CloudWatch Events は AWS クラウドリソースと AWS で実行されるアプリケーションを監視するために使用できます。定義したメトリクスに基づいて、Amazon CloudWatch Events でアラートを作成できます。詳細については、「CodePipeline イベントのモニタリング」を参照してください。
Jenkins プラグインを使用するためのベストプラクティス
Jenkins アクションプロバイダーを使用するパイプラインでは、このセクションに記載されているベストプラクティスを使用します。
Jenkins ビルドサーバー用に別の Amazon EC2 インスタンスと IAM ロールを設定する
ベストプラクティスとして、パイプラインのビルドまたはテストアクションで Jenkins ビルドプロバイダを使用する場合は、Amazon EC2 インスタンスに Jenkins をインストールし、別の EC2 インスタンスプロファイルを設定します。インスタンスプロファイルによって Jenkins に付与されている AWS アクセス許可は、Amazon S3 からファイルを取得するなどプロジェクトのタスクを実行するために必要なもののみであることを確認してください。
インスタンスプロファイルは、Amazon EC2 インスタンスで実行されているアプリケーションに、他の AWS サービスにアクセスするための認証情報を提供します。そのため、AWS 認証情報 (AWS アクセスキーおよびシークレットキー) を設定する必要はありません。
Jenkins インスタンスプロファイルのロールを作成する方法については、「Jenkins 統合に使用する IAM ロールを作成する」のステップを参照してください。
CodePipeline のユースケース
他の AWS サービスと統合するパイプラインを作成できます。これらは Amazon S3 などの AWS サービスや GitHub のようなサードパーティ製品です。このセクションは CodePipeline を使用して別の製品統合を使いコードリリースを自動化する場合の例を示しています。アクションタイプ別に整理した CodePipeline との統合の一覧は「CodePipeline パイプライン構造リファレンス」を参照してください。
トピック
- Amazon S3、AWS CodeCommit、および AWS CodeDeploy で CodePipeline を使用する
- サードパーティーアクションプロバイダー (GitHub や Jenkins) で CodePipeline を使用する
- AWS CodeStar で CodePipeline を使用してコードプロジェクトにパイプラインを構築する
- CodeBuild で CodePipeline を使用してコードをコンパイル、ビルド、テストする
- Amazon ECS で CodePipeline を使用してクラウドにコンテナベースのアプリケーションを継続的にデリバリーする
- Elastic Beanstalk で CodePipeline を使用してクラウドにウェブアプリケーションを継続的にデリバリーする
- AWS Lambda で CodePipeline を使用して Lambda ベースアプリケーションとサーバーレスアプリケーションを継続的にデリバリーする
- AWS CloudFormation テンプレートで CodePipeline を使用してクラウドに継続的にデリバリーする
Amazon S3、AWS CodeCommit、および AWS CodeDeploy で CodePipeline を使用する
パイプラインを作成すると、CodePipeline はパイプラインの各ステージでアクションプロバイダーとして作動する AWS 製品やサービスと統合します。ウィザードでステージを選択する場合は、ソースステージそしてビルドまたはデプロイステージを少なくても 1 つ選ぶ必要があります。ウィザードは変更することができないデフォルト名を使用してステージを作成します。こうしたステージの名前は、ウィザードで 3 つの完全なステージをセットアップした際に作成されたものです。
-
「ソース」というデフォルト名を使用したソースアクションステージ
-
「ビルド」というデフォルト名を使用したビルドアクションステージ
-
「ステージング」というデフォルト名を使用したデプロイアクションステージ
このガイドのチュートリアルを使用してパイプラインを作成しステージを指定できます。
-
チュートリアル シンプルなパイプラインを作成する(S3バケット) のステップは、ウィザードを使用して Amazon S3 リポジトリがソースプロバイダーとなる「ソース」と「ステージング」という 2 つのデフォルトステージを含むパイプラインの作成をサポートします。このチュートリアルで AWS CodeDeploy を使用するパイプラインを作成し、Amazon Linux を実行している Amazon EC2 インスタンスに Amazon S3 バケットからのサンプルアプリケーションをデプロイすることができます。
-
チュートリアル: シンプルなパイプラインを作成する (CodeCommit リポジトリ) のステップは、ウィザードを使用し AWS CodeCommit リポジトリをソースプロバイダーとして利用する「ソース」ステージを使ったパイプラインの作成をサポートします。このチュートリアルで AWS CodeDeploy を使用するパイプラインを作成し、Amazon Linux を実行している Amazon EC2 インスタンスに AWS CodeCommit リポジトリからのサンプルアプリケーションをデプロイすることができます。
サードパーティーアクションプロバイダー (GitHub や Jenkins) で CodePipeline を使用する
GitHub や Jenkins といったサードパーティ製品と統合するパイプラインを作成できます。チュートリアル: 4 ステージのパイプラインを作成する のステップは、次の操作を実行するパイプラインの作成方法を示しています。
-
GitHub リポジトリからソースコードを取得、
-
Jenkins を使用してソースコードの構築とテストを実行、
-
AWS CodeDeploy を使用して、Amazon Linux または Microsoft Windows Server を実行している Amazon EC2 インスタンスに、ビルトとテスト済みのソースコードをデプロイします。
AWS CodeStar で CodePipeline を使用してコードプロジェクトにパイプラインを構築する
AWS CodeStar は AWS でソフトウェア開発プロジェクトを管理するために、統合されたユーザーインターフェイスを提供するクラウドベースサービスです。AWS リソースをプロジェクト開発のツールチェーンと組み合わせるため、AWS CodeStar は CodePipeline と動作しますAWS CodeStar ダッシュボードを使用して、パイプライン、リポジトリ、ソースコード、ビルドスペックファイル、デプロイ方法を自動作成したり、完全なコードプロジェクトで必要なインスタンスまたはサーバーレスインスタンスをホストできます。
AWS CodeStar プロジェクトを作成するには、コード言語とデプロイしたいアプリケーションのタイプを選択します。ウェブアプリケーション、ウェブサービス、Alexa スキルといったプロジェクトタイプを作成できます。
必要に応じていつでも任意の IDE を AWS CodeStar ダッシュボードで統合できます。チームメンバーの追加や削除を行ったり、プロジェクトでチームメンバーのアクセス権限を管理することもできます。AWS CodeStar を使用してサーバーレスアプリケーションのサンプルパイプラインを作成するためのチュートリアルについては「チュートリアル: AWS CodeStar でサーバーレスプロジェクトを作成および管理する」を参照してください。
CodeBuild で CodePipeline を使用してコードをコンパイル、ビルド、テストする
CodeBuild はクラウドにあるマネージド型のビルドサービスで、サーバーやシステムを必要とせずにコードを構築したりテストを実行できるようにします。CodeBuild と CodePipeline を使用して、ソースコードに変更があるたびにパイプラインを介してソフトウェアビルドの継続デリバリーを可能にするため、リビジョンの実行を自動化できます。 詳細については、「CodeBuild で AWS CodePipeline を使用してコードをテストおよびビルドする」を参照してください。
Amazon ECS で CodePipeline を使用してクラウドにコンテナベースのアプリケーションを継続的にデリバリーする
Amazon ECS はコンテナ管理サービスで、クラウド内の Amazon ECS インスタンスにコンテナベースのアプリケーションをデプロイできるようにします。Amazon ECS と CodePipeline を使用して、ソースイメージのリポジトリに変更があるたびにパイプラインを介してコンテナベースのアプリケーションのデプロイを継続的に実行できるようにするため、リビジョンの実行を自動化できます。詳細については、「チュートリアル: CodePipeline を使用した継続的なデプロイ」を参照してください。
Elastic Beanstalk で CodePipeline を使用してクラウドにウェブアプリケーションを継続的にデリバリーする
Elastic Beanstalk はウェブサーバーでウェブアプリケーションとサービスをデプロイできるようにするコンピューティングサービスです。Elastic Beanstalk と CodePipeline を使用してアプリケーション環境でウェブアプリケーションを継続的にデプロイするAWS CodeStar を使用して Elastic Beanstalk デプロイアクションでパイプラインを作成することもできます。
AWS Lambda で CodePipeline を使用して Lambda ベースアプリケーションとサーバーレスアプリケーションを継続的にデリバリーする
「サーバーレスアプリケーションのデプロイ」で説明されているように、CodePipeline で AWS Lambda を使用して AWS Lambda 関数を呼び出すことができます。AWS Lambda と AWS CodeStar を使用して、サーバーレスアプリケーションをデプロイするためのパイプラインを作成することもできます。
AWS CloudFormation テンプレートで CodePipeline を使用してクラウドに継続的にデリバリーする
CodePipeline を AWS CloudFormation とともに使用して、継続的な配信と自動化を行うことができます。詳細については、「CodePipeline を使用した継続的配信」を参照してください。AWS CloudFormation は、AWS CodeStar で作成されたパイプラインのテンプレート作成にも使用されます。