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] をプラットフォームとして選択し、[単一インスタンス] を環境タイプとして選択します。インスタンスにリモートログインする場合は、キーペアを選択します。それ以外の場合は、残りのオプションはデフォルト値のままにしておき、継続的なデプロイパイプラインの環境を作成します。
c. これで Elastic Beanstalk は、アプリケーションをデプロイするサンプル環境の作成を開始します。Amazon EC2 インスタンス、セキュリティグループ、Auto Scaling グループ、Amazon S3 バケット、Amazon CloudWatch アラーム、および、アプリケーションのドメイン名を作成します。
注意: この操作が完了するまでに数分間かかります。
このステップでは、サンプルアプリのコードを取得して、コードをホストするソースを選択します。パイプラインは、ソースからコードを取得し、アクションを実行します。
ソースとして、GitHub リポジトリ、Amazon S3 バケット、または AWS CodeCommit リポジトリの 3 つのオプションを使用できます。お好みのオプションを選択し、次のステップに従います。
このステップでは、ソースとデプロイの 2 つのアクションを使用するシンプルなパイプラインを作成して、設定します。ソースリポジトリおよびデプロイ環境の場所を使用して、CodePipeline を提供します。
a.ここをクリックして AWS CodePipeline コンソールを開きます。
- [Welcome] ページで、[パイプラインの作成] をクリックします。
- AWS CodePipeline を初めて使用する場合は、[Welcome] の代わりに紹介ページが表示されます。[今すぐ始める] をクリックします。
b. [ステップ 1: 名前] ページ。
- [パイプライン名:] パイプライン名 DemoPipeline を入力します。
- [次のステップ] をクリックします。
注意: バケットを作成したら、その名前を変更することはできません。
c.[ステップ 2: ソース] ページで、選択したソースの場所を選択して、次のステップに従います。
d.真の継続的なデプロイパイプラインには、コードをコンパイルしてユニットをテストするビルドステージが必要です。CodePipeline を使用して、任意のビルドプロバイダをパイプラインに接続できます。ただし、このチュートリアルでは、ビルドステージはスキップします。
- [ステップ 3: ビルド] ページで、[ビルドなし] を選択します。
- [次のステップ] をクリックします。
e.[ステップ 4: ベータ] ページ。
- デプロイプロバイダ: [AWS Elastic Beanstalk] をクリックします。
- アプリケーション名: [最初の Elastic Beanstalk アプリケーション]。
- 環境名: [Default-Environment (デフォルト環境)] をクリックします。
- [次のステップ] をクリックします。
注意: "Beta" は、パイプラインのこのステージで、単にデフォルトで付けられる名前であり、"Source" は、パイプラインの最初のステージに付けられる名前です。
f.[ステップ 5: サービスロール] ページ。
- サービスロール: [ロールの作成] をクリックします。
- 作成される AWS-CodePipeline-Service ロールを定義する IAM コンソールページにリダイレクトされます。[Allow (許可)] をクリックします。
- ロールを作成したら、ロール名に [AWS-CodePipeline-Service] が表示されている [ステップ 5: サービスロール] ページに戻ります。[次のステップ] をクリックします。
注意: サービスロールは、AWS CodePipeline でのパイプラインの初回作成時にのみ作成する必要があります。サービスロールがすでに作成されている場合は、ロールのドロップダウンリストから選択できます。ドロップダウンリストには、アカウントに関連付けられているすべての IAM サービスロールが表示されるため、デフォルトと異なる名前を選択する場合は、その名前が AWS CodePipeline のサービスロールとして認識可能であることを確認してください。
このステップでは、パイプラインを起動します。パイプラインが作成されると、自動的に実行されます。最初に、ソースの場所でサンプルアプリコードが検出されると、ファイルをまとめて、定義した 2 番目のステージに移動します。このステージでは、コードをホストする EC2 インスタンスを含む Elastic Beanstalk にコードが渡されます。Elastic Beanstalk は、EC2 インスタンスへのコードのデプロイを処理します。
a.[ステップ 6: レビュー] ページで情報を確認し、[パイプラインの作成] をクリックします。
b.パイプラインが作成されると、パイプラインのステータスページが表示され、パイプラインの実行が自動的に開始されます。パイプラインが各アクションを実行する間、進行状況と成功/失敗メッセージを表示できます。
パイプラインが正常に実行されていることを確認するために、各ステージに進む間、パイプラインの進行状況をモニタリングします。各ステージのステータスは、[まだ実行はありません] から [In Progress] に変わり、その後、[Succeeded] または [Failed] のいずれかに変わります。パイプラインの最初の実行は数分で完了します。
c.ベータステージのステータス領域で、[AWS Elastic Beanstalk] をクリックします。
d.デプロイの詳細とともに、AWS Elastic Beanstalk コンソールが開きます。
- 以前に作成した環境をクリックして、[Default-Environment] を呼び出します。
e.ページの右上隅に表示される URL をクリックして、デプロイしたサンプルウェブサイトを表示します。
この手順では、サンプルコードを修正してその変更をリポジトリにコミットします。CodePipeline は更新されたサンプルコードを検出し、Elastic Beanstalk を使用して、EC2 インスタンスへのデプロイを自動的に開始します。
デプロイしたサンプルウェブページは、コードのデプロイを自動化するサービス、AWS CodeDeploy を参照することに注意してください。CodePipeline では、Elastic Beanstalk の代わりに CodeDeploy がデプロイアクションに使用されます。正しく Elastic Beanstalk を使用してサンプルをデプロイしたことを示すために、サンプルコードを更新します。
d.CodePipeline コンソールのパイプラインに戻ります。数分で、ソースの表示が、ソースリポジトリに加えた変更をパイプラインが検出したことを示す青色に変わります。これが行われると、更新されたコードが Elastic Beanstalk に自動的に移動されます。
- パイプラインのステータスが [成功] と表示されたら、ベータステージのステータス領域で、[AWS Elastic Beanstalk] をクリックします。
e.デプロイの詳細とともに、AWS Elastic Beanstalk コンソールが開きます。以前に作成した環境を選択して、[Default-Environment] を呼び出します。
f.ページの右上隅に表示される URL をクリックして、サンプルウェブサイトをもう一度表示します。 テキストは継続的なデプロイパイプラインによって自動的に更新されました。
以降に料金が発生しないようにするため、このチュートリアルで起動した、パイプライン、Elastic Beanstalk アプリケーション、コードをホストするために設定したソースを含む、すべてのリソースを削除します。
a.最初に、パイプラインを削除します。
- パイプラインビューで、[編集] をクリックします。
- [削除] をクリックします。
- パイプラインの名前を入力し、[削除] をクリックします。
b.次に、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 ステージのパイプラインを迅速に立ち上げます。
- 詳細については、継続的配信を参照してください。