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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

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

重要

パイプラインの作成の一環として、お客様が提供する S3 アーティファクトバケットがアーティファクト CodePipeline に によって使用されます。(これは S3 ソースアクションに使用されるバケットとは異なります)。S3 アーティファクトバケットがパイプラインのアカウントとは異なるアカウントにある場合は、S3 アーティファクトバケットが によって所有 AWS アカウント されており、安全で信頼できることを確認してください。

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

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

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

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

注記

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

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

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

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

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

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

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

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

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

注記

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

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

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

注記

ローカルリポジトリを設定する必要はありません。ステップ 2: サンプルコードを 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. 次に、サンプル をダウンロードし、ローカルコンピュータのフォルダまたはディレクトリに保存します。

    1. 次のいずれかを選択します 。Linux インスタンスについて、このチュートリアルのステップに従う場合は、SampleApp_Linux.zip を選択します。

      • を使用して Amazon Linux インスタンスにデプロイする場合は CodeDeploy、サンプルアプリケーションを SampleApp_Linux.zip でダウンロードします。

      • を使用して Windows Server インスタンスにデプロイする場合は CodeDeploy、サンプルアプリケーションを SampleApp_Windows.zip からダウンロードします。

      サンプルアプリケーションには、 でデプロイするための次のファイルが含まれています CodeDeploy。

      • appspec.yml – アプリケーション仕様ファイル (AppSpec ファイル) は、デプロイを管理する CodeDeploy ために が使用する YAML形式のファイルです。 AppSpec ファイルの詳細については、「 ユーザーガイド」のCodeDeploy AppSpec 「ファイルリファレンス」を参照してください。 AWS CodeDeploy

      • index.html - インデックスファイルには、デプロイされたサンプルアプリケーションのホームページが含まれています。

      • LICENSE.txt - ライセンスファイルには、サンプルアプリケーションのライセンス情報が含まれています。

      • スクリプトのファイル - サンプルアプリケーションはスクリプトを使用して、インスタンス上の場所にテキストファイルを書き込みます。複数の CodeDeploy デプロイライフサイクルイベントごとに 1 つのファイルが次のように書き込まれます。

        • (Linux サンプルのみ) scripts フォルダ - このフォルダに入っているのはシェルスクリプト install_dependenciesstart_serverstop_server です。依存関係をインストールし、自動デプロイのサンプルアプリケーションを起動および停止するために使用されます。

        • (Windows サンプルのみ) before-install.bat - BeforeInstall デプロイライフサイクルイベントのバッチスクリプトです。このサンプルの前のデプロイ中に書き込まれた古いファイルを削除し、新しいファイルを書き込む場所をインスタンス上に作成するために実行されます。

    2. 圧縮 (zip) ファイルをダウンロードします。

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

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

    /tmp └-- MyDemoRepo │-- appspec.yml │-- index.html │-- LICENSE.txt └-- scripts │-- install_dependencies │-- start_server └-- stop_server
  3. リポジトリにファイルをアップロードするには、次のいずれかの方法を使用します。

    1. CodeCommit コンソールを使用してファイルをアップロードするには:

      1. CodeCommit コンソールを開き、リポジトリリストからリポジトリを選択します。

      2. [Add file]、[Upload file] の順に選択します。

      3. [ファイルの選択] を選択し、ファイルを参照します。フォルダにファイルを追加するには、ファイルの作成 を選択してから、scripts/install_dependencies のようなファイル名でフォルダ名を入力します。ファイルの内容を新しいファイルに貼り付けます。

        ユーザー名とメールアドレスを入力して、変更をコミットします。

        [Commit changes] (変更のコミット) を選択します。

      4. ファイルごとにこの手順を繰り返します。

        リポジトリの内容は次のようになります。

        │-- appspec.yml │-- index.html │-- LICENSE.txt └-- scripts │-- install_dependencies │-- start_server └-- stop_server
    2. git コマンドを使用してファイルをアップロードするには:

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

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

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

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

        git push
  4. ダウンロードしてローカルリポジトリに追加したファイルは、リポジトリのmainブランチ CodeCommit MyDemoRepoに追加され、パイプラインに含める準備が整いました。

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

このステップでは、サンプルアプリケーションをデプロイする Amazon EC2インスタンスを作成します。このプロセスの一環として、インスタンスへの CodeDeploy エージェントのインストールと管理を許可するインスタンスロールを作成します。 CodeDeploy エージェントは、 CodeDeploy デプロイでインスタンスを使用できるようにするソフトウェアパッケージです。また、 CodeDeploy エージェントがアプリケーションをデプロイするために使用するファイルをインスタンスがフェッチし、インスタンスを によって管理できるようにするポリシーをアタッチしますSSM。

インスタンスロールを作成するには
  1. でIAMコンソールを開きますhttps://console.aws.amazon.com/iam/)。

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

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

  4. [信頼されたエンティティのタイプを選択] で、[AWS のサービス ] を選択します。ユースケースの選択 で、 を選択しますEC2ユースケースを選択する で、 を選択しますEC2[Next: Permissions] (次へ: アクセス許可) を選択します。

  5. AmazonEC2RoleforAWSCodeDeploy という名前のマネージドポリシーを検索して選択します。

  6. AmazonSSMManagedInstanceCore という名前のマネージドポリシーを検索して選択します。[Next: Tags] (次へ: タグ) を選択します。

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

    注記

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

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

インスタンスを起動するには
  1. で Amazon EC2コンソールを開きますhttps://console.aws.amazon.com/ec2/

  2. サイドナビゲーションから [インスタンス] を選択し、ページの上部から [インスタンスの起動] を選択します。

  3. [名前] に「MyCodePipelineDemo」と入力します。これにより、インスタンスにはキーName で、MyCodePipelineDemo というタグがが割り当てられます。その後、サンプル CodeDeploy アプリケーションをこのインスタンスにデプロイするアプリケーションを作成します。 CodeDeploy は、タグに基づいてデプロイするインスタンスを選択します。

  4. アプリケーションイメージと OS イメージ (Amazon マシンイメージ) で、 AWS ロゴが付いた Amazon Linux AMIオプションを見つけ、選択されていることを確認します。(これは Amazon Linux 2 AMI (HVM) とAMI呼ばれ、「無料利用枠適用」というラベルが付けられています。)

  5. [インスタンスタイプ] で、インスタンスのハードウェア構成として無料利用枠対象となる t2.micro タイプを選択します。

  6. [キーペア (ログイン)] で、キーペアを選択するか作成します。

    [キーペアなしで続行] を選択することもできます。

    注記

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

  7. [ネットワーク設定] で、次の操作を行います。

    [パブリック IP の自動割り当て] で、ステータスが [有効] になっていることを確認します。

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

    • の行SSHソースタイプ で、My IP を選択します。

    • セキュリティグループの追加 を選択し、 を選択しHTTPソースタイプ My IP を選択します。

  8. [Advanced Details] (高度な詳細) を展開します。IAM インスタンスプロファイル で、前の手順で作成したIAMロール (例: ) を選択しますEC2InstanceRole

  9. [概要] の [インスタンス数] に「1」と入力します。

  10. Launch instance (インスタンスの起動) を選択します。

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

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

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

まず、 CodeDeploy がデプロイを実行するロールを作成します。次に、 CodeDeploy アプリケーションを作成します。

CodeDeploy サービスロールを作成するには
  1. でIAMコンソールを開きますhttps://console.aws.amazon.com/iam/)。

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

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

  4. [信頼されたエンティティを選択] で、[AWS のサービス] を選択します。[Use case] (ユースケース) で、[CodeDeploy] を選択します。表示されたオプションCodeDeployから選択します。[Next (次へ)] を選択します。AWSCodeDeployRole マネージドポリシーはロールにアタッチ済みです。

  5. [Next (次へ)] を選択します。

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

でアプリケーションを作成するには CodeDeploy
  1. CodeDeploy コンソールを https://console.aws.amazon.com/codedeploy で開きます。

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

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

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

  5. Compute Platform で、EC2/On-premises を選択します。

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

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

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

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

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

  3. サービスロール で、前に作成したサービスロール (例: ) ARNの を選択しますarn:aws:iam::account_ID:role/CodeDeployRole

  4. [Deployment type] (デプロイタイプ) で、[In-place] (インプレース) を選択します。

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

  6. AWS Systems Manager での エージェント設定 で、今すぐ を選択し、更新をスケジュールします。これにより、インスタンスにエージェントがインストールされます。Linux インスタンスは SSM エージェントで既に設定されており、 CodeDeploy エージェントで更新されます。

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

  8. ロードバランサー で、ロードバランシングの有効化 が選択されていないことを確認します。この例では、ロードバランサーを設定したり、ターゲットグループを選択したりする必要はありません。

  9. デプロイグループの作成 を選択します。

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

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

CodePipeline パイプラインを作成するには
  1. にサインイン AWS Management Console し、http://console.aws.amazon.com/codesuite/codepipeline/home で CodePipeline コンソールを開きます。

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

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

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

  4. パイプラインタイプ でV2 を選択します。詳細については、「パイプラインのタイプ」を参照してください。[Next (次へ)] を選択します。

  5. サービスロール で、 CodePipeline でサービスロールの作成を許可する新しいサービスロールを選択しますIAM。

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

  7. ステップ 2: ソースステージ を追加し、ソースプロバイダー で を選択しますCodeCommitリポジトリ名 で、 で作成した CodeCommit リポジトリの名前を選択しますステップ 1: CodeCommit リポジトリを作成する。[ブランチ名] で、[main] を選択し、[次のステップ] を選択します。

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

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

    [Next (次へ)] を選択します。

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

    注記

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

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

  10. [ステップ 5: 確認] で情報を確認し、[パイプラインの作成] を選択します。

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

    CodePipeline コンソールで実行を開始するパイプラインのビュー。

お疲れ様でした。でシンプルなパイプラインを作成しました CodePipeline。

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

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

  2. パイプラインステータスに成功が表示されたら、デプロイステージのステータスエリアで を選択します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 リポジトリにプッシュしたサンプルアプリケーションのウェブページが表示されます。

ステージ、アクション、パイプラインの仕組みの詳細については、「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. パイプラインの最初の進行状況を表示します。各ステージのステータスは、[まだ実行はありません] から [進行中] に変わり、その後、[Succeeded (成功)] または [Failed (失敗)] のいずれかに変わります。パイプラインの実行は数分以内に完了します。

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

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

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

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

このチュートリアルで使用されているリソースをクリーンアップするには
  1. CodePipeline リソースをクリーンアップするには、「」の「パイプラインの削除 AWS CodePipeline」の手順に従います。

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

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

ステップ 8: 詳細情報

の CodePipeline 仕組みについて詳しく説明します。