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

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

パイプラインを最も簡単に作成するには、AWS CodePipeline コンソールで [パイプラインの作成] ウィザードを使用します。

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

注記

Amazon S3 がパイプラインのソースプロバイダである場合、すべてのソースファイルを 1 つの .zip ファイルとしてパッケージ化してバケットにアップロードする必要があります。それ以外の場合、ソースアクションは失敗します。

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

重要

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

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

お探しのものではありませんか。 コードリポジトリとして CodeCommit ブランチを使用してシンプルなパイプラインを作成する方法については、「チュートリアル: シンプルなパイプラインを作成する (CodeCommit リポジトリの場合)」を参照してください。

注記

Amazon S3 ソースのパイプラインの場合、Amazon CloudWatch Events ルールがソースの変更を検出し、変更発生時にパイプラインを開始します。コンソールを使用してパイプラインを作成または変更すると、ルールおよびすべての関連付けられるリソースが作成されます。CLI または AWS CloudFormation で Amazon S3 パイプラインを作成または変更する場合は、Amazon CloudWatch Events ルール、IAM ロール、および AWS CloudTrail 証跡を手動で作成する必要があります。

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

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

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

既存の Amazon S3 バケットを使用する方法については、「バケットのバージョニングの有効化」を参照してください。サンプルアプリケーションをそのバケットにコピーし、「ステップ 3: CodeDeploy でアプリケーションを作成する」のステップに進みます。

Amazon S3 バケットではなく GitHub リポジトリを使用する場合は、サンプルアプリケーションをそのリポジトリにコピーして、「ステップ 3: CodeDeploy でアプリケーションを作成する」の手順に進みます。

Amazon S3 バケットを作成するには

  1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. [Create bucket] を選択します。

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

    注記

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

    [リージョン] で、パイプラインを作成するリージョン ([米国西部 (オレゴン)] など) を選択してから、[次へ] を選択します。

  4. [Configure options (オプションの設定)] タブの [バージョニング] で、[Keep all versions of an object in the same bucket (オブジェクトのすべてのバージョンを同じバケットに保存)]、[次へ] の順に選択します。

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

  5. [アクセス権限の設定] タブで、デフォルトのアクセス許可を受け入れて、アカウントにオブジェクトへの読み取り/書き込みアクセスを許可したら、[次へ] を選択します。Amazon S3 バケットおよびオブジェクトへのアクセス権限の詳細については、「ポリシーでのアクセス権限の指定」を参照してください。

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

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

    重要

    GitHub リポジトリでは [Clone or download] や [Download ZIP] のボタンを使用しないでください。使用すると、CodeDeploy で機能しない入れ子になったフォルダ構造が作成されます。

    1. サンプルをホストする GitHub リポジトリを開きます。

    2. [dist] フォルダを選択します。

    3. ファイル名を選択します。

      • Amazon Linux インスタンスにデプロイする場合、aws-codepipeline-s3-aws-codedeploy_linux.zip を使用します。​

      • Windows Server インスタンスにデプロイする場合、AWSCodePipeline-S3-AWSCodeDeploy_Windows.zip​ を使用します。

    4. [View Raw] を選択し、サンプルファイルをローカルコンピュータに保存します。

      圧縮 (zip) ファイルをダウンロードします。このファイルを解凍しないでください。たとえば、aws-codepipeline-s3-aws-codedeploy_linux.zip ファイルをデスクトップに保存し、解凍しません。

  8. バケットの Amazon S3 コンソールで、ファイルをアップロードします。「」を参照してください。

    1. [Upload] を選択します。

    2. ファイルをドラッグアンドドロップするか、[ファイルを追加] を選択してファイルを参照します。たとえば、デスクトップで aws-codepipeline-s3-aws-codedeploy_linux.zip ファイルを選択します。

    3. [Upload] を選択します。

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

注記

このチュートリアルでは、Amazon EC2 Windows インスタンスを作成するサンプル手順を示します。Amazon EC2 Linux インスタンスを作成するサンプル手順については、「チュートリアル: シンプルなパイプラインを作成する (CodeCommit リポジトリの場合)」の「ステップ 3: Amazon EC2 Linux インスタンスを作成して CodeDeploy エージェントをインストールする」を参照してください。

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

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

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

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

  3. [Step 1: Choose an Amazon Machine Image (AMI) [ステップ 1: Amazon マシンイメージ (AMI) の選択] ページで Microsoft Windows Server 2016 Base の HVM エディションの行を見つけ、[選択] を選択します。(この AMI は "Free tier eligible" とラベル付けされており、リストの先頭にあります)。

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

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

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

    • [Auto-assign Public IP] で、[Enable] を選択します。

    • [IAM ロール] で、CodeDeploy 用の IAM インスタンスプロファイルとして使用するように設定した IAM ロールを選択します。IAM インスタンスプロファイルがない場合は、[新しい IAM ロールの作成] を選択し、「Amazon EC2 インスタンス用の IAM インスタンスプロファイルの作成」の手順に従います。

      注記

      このチュートリアルでは、CodeDeploy 用の IAM インスタンスプロファイルで以下の無制限のポリシーを使用できます。開発ワークフローで使用するパイプラインに対しては、より制限の厳しいバケットポリシーを作成できます。

      { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }
  6. ステップ 3: インスタンスの詳細の設定ページで、高度な詳細を展開し、ユーザーデータで [As text (テキストとして表示)] が選択されている状態で、以下のように入力します。

    <powershell> New-Item -Path c:\temp -ItemType "directory" -Force powershell.exe -Command Read-S3Object -BucketName bucket-name/latest -Key codedeploy-agent.msi -File c:\temp\codedeploy-agent.msi Start-Process -Wait -FilePath c:\temp\codedeploy-agent.msi -WindowStyle Hidden </powershell>

    bucket-name は、リージョン用の CodeDeploy リソースキットファイルが含まれている Amazon S3 バケットの名前です。たとえば、米国西部 (オレゴン) リージョンの場合、bucket-nameaws-codedeploy-us-west-2 に置き換えます。バケット名のリストについては、「リージョン別のリソースキットバケット名」を参照してください。

    このコードは、作成時にインスタンスに CodeDeploy エージェントをインストールします。このスクリプトは Windows インスタンス専用です。

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

  8. [タグの追加] ページで、[キー] ボックスに "Name" と表示されるので、[] ボックスに「MyCodePipelineDemo」と入力し、[次の手順: セキュリティグループの設定] を選択します。

    重要

    [キー] および [] ボックスでは、大文字と小文字が区別されます。

  9. [Configure Security Group (セキュリティグループの設定)] ページで、パブリックインスタンスのエンドポイントにアクセスできるようにポート 80 に通信を許可します。

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

  11. [Review Instance Launch] ページで、[Launch] を選択します。

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

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

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

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

CodeDeploy では、アプリケーションは、識別子です。デプロイするコードで指定し、名前形式で表します。CodeDeploy では、この名前を使用して、デプロイ時に、リビジョン、デプロイ設定、デプロイグループが正しい組み合わせで参照されるようにします。このチュートリアルの後半でパイプラインを作成する際、このステップで作成した CodeDeploy アプリケーションの名前を選択します。

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

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

  3. [サービスロール] で、「CodeDeploy のサービスロールを作成する」で説明されている信頼およびアクセス権限を少なくとも持つ、AWS CodeDeploy を信頼するサービスロールを選択します。サービスロール ARN を取得するには、「サービスロール ARN の取得 (コンソール)」を参照してください。

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

  5. [環境設定] で、[Amazon EC2 Instances (Amazon EC2 インスタンス)] を選択します。[Key (キー)] ボックスで [名前] を選択し、[] ボックスに「MyCodePipelineDemo」と入力します。

    重要

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

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

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

  8. [Advanced (詳細)] セクションを展開します。[アラーム] で、[アラーム設定を無視する] を選択します。

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

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

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

CodePipeline 自動リリースプロセスを作成するには

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

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

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

    注記

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

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

    • [New service role (新しいサービスロール)] を選択して、CodePipeline に IAM での新しいサービスロールの作成を許可します。[ロール名] では、ロールとポリシーの名前はいずれもデフォルトで AWSCodePipelineServiceRole-region-pipeline_name という形式になります。たとえば、このチュートリアル用に作成されたサービスロールは AWSCodePipelineServiceRole-eu-west-2-MyFirstPipeline です。

    • IAM で作成済みのサービスロールを使用するには、[Existing service role (既存のサービスロール)] を選択します。[ロール名] で、リストからサービスロールを選択します。

    注記

    サービスロールを作成したタイミングに応じて、追加の AWS のサービスをサポートするためにロールのアクセス権限の更新が必要になる場合があります。詳細については、「他の AWS サービスのアクセス許可の追加」を参照してください。

  5. [アーティファクトの場所] で、以下のいずれかの操作を行います。

    1. [Default location (デフォルトの場所)] を選択し、パイプライン用に選択したリージョン内のパイプラインのデフォルトのアーティファクトストア (デフォルトとして指定された Amazon S3 アーティファクトバケットなど) を使用します。

    2. 作成した既存のアーティファクトストア (Amazon S3 アーティファクトバケットなど) がパイプラインと同じリージョンにある場合は、[Custom location (カスタムの場所)] を選択します。

    注記

    これはソースコードのソースバケットではありません。これはパイプラインのアーティファクトストアです。パイプラインごとに個別のアーティファクトストア (Amazon S3 バケットなど) が必要です。パイプラインを作成または編集する場合は、パイプラインリージョンにアーティファクトバケットが必要であり、アクションを実行している AWS リージョンごとに 1 つのアーティファクトバケットが必要です。

    詳細については、「入力および出力アーティファクト」および「CodePipeline パイプライン構造のリファレンス」を参照してください。

    [次へ] を選択します。

  6. [Step 2: Add source stage (ステップ 2: ソースステージの追加)] の [ソースプロバイダ] で、[Amazon S3] を選択します。[Bucket (バケット)] に、「ステップ 1: アプリケーションの Amazon S3 バケットを作成する」で作成した Amazon S3 バケットの名前を入力します。[S3 object key (S3 オブジェクトキー)] で、そのバケットにコピーしたサンプルファイル、aws-codepipeline-s3-aws-codedeploy_linux.zip または AWSCodePipeline-S3-AWSCodeDeploy_Windows.zip を入力します。[次のステップ] を選択します。

    たとえば、バケットに awscodepipeline-demobucket-example-date という名前を付け、CodeDeploy で Amazon EC2 インスタンスに対して Amazon Linux を選択した場合は、次のように入力します。

    s3://awscodepipeline-demobucket-example-date/aws-codepipeline-s3-aws-codedeploy_linux.zip

    バケットに awscodepipeline-demobucket-example-date という名前を付け、CodeDeploy で Amazon EC2 インスタンスに対して Windows を選択した場合は、次のように入力します。

    s3://awscodepipeline-demobucket-example-date/AWSCodePipeline-S3-AWSCodeDeploy_Windows.zip

    注記

    サンプルアプリケーションを Amazon S3 バケットではなく GitHub リポジトリにコピーする場合は、ソースプロバイダのリストから [GitHub] を選択し、指示に従います。詳細については、「パイプラインの作成 (コンソールの場合)」を参照してください。

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

    [次へ] を選択します。

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

    注記

    クラウド上の完全マネージド型のビルドサービスである、CodeBuild などのプロバイダを使用してビルドアクションを設定できます。また、Jenkins など、ビルドサーバーまたはシステムと備えたプロバイダを使用するビルドアクションを設定することもできます。次のチュートリアル「チュートリアル: 4 ステージのパイプラインを作成する」では、ビルドリソースを設定する手順と、それらのリソースを使用するパイプラインを作成する手順について説明します。

  8. [Step 4: Add deploy stage (ステップ 4: デプロイステージを追加する)] の [デプロイプロバイダ] で、[AWS CodeDeploy] を選択します。[リージョン] フィールドは、デフォルトで、パイプラインと同じ AWS リージョンになります。[アプリケーション名] に CodePipelineDemoApplication を入力するか、更新ボタンを選択してリストからそのアプリケーション名を選択します。[デプロイグループ] に「CodePipelineDemoFleet」と入力するか、リストからその名前を選択します。その後、[Next (次へ)] を選択します。

    注記

    「デプロイ」は、[Step 4: Add deploy stage (ステップ 4: デプロイステージの追加)] ステップで作成されるステージにデフォルトで付けられる名前であり、「ソース」は、パイプラインの最初のステージに付けられる名前です。

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

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

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

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

  • この変更を CodeDeploy で Amazon EC2 インスタンスにデプロイする [Deploy] ステージ。

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

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

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

  2. アクションのステータスに [Succeeded] が表示されたら、[Staging] ステージのステータス領域で [Details] を選択します。これにより、AWS CodeDeploy コンソールが開きます。

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

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

    以下のページは、Amazon S3 バケットにアップロードしたサンプルアプリケーションです。

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

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

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

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

注記

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

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

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

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

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

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

  5. [サービスロール] で、最初のデプロイに使用したのと同じ CodeDeploy サービスロール (CodePipeline サービスロールではない) を選択します。

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

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

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

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

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

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

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

3 番目のステージの追加 (コンソールの場合)

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

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

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

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

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

  5. [Add stage (ステージの追加)] で、[Stage name (ステージ名)] に、Production​ を入力します。[Add stage (ステージの追加)] を選択します。

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

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

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

    注記

    ソースアーティファクトは入力アーティファクト MyApp の名前であり、ソースアクションの出力アーティファクトとして [Create pipeline (パイプラインの作成)] ウィザードで自動的に作成されました。すべてのアクションには入力アーティファクト (アクションの実行対象のアーティファクト)、出力アーティファクト (成果物またはそのアクションの結果)、またはその両方があります。この例では、デプロイアクションはソースアクションの出力をソースステージ MyApp に入力し、デプロイします。前のステージ (Deploy) に対して設定されたアクションが、同じ Amazon EC2 インスタンスにアプリケーションをすでにデプロイしているため、このアクションは失敗します。入力アーティファクトと出力アーティファクト、およびパイプラインの構造の詳細については、「CodePipeline パイプライン構造のリファレンス」を参照してください。

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

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

    または、AWS CLI を使用してパイプラインを再実行するには、ローカル Linux, macOS, or Unix マシンのターミナルから、またはローカル 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 デプロイのページにリダイレクトされます。この場合、その失敗の結果、最初のインスタンスグループがすべての Amazon EC2 インスタンスにデプロイされ、2 番目のデプロイグループ用にインスタンスは残りません。

    注記

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

3 番目のステージの追加 (CLI の場合)

AWS CLI を使用してステージをパイプラインに追加するのは、コンソールを使用するよりも複雑ですが、パイプラインの構造が見やすくなります。

パイプラインの 3 番目のステージを作成するには

  1. ローカル Linux, macOS, or 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": "codepipeline-us-east-2-250656481468", }, "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. [Staging] ステージセクションをコピーし、最初の 2 つのステージの後に貼り付けます。これはデプロイステージであるため、[Staging] ステージと同様に、3 番目のステージのテンプレートとして使用します。

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

    以下の例では、[Staging] ステージの後に pipeline.json ファイルに追加する JSON を示しています。強調表示された要素を新しい値で編集します。[Staging] と [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. 以下のようにパイプライン JSON ファイルを指定して、update-pipeline コマンドを実行します。

    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 デプロイの詳細ページにリダイレクトされます。この場合、その失敗の結果、最初のインスタンスグループがすべての Amazon EC2 インスタンスにデプロイされ、2 番目のデプロイグループ用にインスタンスは残りません。

    注記

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

ステップ 6: CodePipeline のステージ間の移行を有効化または無効化する

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

CodePipeline パイプラインのステージ間の移行を無効/有効にするには

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

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

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

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

  4. サンプルをもう一度 Amazon S3 バケットにアップロードします。バケットのバージョニングが有効になっているため、この変更によってパイプラインが開始します。詳細については、「サンプルアプリケーションのアップロード」を参照してください。

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

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

    注記

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

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

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

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

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

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

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