チュートリアル: シンプルなパイプラインを作成する (S3 バケット) - AWS CodePipeline

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

チュートリアル: シンプルなパイプラインを作成する (S3 バケット)

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

このチュートリアルでは、バージョニングされた S3 ソースバケットと CodeDeploy を使用してサンプルアプリケーションをリリースする 2 段階のパイプラインを作成します。

注記

Amazon S3 がパイプラインのソースプロバイダーである場合、ソースファイルを 1 つの .zip に圧縮し、その .zip をソースバケットにアップロードできます。解凍されたファイルを 1 つアップロードすることもできます。ただし、.zip ファイルを想定するダウンストリームアクションは失敗します。

重要

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

このシンプルなパイプラインを作成したら、別のステージを追加し、ステージ間の移行を無効化または有効化します。

重要

この手順でパイプラインに追加するアクションの多くには、パイプラインを作成する前に作成する必要がある AWS リソースが含まれています。ソースアクションの AWS リソースは、パイプラインを作成するのと同じ AWS リージョンで常に作成する必要があります。例えば、米国東部 (オハイオ) リージョンでパイプラインを作成する場合、 CodeCommit リポジトリは米国東部 (オハイオ) リージョンにある必要があります。

パイプラインの作成時にクロスリージョンアクションを追加できます。クロスリージョンアクションの AWS リソースは、アクションを実行する予定のリージョンと同じ AWS リージョンにある必要があります。詳細については、「でクロスリージョンアクションを追加する CodePipeline」を参照してください。

開始する前に、「の開始方法 CodePipeline」の前提条件を完了する必要があります。

ステップ 1: アプリケーションの S3 ソースバケットを作成する

ソースファイルまたはアプリケーションをバージョニングされた場所に保存します。このチュートリアルでは、サンプルアプリケーションファイルの S3 バケットを作成し、そのバケットでバージョニングを有効にします。バージョニングを有効化したら、サンプルアプリケーションをそのバケットにコピーします。

S3 バケットを作成するには
  1. でコンソールにサインインします AWS Management Console。S3 コンソールを開きます。

  2. [バケットを作成] を選択します。

  3. [バケット名] に、バケットの名前 (awscodepipeline-demobucket-example-date など) を入力します。

    注記

    Amazon S3 内のすべてのバケット名は一意になる必要があるため、例に示す名前ではなく、独自のバケット名を使用してください。例に示す名前は、日付を追加するだけでも変更できます。このチュートリアルの残りの部分で必要となるため、この名前を書き留めます。

    [リージョン] で、パイプラインを作成するリージョン [米国西部 (オレゴン)] などを選択し、[バケットの作成] を選択します。

  4. バケットが作成されると、成功バナーが表示されます。[バケットの詳細に移動] を選択します。

  5. [プロパティ] タブで、[バージョニング] を選択します。[バージョニングの有効化] を選択し、[保存] を選択します。

    バージョニングが有効になったら、Amazon S3 によって各オブジェクトのすべてのバージョンがバケットに保存されます。

  6. [アクセス許可] タブは、デフォルト設定のままにします。S3 バケットおよびオブジェクトへのアクセス許可に関する詳細については、「ポリシーでのアクセス許可の指定」を参照してください。

  7. 次に、サンプル をダウンロードし、ローカルコンピュータのフォルダまたはディレクトリに保存します。

    1. 次のいずれかを選択します 。Windows Server インスタンスについて、このチュートリアルのステップに従う場合は、SampleApp_Windows.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) ファイルをダウンロードします。このファイルを解凍しないでください。

  8. Amazon S3 コンソールで、バケットに次のファイルをアップロードします。

    1. [アップロード] を選択します。

    2. ファイルをドラッグアンドドロップするか、[ファイルを追加] を選択してファイルを参照します。

    3. [アップロード] を選択します。

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

注記

このチュートリアルでは、Amazon EC2 Windows インスタンスを作成するためのサンプルステップについて説明します。Amazon EC2 Linux インスタンスを作成する手順の例については、「」を参照してくださいステップ 3: Amazon EC2 Linux インスタンスを作成し、 CodeDeploy エージェントをインストールする。作成するインスタンスの数の入力を求められたら、2 つのインスタンスを指定します。

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

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

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

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

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

  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 マシンイメージ)] で、[Windows] オプションを選択します。(これは Microsoft Windows Server 2019 Base とAMI呼ばれ、「無料利用枠適用」というラベルが付けられており、クイックスタート にあります。)

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

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

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

    注記

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

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

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

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

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

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

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

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

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

  11. [View all instances] (すべてのインスタンスの表示) を選択して確認ページを閉じ、コンソールに戻ります。

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

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

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

では CodeDeploy、アプリケーションは、デプロイするコードの名前の形式の識別子です。この名前 CodeDeploy を使用して、デプロイ中にリビジョン、デプロイ設定、デプロイグループの正しい組み合わせが参照されるようにします。このチュートリアルの後半でパイプラインを作成するときに、このステップで作成する 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. アプリケーションページが表示されない場合は、 AWS CodeDeploy メニューで アプリケーション を選択します。

  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. [サービスロール] で、先ほど作成したサービスロールを選択します。少なくとも、 のサービスロールの作成で説明されている信頼とアクセス許可 AWS CodeDeploy で信頼するサービスロールを使用する必要があります。 CodeDeployサービスロールを取得するにはARN、「サービスロールの取得 ARN (コンソール)」を参照してください。

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

  5. 環境設定 で、Amazon EC2 インスタンス を選択します。[名前] を [キー] フィールドに入力し、[] フィールドに MyCodePipelineDemo を入力します。

    重要

    ここで、EC2インスタンスの作成時に割り当てた名前キーと同じ値を選択する必要があります。インスタンスに MyCodePipelineDemo 以外のタグを付けた場合は、ここでもそのタグを使用してください。

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

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

  8. [ロードバランサー] で、[ロードバランシングの有効化] ボックスが選択されていないことを確認してください。この例では、ロードバランサーを設定したり、ターゲットグループを選択したりする必要はありません。チェックボックスの選択を解除すると、ロードバランサーのオプションが表示されません。

  9. [詳細設定] セクションでは、既定のままにしておきます。

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

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

チュートリアルのこの部分では、パイプラインを作成します。サンプルは、パイプラインを通して自動的に実行されます。

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

  2. [ようこそ] ページ、[開始方法] ページ、または [パイプライン] ページで、[パイプラインの作成] を選択します。

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

    注記

    パイプラインに別の名前を選択した場合は、このチュートリアルの残りの部分で MyFirstPipeline の代わりにその名前を使用してください。パイプラインを作成したら、その名前を変更することはできません。パイプラインの名前にはいくつかの制限がある場合があります。詳細については、「のクォータ AWS CodePipeline」を参照してください。

  4. CodePipeline は、特徴と価格が異なる V1 および V2 タイプのパイプラインを提供します。V2 タイプは、コンソールで選択できる唯一のタイプです。詳細については、「パイプラインタイプ」を参照してください。の料金については CodePipeline、の料金」を参照してください。

  5. [Service role (サービスロール)] で、次のいずれかの操作を行います。

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

    • で既に作成されたサービスロールを使用するには、既存のサービスロールを選択しますIAM。[ロール名] で、リストからサービスロールを選択します。

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

  7. [Step 2: Add source stage (ステップ 2: ソースステージの追加)] ページの [ソースプロバイダ] で、[Amazon S3] を選択します。[バケット] に、「ステップ 1: アプリケーションの S3 ソースバケットを作成する」で作成した S3 バケットの名前を入力します。S3 オブジェクトキーで、ファイルパスの有無にかかわらずオブジェクトキーを入力し、必ずファイル拡張子を含めます。たとえば、SampleApp_Windows.zip の場合、次の例に示すように、サンプルファイル名を入力します。

    SampleApp_Windows.zip

    Next step]を選択します。

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

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

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

  9. ステップ 4: デプロイステージ を追加し、デプロイプロバイダー で を選択しますCodeDeploy リージョンフィールドのデフォルトは、パイプライン AWS リージョン と同じです。[アプリケーション名] に MyDemoApplication を入力するか、更新ボタンを選択してリストからそのアプリケーション名を選択します。[デプロイグループ] に「MyDemoDeploymentGroup」と入力するか、リストからデプロイグループを選択して [次へ] を選択します。

    注記

    「Deploy」は、[ステップ 4: デプロイステージの追加] ステップで作成したステージにデフォルトで付けられる名前です。パイプラインの最初のステージに付けられる「Source」という名前も同様です。

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

  11. パイプラインの実行が開始されます。 CodePipeline サンプルがデプロイ内の各 Amazon EC2インスタンスにウェブページを CodeDeployデプロイすると、進行状況、成功、失敗のメッセージを表示できます。

お疲れ様でした。でシンプルなパイプラインを作成しました CodePipeline。パイプラインには 2 つのステージがあります。

  • [Source] という名前のソースステージ。このステージでは、S3 バケットに保存したバージョニング済みのサンプルアプリケーションの変更を検出し、これらの変更をパイプライン内にプルします。

  • でこれらの変更をEC2インスタンスにデプロイするデプロイステージ CodeDeploy。

ここで、結果を確認します。

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

  2. アクションのステータスに [Succeeded (成功)] が表示されたら、[ Deploy (デプロイ)] ステージのステータス領域で [Details (詳細)] を選択します。これにより、 CodeDeploy コンソールが開きます。

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

  4. 説明タブのパブリック DNSで、アドレスをコピーし、ウェブブラウザのアドレスバーに貼り付けます。S3 バケットにアップロードしたサンプルアプリケーションのインデックスページを表示します。

    S3 バケットにアップロードしたサンプルアプリケーションのウェブページが表示されます。

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

(オプション) ステップ 5: 別のステージをパイプラインに追加する

次に、パイプラインに別のステージを追加して、 を使用してステージングサーバーから本番稼働用サーバーにデプロイします CodeDeploy。まず、 CodePipelineDemoApplication の に別のデプロイグループを作成します CodeDeploy。その後、このデプロイグループを使用するアクションを含むステージを追加します。別のステージを追加するには、 CodePipeline コンソールまたは AWS CLI を使用して、JSONファイル内のパイプラインの構造を取得して手動で編集し、 update-pipeline コマンドを実行して変更を加えてパイプラインを更新します。

で 2 番目のデプロイグループを作成する CodeDeploy

注記

チュートリアルのこの部分では、2 番目のデプロイグループを作成しますが、以前と同じ Amazon EC2インスタンスにデプロイします。このウォークスルーは、デモンストレーションのみを目的としています。これは、エラーが にどのように表示されるかを表示できないように設計されています CodePipeline。

で 2 番目のデプロイグループを作成するには CodeDeploy
  1. CodeDeploy コンソールを https://console.aws.amazon.com/codedeploy で開きます。

  2. [アプリケーション] を選択し、アプリケーションのリストで [MyDemoApplication] を選択します。

  3. [デプロイグループ] タブを選択して、[Create deployment group (デプロイグループの作成)] を選びます。

  4. [Create deployment group (デプロイグループの作成)] ページの [Deployment group name (デプロイグループ名)] に、2 番目のデプロイグループの名前 (たとえば、CodePipelineProductionFleet) を入力します。

  5. サービスロール で、最初のデプロイに使用したものと同じ CodePipeline サービスロールを選択します ( CodeDeploy サービスロールではありません)。

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

  7. 環境設定 で、Amazon EC2 インスタンス を選択します。[名前] を [キー] ボックスから選択し、[] ボックスから MyCodePipelineDemo をリストから選択します。[デプロイ設定] のデフォルト設定をそのままにします。

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

  9. [Load Balancer (ロードバランサー)] で、[Enable load balancing (ロードバランシングの有効化)] をオフにします。

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

パイプラインの別のステージとしてデプロイグループを追加する

別のデプロイグループができたので、このデプロイグループを使用して以前に使用したのと同じEC2インスタンスにデプロイするステージを追加できます。コンソールまたは を使用して CodePipeline AWS CLI 、このステージを追加できます。

3 番目のステージを追加する (コンソール)

CodePipeline コンソールを使用して、新しいデプロイグループを使用する新しいステージを追加できます。このデプロイグループは、既に使用したEC2インスタンスにデプロイされているため、このステージのデプロイアクションは失敗します。

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

  2. 名前 で、作成したパイプラインの名前 を選択します MyFirstPipeline。

  3. パイプライン詳細ページで、[編集] を選択します。

  4. [Edit (編集)] ページで [+ Add stage (+ ステージの追加)] を選択して、[Deploy] ステージの直後にステージを追加します。

    編集画面の + ステージ追加ボタンを示す画像
  5. [Add stage (ステージの追加)] で、[Stage name (ステージ名)] に、Production​ を入力します。[Add stage (ステージの追加)] を選択します。

  6. 新しいステージで、[+ Add action group (+ アクショングループの追加)] を選択します。

  7. [アクションの編集] の、[アクション名] に、Deploy-Second-Deployment を入力します。​ アクションプロバイダー で、デプロイ で を選択しますCodeDeploy

  8. CodeDeploy セクションのアプリケーション名 MyDemoApplicationで、パイプラインの作成時と同様に、ドロップダウンリストから を選択します。[デプロイグループ] で、先ほど作成したデプロイグループ CodePipelineProductionFleet を選択します。[入力アーティファクト] で、ソースアクションから入力アーティファクトを選択します。[Save] を選択します。

  9. [Edit (編集)] ページで [Save (保存)] を選択します。[パイプラインの変更を保存] で、[Save (保存)] を選択します。

  10. 新しいステージがパイプラインに追加されていますが、パイプラインの別の実行をトリガーした変更がないため、[まだ実行はありません] というステータスが表示されます。最新のリビジョンを手動で再度実行して、編集されたパイプラインの実行度を確認する必要があります。パイプラインの詳細ページで、[Release change (リリースの変更)] を選択し、プロンプトが表示されたら [Release (リリース)] を選択します。これにより、ソースアクションで指定した各ソース場所における最新のリビジョンがパイプラインで実行されます。

    または、 を使用して、ローカル Linux、macOS、または Unix マシンのターミナルからパイプライン AWS CLI を再実行するか、ローカル Windows マシンのコマンドプロンプトからパイプラインの名前を指定して start-pipeline-execution コマンドを実行します。これにより、ソースバケット内のアプリケーションの 2 回目の実行がパイプラインで実行されます。

    aws codepipeline start-pipeline-execution --name MyFirstPipeline

    このコマンドは pipelineExecutionId オブジェクトを返します。

  11. CodePipeline コンソールに戻り、パイプラインのリストで、ビューページMyFirstPipelineを開くことを選択します。

    パイプラインには、3 つのステージがあり、それらの各ステージのアーティファクトの状態が示されます。パイプラインがすべてのステージを実行するまでに最大 5 分かかることがあります。前回と同じように、最初の 2 つのステージではデプロイが成功しますが、[Production (本番稼働用)] ステージでは [Deploy-Second-Deployment (2 番目のデプロイをデプロイ)] アクションが失敗したことが示されます。

  12. [Deploy-Second-Deployment] アクションで、[Details] を選択します。デプロイのページ CodeDeployにリダイレクトされます。この場合、障害は、最初のインスタンスグループがすべてのEC2インスタンスにデプロイした結果であり、2 番目のデプロイグループのインスタンスは残りません。

    注記

    この失敗は、パイプラインのステージにエラーがある場合にどうなるかを示すために、意図的に起こしたものです。

第 3 ステージを作成する (CLI)

を使用してパイプラインにステージ AWS CLI を追加するのは、コンソールを使用するよりも複雑ですが、パイプラインの構造をより詳細に可視化できます。

パイプラインの 3 番目のステージを作成するには
  1. ローカル Linux、macOS、または Unix マシンのターミナルセッションを開くか、ローカル Windows マシンのコマンドプロンプトを開き、get-pipeline コマンドを実行して、先ほど作成したパイプラインの構造を表示します。MyFirstPipeline に対して、以下のコマンドを入力します。

    aws codepipeline get-pipeline --name "MyFirstPipeline"

    このコマンドは、 の構造を返します MyFirstPipeline。出力の最初の部分は以下のようになります。

    { "pipeline": { "roleArn": "arn:aws:iam::80398EXAMPLE:role/AWS-CodePipeline-Service", "stages": [ ...

    出力の最後のパートにはパイプラインのメタデータが含まれており、次のようになります。

    ... ], "artifactStore": { "type": "S3" "location": "amzn-s3-demo-bucket", }, "name": "MyFirstPipeline", "version": 4 }, "metadata": { "pipelineArn": "arn:aws:codepipeline:us-east-2:80398EXAMPLE:MyFirstPipeline", "updated": 1501626591.112, "created": 1501626591.112 } }
  2. この構造をコピーしてプレーンテキストエディタに貼り付け、ファイルを pipeline.json として保存します。便利なように、aws codepipeline コマンドを実行する同じディレクトリにこのファイルを保存します。

    注記

    コマンドを使用して、get-pipeline次のように をファイルJSONに直接パイプできます。

    aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json
  3. [ Deploy (デプロイ)] ステージセクションをコピーし、最初の 2 つのステージの後に貼り付けます。これはデプロイステージであるため、[ Deploy (デプロイ)] ステージと同様に、3 番目のステージのテンプレートとして使用します。

  4. ステージの名前とデプロイグループの詳細を変更します。

    次の例は、デプロイステージの後に pipeline.json ファイルJSONに追加する を示しています。強調表示された要素を新しい値で編集します。[ Deploy (デプロイ)] と [Production (本番稼働用)] のステージ定義を区切るには、必ずカンマを使用してください。

    , { "name": "Production", "actions": [ { "inputArtifacts": [ { "name": "MyApp" } ], "name": "Deploy-Second-Deployment", "actionTypeId": { "category": "Deploy", "owner": "AWS", "version": "1", "provider": "CodeDeploy" }, "outputArtifacts": [], "configuration": { "ApplicationName": "CodePipelineDemoApplication", "DeploymentGroupName": "CodePipelineProductionFleet" }, "runOrder": 1 } ] }
  5. get-pipeline コマンドを使用して取得したパイプライン構造を使用している場合は、JSONファイルからmetadata行を削除する必要があります。それ以外の場合は、update-pipeline コマンドで使用することはできません。"metadata": { } 行と、"created""pipelineARN""updated" フィールドを削除します。

    例えば、構造から以下の行を削除します。

    "metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" }

    ファイルを保存します。

  6. update-pipeline コマンドを実行し、次のようなパイプラインJSONファイルを指定します。

    aws codepipeline update-pipeline --cli-input-json file://pipeline.json

    このコマンドは、更新されたパイプラインの構造全体を返します。

    重要

    ファイル名の前に必ず file:// を含めてください。このコマンドでは必須です。

  7. パイプラインの名前を指定して、start-pipeline-execution コマンドを実行します。これにより、ソースバケット内のアプリケーションの 2 回目の実行がパイプラインで実行されます。

    aws codepipeline start-pipeline-execution --name MyFirstPipeline

    このコマンドは pipelineExecutionId オブジェクトを返します。

  8. CodePipeline コンソールを開き、パイプラインのMyFirstPipelineリストから選択します。

    パイプラインには、3 つのステージがあり、それらの各ステージのアーティファクトの状態が示されます。パイプラインがすべてのステージを実行するまでに最大 5 分かかることがあります。前回と同じように、最初の 2 つのステージではデプロイが成功しますが、[Production] ステージでは [Deploy-Second-Deployment] アクションが失敗したことが示されます。

  9. [Deploy-Second-Deployment] アクションで、[Details] を選択すると、その失敗の詳細が表示されます。 CodeDeploy デプロイの詳細ページにリダイレクトされます。この場合、障害は、最初のインスタンスグループがすべてのEC2インスタンスにデプロイした結果であり、2 番目のデプロイグループのインスタンスは残りません。

    注記

    この失敗は、パイプラインのステージにエラーがある場合にどうなるかを示すために、意図的に起こしたものです。

(オプション) ステップ 6: のステージ間の移行を無効および有効にする CodePipeline

パイプラインのステージ間の移行を有効化または無効化することができます。ステージ間の移行を無効にすると、ステージ間の移行を手動で制御できるようになります。たとえば、パイプラインの最初の 2 つのステージを実行するが、本番環境にデプロイする準備ができるまで、または問題のトラブルシューティング中か、そのステージが失敗するまで、3 番目のステージへの移行を無効化します。

CodePipeline パイプライン内のステージ間の移行を無効化および有効にするには
  1. CodePipeline コンソールを開き、パイプラインのMyFirstPipelineリストから選択します。

  2. パイプラインの詳細ページで、2 番目のステージ (Deploy) と前のセクションで追加した 3 番目のステージ (Production) との間で [移行を無効にする] ボタンを選択します。

  3. [移行を無効にする] で、ステージ間の移行を無効にする理由を入力し、[無効化] を選択します。

    ステージ間の矢印では、アイコンと色の変化、および、[移行を有効にする] ボタンが表示されます。

    「障害のトラブルシューティング中に移行を無効にする」として、移行を無効にする理由を入力した画像
  4. サンプルをもう一度 S3 バケットにアップロードします。バケットのバージョニングが有効になっているため、この変更によってパイプラインが開始します。

  5. パイプラインの詳細ページに戻り、ステージの状態を監視します。パイプラインビューでは、最初の 2 つのステージで進行状況が示されて成功に変わりますが、3 番目のステージで変更はありません。このプロセスには数分かかることがあります。

  6. 2 つのステージの間の [移行を有効にする] ボタンを選択して、遷移を有効にします。[Enable transition] ダイアログボックスで、[Enable] を選択します。3 番目のステージの実行は数分で開始し、パイプラインの最初の 2 つのステージですでに実行されているアーティファクトの処理を試みます。

    注記

    この 3 番目のステージを成功させるには、移行を有効にする前に CodePipelineProductionFleet デプロイグループを編集し、アプリケーションがデプロイされる別のEC2インスタンスセットを指定します。そのための方法の詳細については、「デプロイグループの設定を変更する」を参照してください。さらにEC2インスタンスを作成すると、追加コストが発生する可能性があります。

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

チュートリアル: 4 ステージのパイプラインを作成する 用にこのチュートリアルで作成したリソースの一部を使用することができます。例えば、 CodeDeploy アプリケーションとデプロイを再利用できます。クラウドのフルマネージドビルドサービスである CodeBuildなどのプロバイダーを使用してビルドアクションを設定できます。また、Jenkins など、ビルドサーバーまたはシステムと備えたプロバイダを使用するビルドアクションを設定することもできます。

ただし、これらのチュートリアルの完了後、これらのリソースに対する継続利用料金が発生しないよう、使用したパイプラインおよびリソースを削除する必要があります。まず、パイプラインを削除し、次に CodeDeploy アプリケーションとそれに関連する Amazon EC2インスタンスを削除し、最後に S3 バケットを削除します。

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

  2. CodeDeploy リソースをクリーンアップするには、「 リソースをクリーンアップする (コンソール)」の手順に従います。

  3. S3 バケットを削除するには、「バケットを削除するか空にする 」の手順に従います。追加のパイプラインを作成しない場合は、パイプラインのアーティファクトの保存用に作成した S3 バケットを削除します。このバケットの詳細については、「CodePipeline の概念」を参照してください。