チュートリアル: シンプルなパイプラインを作成する (CodeCommit リポジトリ) - AWS CodePipeline

チュートリアル: シンプルなパイプラインを作成する (CodeCommit リポジトリ)

このチュートリアルでは、CodePipeline を使用して、CodeCommit リポジトリに保持されているコードを単一の Amazon EC2 インスタンスにデプロイします。CodeCommit リポジトリに変更をプッシュすると、パイプラインがトリガーされます。パイプラインは、デプロイサービスとして CodeDeploy を使用して Amazon EC2 インスタンスに変更をデプロイします。

パイプラインには 2 つのステージがあります。

  • CodeCommit ソースアクションのソースステージ ([ソース])。

  • CodeDeploy デプロイアクションのデプロイステージ ([デプロイ])。

AWS CodePipeline の使用を開始する最も簡単な方法は、CodePipeline コンソールで [パイプラインの作成] ウィザードを使用することです。

注記

開始する前に、CodeCommit で Git クライアントを使用するようにセットアップされていることを確認します。手順については、「CodeCommit のセットアップ」を参照してください。

ステップ 1: CodeCommit レポジトリを作成する

まず、CodeCommit でリポジトリを作成します。パイプラインを実行すると、このリポジトリからソースコードが取得されます。また、CodeCommit リポジトリにプッシュする前にコードを管理および更新するローカルリポジトリも作成します。

CodeCommit リポジトリを作成するには

  1. https://console.aws.amazon.com/codecommit/ にある CodeCommit コンソールを開きます。

  2. AWS リージョンセレクタで、リポジトリとパイプラインを作成するリージョンを選択します。詳細については、「AWS のリージョンとエンドポイント」を参照してください。

  3. [リポジトリ] ページで、[リポジトリの作成] を選択します。

  4. [リポジトリの作成] ページの [リポジトリ名] に、新しいリポジトリの名前を入力します (例: MyDemoRepo)。

  5. [作成] を選択します。

注記

このチュートリアルの残りのステップでは、CodeCommit リポジトリの名前として MyDemoRepo を使用します。別の名前を選択した場合は、このチュートリアル全体でそれを使用してください。

ローカルリポジトリをセットアップするには

このステップでは、ローカルリポジトリをセットアップしてリモート CodeCommit リポジトリに接続します。

  1. コンソールで新しいリポジトリを開き、ページの右上にある [URL のクローンを作成] を選択してから、[SSH のクローンを作成] を選択します。Git リポジトリのクローンを作成するアドレスがクリップボードにコピーされます。

  2. ターミナルまたはコマンドラインで、ローカルリポジトリを保存するローカルディレクトリに移動します。このチュートリアルでは、/tmp を使用します。

  3. 次のコマンドを実行してリポジトリをクローンし、SSH アドレスを前のステップでコピーしたものに置き換えます。このコマンドは、MyDemoRepo という名前のディレクトリを作成します。サンプルアプリケーションをこのディレクトリにコピーします。

    git clone ssh://git-codecommit.us-west-2.amazonaws.com/v1/repos/MyDemoRepo

ステップ 2: CodeCommit リポジトリにサンプルコードを追加する

このステップでは、CodeDeploy サンプルウォークスルーで作成したサンプルアプリケーションのコードをダウンロードし、これを CodeCommit リポジトリに追加します。

  1. 次のファイルをダウンロードします。SampleApp_Linux.zip

  2. SampleApp_Linux.zip から先ほど作成したローカルディレクトリ (例: /tmp/MyDemoRepoc:\temp\MyDemoRepo) にファイルを解凍します。

    それらのファイルはローカルリポジトリに直接配置してください。SampleApp_Linux フォルダーは含めないでください。たとえば、ローカル Linux, macOS, or Unix マシンでは、ディレクトリとファイル階層は以下のようになります。

    /tmp └-- MyDemoRepo │-- appspec.yml │-- index.html │-- LICENSE.txt └-- scripts │-- install_dependencies │-- start_server └-- stop_server
  3. ディレクトリをローカルリポジトリに変更する:

    (For Linux, macOS, or Unix) cd /tmp/MyDemoRepo (For Windows) cd c:\temp\MyDemoRepo
  4. 以下のコマンドを実行して、すべてのファイルを一度にステージングします。

    git add -A
  5. 以下のコマンドを実行して、コミットメッセージによりファイルをコミットします。

    git commit -m "Add sample application files"
  6. 以下のコマンドを実行して、ローカルリポジトリから CodeCommit リポジトリにファイルをプッシュします。

    git push
  7. ダウンロードしてローカルリポジトリに追加したファイルは、CodeCommit MyDemoRepo リポジトリの master ブランチに追加され、パイプラインに追加可能になります。

ステップ 3: EC2 Linux インスタンスを作成して CodeDeploy エージェントをインストールする

このステップでは、サンプルアプリケーションをデプロイする先の EC2 インスタンスを作成します。このプロセスの一環として、CodeDeploy エージェントを EC2 インスタンスにインストールします。CodeDeploy エージェントは、CodeDeploy デプロイメントでインスタンスを使用できるようにするソフトウェアパッケージです。また、IAM ロールをインスタンス (インスタンスロールと呼ばれる) にアタッチして、CodeDeploy エージェントがアプリケーションのデプロイに使用するファイルをフェッチできるようにします。

インスタンスロールを作成するには

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. コンソールダッシュボードで [ロール] を選択します。

  3. [ロールの作成] を選択します。

  4. [信頼されたエンティティの種類を選択] で、[AWS のサービス] を選択します。[ユースケースの選択] で [EC2] を選択し、[次の手順: アクセス許可] を選択します。

  5. [AmazonEC2RoleforAWSCodeDeploy] という名前のポリシーを検索して選択し、[次へ: タグ] を選択します。

  6. [次へ: レビュー] を選択します。ロールの名前を入力します (例: EC2InstanceRole)。

    注記

    次のステップのロール名をメモしておきます。このロールは、インスタンスの作成時に選択します。

    [Create role (ロールの作成)] を選択します。

インスタンスを起動するには

  1. https://console.aws.amazon.com/ec2/ で Amazon EC2 コンソールを開きます。

  2. コンソールダッシュボードから [インスタンスの作成] を選択し、ポップアップに表示されるオプションから [インスタンスの作成] を選択します。

  3. [ステップ 1: Amazon マシンイメージ (AMI)] で、[Amazon Linux 2 AMI (HVM), SSD Volume Type] を見つけ、[選択] を選択します。(この AMI は "Free tier eligible" とラベル付けされており、リストの先頭にあります)。

  4. [ステップ 2: インスタンスタイプの選択] ページで、インスタンスのハードウェア設定として無料利用枠対象の t2.micro タイプを選択し、[次の手順: インスタンスの詳細の設定] を選択します。

  5. [ステップ 3: インスタンスの詳細の設定] ページで、次の操作を行います。

    • [インスタンス数] に「1」と入力します。

    • [自動割り当てパブリック IP] で、[Enable (有効化)] を選択します。

    • [IAM ロール] で、前の手順で作成した IAM ロール (EC2InstanceRole など) を選択します。

    • [高度な詳細] を展開して、[ユーザーデータ] フィールドに次のように入力します。

      #!/bin/bash yum -y update yum install -y ruby yum install -y aws-cli cd /home/ec2-user aws s3 cp s3://aws-codedeploy-us-east-2/latest/install . --region us-east-2 chmod +x ./install ./install auto
      注記

      これらのコマンドを昇格された特権 (sudo コマンド) で実行する例については、AWS CodeDeploy ユーザーガイドの「Amazon Linux または RHEL 用の CodeDeploy エージェントのインストールまたは再インストール」で CodeDeploy エージェントのリファレンスを参照してください。

      このコードは、作成時にインスタンスに CodeDeploy エージェントをインストールします。

    • [ステップ 3: インスタンスの詳細の設定] ページの残りの項目はそのままにします。[次の手順: ストレージの追加] を選択します。

  6. [Step 4: Add Storage (ステップ 4: ストレージの追加)] ページは変更せず、[Next: Add Tags (次の手順: タグの追加)] を選択します。

  7. [Add Tag] を選択します。[キー] に「Name」と入力し、[] に「MyCodePipelineDemo」と入力します。[Next: Configure Security Group] を選択します。後で、このインスタンスにサンプルアプリケーションをデプロイする CodeDeploy アプリケーションを作成します。CodeDeploy は、インスタンスにアタッチされたタグに基づいて、デプロイするインスタンスを選択します。

  8. [ステップ 6: セキュリティグループの設定] ページで、以下の操作を行います。

    • [セキュリティグループの割り当て] の横にある [新規セキュリティグループを作成] を選択します。

    • [SSH] の行で、[ソース] の [マイ IP] を選択します。

    • [ルールの追加]、[HTTP] の順に選択し、[ソース] の [マイ IP] を選択します。

  9. [Review and Launch (確認と起動)] を選択します。

  10. [Review Instance Launch] ページで、[Launch] を選択します。キーペアの入力を求められたら、[Proceed without a key pair (キーペアなしで続行)] を選択します。

    注記

    このチュートリアルでは、キーペアを使用せずに続行できます。SSH を使用してインスタンスに接続するには、キーペアを作成または使用します。

    準備ができたら、確認チェックボックスをオンにし、[インスタンスの起動] を選択します。

  11. [View Instances] を選択して確認ページを閉じ、コンソールに戻ります。

  12. [インスタンス] ページで、起動のステータスを表示できます。インスタンスを起動した直後のステータスは pending です。インスタンスを起動した後は、状態が running に変わり、パブリック DNS 名を受け取ります([パブリック DNS] 列が表示されていない場合は、[表示/非表示] アイコンを選択して、[パブリック DNS] を選択します)。

  13. インスタンスに接続可能になるまでには、数分かかることがあります。[ステータスチェック] 列の情報を参照して、インスタンスがステータスチェックに合格したかどうかを確認します。

ステップ 4: CodeDeploy でアプリケーションを作成する

CodeDeploy では、アプリケーションは、デプロイするソフトウェアアプリケーションを含むリソースです。後で、このアプリケーションを CodePipeline で使用して、Amazon EC2 インスタンスへのサンプルアプリケーションのデプロイを自動化します。

最初に、CodeDeploy がデプロイを実行できるようにするロールを作成します。次に、CodeDeploy アプリケーションを作成します。

CodeDeploy サービスロールを作成する

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. コンソールダッシュボードで [ロール] を選択します。

  3. [ロールの作成] を選択します。

  4. [信頼されたエンティティの種類を選択] で、[AWS のサービス] を選択します。[ユースケースの選択] で [CodeDeploy] を選択し、[次の手順: アクセス許可] を選択します。AWSCodeDeployRole 管理ポリシーはロールにアタッチ済みです。

  5. [次の手順: タグ]、[次の手順: 確認] の順に選択します。

  6. ロールの名前 (例: CodeDeployRole) を入力し、[ロールの作成] を選択します。

CodeDeploy でアプリケーションを作成するには

  1. CodeDeploy コンソール (https://console.aws.amazon.com/codedeploy) を開きます。

  2. [アプリケーション] ページが表示されない場合は、AWS CodeDeploy メニューで [アプリケーション] を選択します。

  3. [Create application] を選択します。

  4. [アプリケーション名] に、「MyDemoApplication」と入力します。

  5. [コンピューティングプラットフォーム] で [EC2/オンプレミス] を選択します。

  6. [Create application] を選択します。

CodeDeploy でデプロイグループを作成するには

デプロイグループは、デプロイ先のインスタンスやデプロイの速度など、デプロイ関連の設定を定義するリソースです。

  1. アプリケーションが表示されるページで、[デプロイグループの作成] を選択します。

  2. [デプロイグループ名] に「MyDemoDeploymentGroup」と入力します。

  3. [サービスロール] で、先ほど作成したサービスロール (例: CodeDeployRole) を選択します。

  4. [デプロイタイプ] で、[インプレース] を選択します。

  5. [環境設定] で、[Amazon EC2 インスタンス] を選択します。[キー] フィールドに、インスタンスのタグ付けに使用した名前 (例: MyCodePipelineDemo) を入力します。

  6. [デプロイ設定] で、[CodeDeployDefault.OneAtaTime] を選択します。

  7. [Load Balancer (ロードバランサー)] で、[Enable load balancing (ロードバランシングの有効化)] をオフにします。この例では、ロードバランサーを設定したり、ターゲットグループを選択したりする必要はありません。

  8. [Advanced (詳細)] セクションを展開します。[警報] で、アラームが表示されている場合は、[アラーム設定を無視する] を選択します。

  9. [Create deployment group] を選択します。

ステップ 5: CodePipeline で最初のパイプラインを作成する

これで、最初のパイプラインを作成および実行する準備ができました。このステップでは、コードが CodeCommit リポジトリにプッシュされたときに自動的に実行されるパイプラインを作成します。

CodePipeline パイプラインを作成するには

  1. AWS マネジメントコンソール にサインインし、CodePipeline コンソール (http://console.aws.amazon.com/codesuite/codepipeline/home) を開きます。

    CodePipeline コンソール(https://console.aws.amazon.com/codepipeline/)を開きます。

  2. [パイプラインの作成] を選択します。

  3. [ステップ 1: パイプラインの設定の選択] の [パイプライン名] で、MyFirstPipeline と入力します。

  4. [サービスロール] で、[新しいサービスロール] を選択して、CodePipeline に IAM での新しいサービスロールの作成を許可します。

  5. [詳細設定] をデフォルト設定のままにし、[次へ] を選択します。

  6. [Step 2: Add source stage (ステップ 2: ソースステージの追加)] の [ソースプロバイダ] で、[AWS CodeCommit] を選択します。[リポジトリ名] で、「ステップ 1: CodeCommit レポジトリを作成する」で作成した CodeCommit リポジトリの名前を選択します。[ブランチ名] で、[master] を選択し、[次のステップ] を選択します。

    
            CodePipeline パイプラインウィザードの [ステップ 2: ソース] ページ

    リポジトリ名とブランチを選択した後、このパイプラインのために作成される Amazon CloudWatch Events ルールを示すメッセージが表示されます。

    [Change detection options (変更検出オプション)] で、デフォルト値のままにします。これにより、CodePipeline は Amazon CloudWatch Events を使用して、ソースリポジトリの変更を検出できます。

    [次へ] を選択します。

  7. [Step 3: Add build stage (ステップ 3: ビルドステージの追加)] で、[Skip build stage (ビルドステージのスキップ)] を選択し、もう一度 [スキップ] を選択して警告メッセージを受け入れます。[Next (次へ)] を選択します。

    注記

    このチュートリアルでは、ビルドサービスを必要としないコードをデプロイするため、このステップは省略できます。ただし、インスタンスにデプロイする前にソースコードをビルドする必要がある場合は、このステップで CodeBuild を設定できます。

  8. [Step 4: Add deploy stage (ステップ 4: デプロイステージの追加)] の [デプロイプロバイダ] で、[AWS CodeDeploy] を選択します。[アプリケーション名] に、「MyDemoApplication」を選択します。[デプロイグループ] で、[MyDemoDeploymentGroup]、[次のステップ] の順に選択します。

    
            CodePipeline パイプラインウィザードの [​ステップ 4: デプロイ] ページ
  9. [ステップ 5: 確認] で情報を確認し、[パイプラインの作成] を選択します。

  10. パイプラインは、作成後に実行を開始します。CodeCommit リポジトリからコードをダウンロードし、EC2 インスタンスへの CodeDeploy デプロイを作成します。CodePipeline サンプルがウェブページを CodeDeploy デプロイの Amazon EC2 インスタンスにデプロイしている間、進行状況と成功/失敗メッセージを表示できます。

    
            CodePipeline コンソールでの実行を開始したパイプラインのビュー

おめでとうございます。 シンプルなパイプラインが CodePipeline に作成されました。

次に、結果を確認します。

パイプラインが正常に実行されたことを確認するには

  1. パイプラインの最初の進行状況を表示します。各ステージのステータスは、[まだ実行はありません] から [進行中] に変わり、その後、[Succeeded (成功)] または [Failed (失敗)] のいずれかに変わります。パイプラインの最初の実行は数分で完了します。

  2. パイプラインのステータスが [Succeeded (成功)] と表示されたら、[Deploy (デプロイ)] ステージのステータス領域で [AWS CodeDeploy] を選択します。これにより、CodeDeploy コンソールが開きます。[成功] が表示されない場合は、「CodePipeline のトラブルシューティング」を参照してください。

  3. [Deployments (デプロイ)] タブで、デプロイ ID を選択します。デプロイのページの [Deployment lifecycle events (デプロイライフサイクルイベント)] で、インスタンス ID を選択します。これにより、EC2 コンソールが開きます。

  4. [説明] タブの [パブリック DNS] でアドレス (例: ec2-192-0-2-1.us-west-2.compute.amazonaws.com) をコピーし、ウェブブラウザのアドレスバーに貼り付けます。

    これは、ダウンロードして CodeCommit リポジトリにプッシュしたサンプルアプリケーションです。

    
            CodeCommit リポジトリにプッシュされたサンプルウェブページアプリケーション。

ステージ、アクション、パイプラインの仕組みの詳細については、「CodePipeline の概念」を参照してください。

ステップ 6: CodeCommit リポジトリ内のコードを変更する

CodeCommit リポジトリのコードが変更されるとパイプラインが実行されるように設定されています。このステップでは、CodeCommit リポジトリのサンプル CodeDeploy アプリケーションの一部である HTML ファイルを変更します。これらの変更をプッシュすると、パイプラインが再度実行され、変更内容は先ほどアクセスしたウェブアドレスに表示されます。

  1. ディレクトリをローカルリポジトリに変更する:

    (For Linux, macOS, or Unix) cd /tmp/MyDemoRepo (For Windows) cd c:\temp\MyDemoRepo
  2. テキストエディタを使用して、index.html ファイルを変更します。

    (For Linux or Unix)gedit index.html (For OS X)open –e index.html (For Windows)notepad index.html
  3. index.html ファイルのコンテンツを変更して、背景色およびウェブページのテキストの一部を変更してから、ファイルを保存します。

    <!DOCTYPE html> <html> <head> <title>Updated Sample Deployment</title> <style> body { color: #000000; background-color: #CCFFCC; font-family: Arial, sans-serif; font-size:14px; } h1 { font-size: 250%; font-weight: normal; margin-bottom: 0; } h2 { font-size: 175%; font-weight: normal; margin-bottom: 0; } </style> </head> <body> <div align="center"><h1>Updated Sample Deployment</h1></div> <div align="center"><h2>This application was updated using CodePipeline, CodeCommit, and CodeDeploy.</h2></div> <div align="center"> <p>Learn more:</p> <p><a href="https://docs.aws.amazon.com/codepipeline/latest/userguide/">CodePipeline User Guide</a></p> <p><a href="https://docs.aws.amazon.com/codecommit/latest/userguide/">CodeCommit User Guide</a></p> <p><a href="https://docs.aws.amazon.com/codedeploy/latest/userguide/">CodeDeploy User Guide</a></p> </div> </body> </html>
  4. 以下のコマンドを一度に 1 つずつ実行することで、変更をコミットし、CodeCommit リポジトリにプッシュします。

    git commit -am "Updated sample application files"
    git push

パイプラインが正常に実行されたことを確認するには

  1. パイプラインの最初の進行状況を表示します。各ステージのステータスは、[まだ実行はありません] から [進行中] に変わり、その後、[成功] または [失敗] のいずれかに変わります。パイプラインの実行は数分以内に完了します。

  2. アクションステータスが [成功] と表示されたら、ブラウザで先ほどアクセスしたデモページを更新します。

    更新されたウェブページが表示されます。

    
            CodeCommit リポジトリにプッシュされて更新されたサンプルウェブページアプリケーション。

ステップ 7: リソースをクリーンアップする

このガイドの他のチュートリアルでは、このチュートリアルで作成したリソースの一部を使用できます。たとえば、CodeDeploy アプリケーションおよびデプロイメントは再利用できます。ただし、これらのチュートリアルの完了後、これらのリソースに対する継続利用料金が発生しないよう、使用したパイプラインおよびリソースを削除する必要があります。まず、パイプラインを削除し、続いて、CodeDeploy アプリケーションおよび関連付けられた Amazon EC2 インスタンス、最後に CodeCommit リポジトリを削除します。

このチュートリアルで使用されているリソースをクリーンアップするには

  1. CodePipeline リソースをクリーンアップするには、「AWS CodePipeline でパイプラインを削除する」の手順に従います。

  2. CodeDeploy リソースをクリーンアップするには、「チュートリアルのデプロイリソースのクリーンアップ」の手順に従います。

  3. CodeCommit リポジトリを削除するには、「CodeCommit リポジトリの削除」の手順に従います。

ステップ 8: 詳細情報

CodePipeline の動作の詳細について説明します。