CodePipeline
ユーザーガイド (API バージョン 2015-07-09)

チュートリアル: シンプルなパイプラインを作成する (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: Amazon EC2 Linux インスタンスの作成および CodeDeploy エージェントのインストール

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

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

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

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

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

  4. [このロールを使用するサービスを選択] で、[EC2]、[次の手順: アクセス許可] を選択します。

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

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

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

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

  2. コンソールダッシュボードで、[インスタンスを起動する] を選択します。

  3. [ステップ 1: Amazon Machine Image (AMI) を選択する] で、[Amazon Linux 2 AMI (HVM)] を見つけ、[選択] を選択します。(この AMI は "Free tier eligible" とラベル付けされており、リストの先頭にあります)。

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

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

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

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

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

  6. [高度な詳細] を展開して、[ユーザーデータ] ボックスに次のように入力します。

    #!/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 コマンド) については、「Amazon Linux または RHEL 用の CodeDeploy エージェントのインストールまたは再インストール」の CodeDeploy エージェントのリファレンスを参照してください。

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

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

  8. [タグの追加] を選択します。[キー] に「MyCodePipelineDemo」と入力し、[次の手順: セキュリティグループの設定] を選択します。後で、このインスタンスにサンプルアプリケーションをデプロイする CodeDeploy アプリケーションを作成します。CodeDeploy は、インスタンスにアタッチされたタグに基づいて、デプロイするインスタンスを選択します。

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

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

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

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

  10. [Review and Launch] を選択します。

  11. [インスタンス起動の確認] ページで [起動] を選択し、キーペアの入力を求められたら、以下のいずれかの操作を行います。

    • Amazon EC2 インスタンスで使用するキーペアがすでにある場合は、[既存のキーペアを選択] を選択してから、キーペアを選択します。

    • まだキーペアを作成していない場合は、[新しいキーペアの作成] を選択し、キーペアの名前を入力してから、[キーペアのダウンロード] を選択します。このタイミングでのみ、プライベートキーファイルを保存できます。必ずそのキーファイルをダウンロードしてください。プライベートキーファイルを安全な場所に保存します。インスタンスの起動時に、キーペアの名前を指定する必要があります。インスタンスに接続するたびに、対応するプライベートキーを提供する必要があります。詳細については、「Amazon EC2 のキーペア」を参照してください。

    警告

    [キーペアなしで続行] を選択した場合、CodeDeploy エージェントの問題をトラブルシューティングする必要がある場合に、SSH を使用してインスタンスに接続することはできません。

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

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

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

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

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

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

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

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

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

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

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

  4. [このロールを使用するサービスを選択] で [CodeDeploy] を選択します。[ユースケースの選択] で、[CodeDeploy] を選択します。

  5. [次へ: アクセス許可]、[次へ: タグ]、[次へ: レビュー] の順に選択します。

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

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

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

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

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

  4. [Custom application (カスタムアプリケーション)] を選択したままにします。[アプリケーション名] に、「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. [ステップ 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 リポジトリからコードをダウンロードし、Amazon EC2 インスタンスへの CodeDeploy デプロイを作成します。CodePipeline サンプルがウェブページを CodeDeploy デプロイの Amazon EC2 インスタンスにデプロイしている間、進行状況と成功/失敗メッセージを表示できます。

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

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

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

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

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

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

  3. リストで、アプリケーションを選択します。[デプロイグループ] タブの [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/my-demo-repo (For Windows) cd c:\temp\my-demo-repo
  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 リポジトリにプッシュされて更新されたサンプルウェブページアプリケーション。

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

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

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

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

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

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

ステップ 7: 詳細情報

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