AWS CodePipeline を使用する
このチュートリアルでは、自動化されたソフトウェアのリリースパイプラインを作成して、ライブサンプルアプリケーションをデプロイする方法について説明します。AWS CodePipeline を使用して、コード変更があるたびに、コードを構築、テスト、デプロイする、パイプラインを作成します。サンプルアプリコードのソースの場所として、GitHub アカウント、Amazon Simple Storage Service (S3) バケット、または AWS CodeCommit リポジトリを使用します。サンプルアプリのデプロイターゲットとして、AWS Elastic Beanstalk も使用します。完了したパイプラインは、サンプルアプリを含むソースリポジトリに対して行われた変更を検出し、ライブサンプルアプリを自動的に更新します。
継続的デプロイにより、リビジョンは開発者からの明示的な承認なしで自動的に運用環境にデプロイされるため、ソフトウェアのリリースプロセス全体が自動化されます。
このチュートリアルはすべて無料利用枠の範囲で実行できます。
AWS リソース管理を始めましょう
コンソールにサインイン継続的なデプロイパイプラインには、サンプルコードをデプロイする仮想サーバー、または Amazon EC2 インスタンスを含むターゲット環境が必要です。パイプラインを作成する前に、この環境を準備します。
a. このチュートリアルのための EC2 インスタンスのセットアップおよび設定を単純化するためには、AWS Elastic Beanstalk を使用して、サンプル環境を立ち上げます。Elastic Beanstalk を使用すると、独自に仮想サーバーを起動、設定、または操作する必要なく、ウェブアプリケーションを簡単にホストできます。インフラストラクチャ (例: 仮想サーバー、ロードバランサーなど) が自動的にプロビジョニングおよび運用され、アプリケーションスタック (例: OS、言語およびフレームワーク、ウェブおよびアプリケーションサーバーなど) が提供されます。
b. ドロップダウンメニューから [PHP] を選択して、[今すぐ起動] をクリックします。
注意: 以前に Elastic Beanstalk アプリケーションを作成した場合は、右上隅の [新しいアプリケーションの作成] をクリックします。アプリケーションに名前を付けて、新しい [ウェブサーバー環境] を作成します。[PHP] をプラットフォームとして選択し、[単一インスタンス] を環境タイプとして選択します。インスタンスにリモートログインする場合は、キーペアを選択します。それ以外の場合は、残りのオプションはデフォルト値のままにしておき、継続的なデプロイパイプラインの環境を作成します。
このステップでは、サンプルアプリのコードを取得して、コードをホストするソースを選択します。パイプラインは、ソースからコードを取得し、アクションを実行します。
ソースとして、GitHub リポジトリ、Amazon S3 バケット、または AWS CodeCommit リポジトリの 3 つのオプションを使用できます。お好みのオプションを選択し、次のステップに従います。
このステップでは、ソースとデプロイの 2 つのアクションを使用するシンプルなパイプラインを作成して、設定します。ソースリポジトリおよびデプロイ環境の場所を使用して、CodePipeline を提供します。
a.ここをクリックして AWS CodePipeline コンソールを開きます。
- [Welcome] ページで、[パイプラインの作成] をクリックします。
- AWS CodePipeline を初めて使用する場合は、[Welcome] の代わりに紹介ページが表示されます。[今すぐ始める] をクリックします。
c.[ステップ 2: ソース] ページで、選択したソースの場所を選択して、次のステップに従います。
f.[ステップ 5: サービスロール] ページ。
- サービスロール: [ロールの作成] をクリックします。
- 作成される AWS-CodePipeline-Service ロールを定義する IAM コンソールページにリダイレクトされます。[Allow (許可)] をクリックします。
- ロールを作成したら、ロール名に [AWS-CodePipeline-Service] が表示されている [ステップ 5: サービスロール] ページに戻ります。[次のステップ] をクリックします。
注意: サービスロールは、AWS CodePipeline でのパイプラインの初回作成時にのみ作成する必要があります。サービスロールがすでに作成されている場合は、ロールのドロップダウンリストから選択できます。ドロップダウンリストには、アカウントに関連付けられているすべての IAM サービスロールが表示されるため、デフォルトと異なる名前を選択する場合は、その名前が AWS CodePipeline のサービスロールとして認識可能であることを確認してください。
このステップでは、パイプラインを起動します。パイプラインが作成されると、自動的に実行されます。最初に、ソースの場所でサンプルアプリコードが検出されると、ファイルをまとめて、定義した 2 番目のステージに移動します。このステージでは、コードをホストする EC2 インスタンスを含む Elastic Beanstalk にコードが渡されます。Elastic Beanstalk は、EC2 インスタンスへのコードのデプロイを処理します。
この手順では、サンプルコードを修正してその変更をリポジトリにコミットします。CodePipeline は更新されたサンプルコードを検出し、Elastic Beanstalk を使用して、EC2 インスタンスへのデプロイを自動的に開始します。
デプロイしたサンプルウェブページは、コードのデプロイを自動化するサービス、AWS CodeDeploy を参照することに注意してください。CodePipeline では、Elastic Beanstalk の代わりに CodeDeploy がデプロイアクションに使用されます。正しく Elastic Beanstalk を使用してサンプルをデプロイしたことを示すために、サンプルコードを更新します。
以降に料金が発生しないようにするため、このチュートリアルで起動した、パイプライン、Elastic Beanstalk アプリケーション、コードをホストするために設定したソースを含む、すべてのリソースを削除します。
AWS CodePipeline を使用して、自動化されたソフトウェアのリリースパイプラインが正常に作成されました。 CodePipeline を使用して、アプリケーションコードのソースの場所として GitHub、Amazon S3、AWS CodeCommit を使用して、AWS Elastic Beanstalk によって管理される Amazon EC2 インスタンスにコードをデプロイするパイプラインを作成しました。パイプラインは、コードに変更があるごとに自動的にコードをデプロイします。継続的デプロイの実践に一歩近づきました。
AWS CodePipeline を使用したシンプルなパイプラインの作成方法の学習を完了しました。詳細については、以下のリソースを参照してください。
- このガイドに従って、より高度な 4 ステージのパイプラインを作成します。このパイプラインは、ソースに GitHub リポジトリを使用し、プロジェクトをビルドしてテストする Jenkins ビルトサーバー、およびビルドしたコードをステージングサーバーにデプロイする AWS CodeDeploy アプリケーションを使用します。
- Pipeline Starter Kit を使用して、Jenkins ビルドサーバーで、4 ステージのパイプラインを迅速に立ち上げます。
- 詳細については、継続的配信を参照してください。