翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル: シンプルなパイプラインを作成する (S3 バケット)
パイプラインを最も簡単に作成するには、 コンソールでパイプラインの作成AWS CodePipelineウィザードを使用します。
このチュートリアルでは、バージョニングされた S3 バケットおよび CodeDeploy を使用して、サンプルアプリケーションをリリースする 2 ステージのパイプラインを作成します。
Amazon S3 がパイプラインのソースプロバイダーである場合、ソースファイルを 1 つの .zip に圧縮し、その .zip をソースバケットにアップロードできます。解凍されたファイルを 1 つアップロードすることもできます。ただし、.zip ファイルを想定するダウンストリームアクションは失敗します。
このシンプルなパイプラインを作成したら、別のステージを追加し、ステージ間の移行を無効化または有効化します。
この手順でパイプラインに追加するアクションの多くは、パイプラインを作成する前に作成する必要がある AWS リソースを含んでいます。ソースアクションの AWS リソースは、パイプラインを作成するときは、常に同じ AWS リージョンに作成する必要があります。たとえば、米国東部 (オハイオ) リージョンにパイプラインを作成している場合、 CodeCommit リポジトリは米国東部 (オハイオ) リージョンにある必要があります。
パイプラインを作成するときにクロスリージョンアクションを追加できます。クロスリージョンアクションの AWS リソースはアクションを実行する予定の AWS リージョンと同じであることが必要です。詳細については、「クロスリージョンアクションを追加 CodePipeline」を参照してください。
開始する前に、「を始める CodePipeline」の前提条件を完了する必要があります。
トピック
ステップ 1: アプリケーションの S3 バケットを作成する
ソースファイルまたはアプリケーションをバージョニングされた場所に保存します。このチュートリアルでは、サンプルアプリケーションの S3 バケットを作成し、そのバケットでバージョニングを有効にします。バージョニングを有効化したら、サンプルアプリケーションをそのバケットにコピーします。
S3 バケットを作成するには
-
AWS Management Consoleコンソールにサインインします。S3 コンソールを開きます。
-
バケットの作成 を選択します。
-
[バケット名] に、バケットの名前 (
awscodepipeline-demobucket-example-date
など) を入力します。注記 Amazon S3 内のすべてのバケット名は一意になる必要があるため、例に示す名前ではなく、独自のバケット名を使用してください。例に示す名前は、日付を追加するだけでも変更できます。このチュートリアルの残りの部分で必要となるため、この名前を書き留めます。
[リージョン] で、パイプラインを作成するリージョン [米国西部 (オレゴン)] などを選択し、[バケットの作成] を選択します。
-
バケットが作成されると、成功バナーが表示されます。[バケットの詳細に移動] を選択します。
-
[プロパティ] タブで、[バージョニング] を選択します。[バージョニングの有効化] を選択し、[保存] を選択します。
バージョニングが有効になったら、Amazon S3 によって各オブジェクトのすべてのバージョンがバケットに保存されます。
-
[アクセス許可] タブは、デフォルト設定のままにします。S3 バケットおよびオブジェクトへのアクセス許可に関する詳細については、「ポリシーでのアクセス許可の指定」を参照してください。
-
次に、サンプル をダウンロードし、ローカルコンピュータのフォルダまたはディレクトリに保存します。
-
次のいずれかを選択します 。Windows Server インスタンスについて、このチュートリアルのステップに従う場合は、
SampleApp_Windows.zip
を選択します。-
を使用して Amazon Linux インスタンスにデプロイする場合は CodeDeploy、SampleApp_Linux.zip というサンプルアプリケーションをこちらからダウンロードしてください。
-
を使用して Windows Server インスタンスにデプロイする場合は CodeDeploy、SampleApp_Windows.zip というサンプルアプリケーションをこちらからダウンロードしてください。
-
-
圧縮 (zip) ファイルをダウンロードします。このファイルを解凍しないでください。
-
-
Amazon S3 コンソールで、バケットに次のファイルをアップロードします。
-
[Upload] (アップロード) を選択します。
-
ファイルをドラッグアンドドロップするか、[ファイルを追加] を選択してファイルを参照します。
-
[Upload] (アップロード) を選択します。
-
ステップ 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 で管理できるようにするポリシーをアタッチします。
インスタンスロールを作成するには
-
https://console.aws.amazon.com/iam/
で IAM コンソール を開きます。 -
コンソールダッシュボードで [ロール] を選択します。
-
[ロールの作成] を選択します。
-
「信頼できるエンティティのタイプを選択」で、を選択しますAWS のサービス。[ユースケースの選択] で [EC2] を選択し、[次の手順: アクセス許可] を選択します。
-
という名前のポリシーを検索して選択します
AmazonEC2RoleforAWSCodeDeploy
。 -
という名前のポリシーを検索して選択します
AmazonSSMManagedInstanceCore
。[Next: Tags] (次のステップ: タグ) を選択します。 -
[Next: Review] (次のステップ: レビュー) を選択します。ロールの名前を入力します (例:
EC2InstanceRole
)。注記 次のステップのロール名をメモしておきます。このロールは、インスタンスの作成時に選択します。
[ロールの作成] を選択します。
インスタンスを起動するには
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/
) を開きます。 -
サイド・ナビゲーションから「インスタンス」を選択し、ページ上部の「インスタンスの起動」を選択します。
-
[名前とタグ] の [名前] に、と入力します
MyCodePipelineDemo
。これにより、インスタンスに Key ofName
というタグとタグ Value ofMyCodePipelineDemo
が割り当てられます。後で、 CodeDeploy サンプルアプリケーションをインスタンスにデプロイするアプリケーションを作成します。 CodeDeployタグに基づいて、デプロイするインスタンスを選択します。 -
[アプリケーションおよび OS イメージ (Amazon マシンイメージ)] で、[Windows] オプションを選択します。(この AMI は Microsoft Windows Server 2019 ベースとして説明されており、「無料利用枠対象」というラベルが付いており、クイックスタートの下にあります。)
-
[インスタンスタイプ] で、
t2.micro
インスタンスのハードウェア構成として無料利用枠の対象タイプを選択します。 -
key pair (ログイン) で、キーペアを選択するか、キーペアを作成します。
[Proceed] (key pair なしで続行) を選択することもできます。
注記 このチュートリアルでは、キーペアを使用せずに続行できます。SSH を使用してインスタンスに接続するには、キーペアを作成または使用します。
-
[Network settings] (ネットワーク設定) で、次の操作を行います。
「パブリックIPの自動割り当て」で、ステータスが「有効」になっていることを確認します。
-
[セキュリティグループの割り当て] の横にある [新規セキュリティグループを作成] を選択します。
-
SSH の行の [ソースタイプ] で、[My IP] を選択します。
-
[セキュリティグループの追加] を選択し、[HTTP] を選択し、[ソースタイプ] で [My IP] を選択します。
-
-
詳細情報を展開してください。IAM インスタンスプロファイルで、前の手順で作成した IAM ロール (例:
EC2InstanceRole
) を選択します。 -
[概要] の [インスタンス数] に
2
.. と入力します。 -
Launch instance (インスタンスの起動) を選択します。
-
[View all instances] (すべてのインスタンスの表示) を選択して確認ページを閉じ、コンソールに戻ります。
-
[インスタンス] ページで、起動のステータスを表示できます。インスタンスを起動すると、その初期状態は
pending
です。インスタンスを起動した後は、状態がrunning
に変わり、パブリック DNS 名を受け取ります ([パブリック DNS] 列が表示されていない場合は、[表示/非表示] アイコンを選択してから、[パブリック DNS] を選択します)。 -
インスタンスに接続可能になるまでには、数分かかることがあります。インスタンスのステータスチェックが成功していることを確認します。この情報は、[ステータスチェック] 列で確認できます。
ステップ 3: でアプリケーションを作成する CodeDeploy
ではアプリケーションは CodeDeploy、デプロイするコードの識別子で、名前の形式です。 CodeDeploy はこの名前を使用して、デプロイ中にリビジョン、デプロイ設定、およびデプロイグループの正しい組み合わせが参照されるようにします。このチュートリアルの後半でパイプラインを作成する際、 CodeDeploy このステップで作成するアプリケーションの名前を選択します。
まず、 CodeDeploy 使用するサービスロールを作成します。以前に作成したサービスロールがある場合、別のサービスロールを作成する必要はありません。
CodeDeploy サービスロールを作成するには
-
https://console.aws.amazon.com/iam/
で IAM コンソール を開きます。 -
コンソールダッシュボードで [ロール] を選択します。
-
[ロールの作成] を選択します。
-
[信頼できるエンティティを選択] で、を選択しますAWS のサービス。[Use case] (ユースケース) で、[CodeDeploy] を選択します。CodeDeploy一覧にあるオプションから選択します。[Next] (次へ) を選択します。
AWSCodeDeployRole
マネージドポリシーはロールにアタッチ済みです。 -
[Next] (次へ) を選択します。
-
ロールの名前 (例:
CodeDeployRole
) を入力し、[ロールの作成] を選択します。
でアプリケーションを作成するには CodeDeploy
-
https://console.aws.amazon.com/codedeploy CodeDeploy
でコンソールを開きます。 -
[アプリケーション] ページが表示されない場合は、AWS CodeDeploy メニューで [アプリケーション] を選択します。
-
[Create application] を選択します。
-
[アプリケーション名] に、「
MyDemoApplication
」と入力します。 -
[コンピューティングプラットフォーム] で [EC2/オンプレミス] を選択します。
-
[Create application] を選択します。
でデプロイグループを作成するには CodeDeploy
-
アプリケーションが表示されるページで、[Create deployment group (デプロイグループの作成)] を選択します。
-
[Deployment group name] (デプロイグループ名) に「
MyDemoDeploymentGroup
」と入力します。 -
[Service role] (サービスロール) で、先ほど作成したサービスロールを選択します。少なくとも、「サービスロールの作成」に記載されている信頼とアクセス権限を持つ、AWS CodeDeploy信頼するサービスロールを使用する必要があります CodeDeploy。サービスロール ARN を取得するには、「サービスロール ARN の取得 (コンソール)」を参照してください。
-
[Deployment type] (デプロイタイプ) で、[In-place] (インプレース) を選択します。
-
[環境設定] で、[Amazon EC2 インスタンス] を選択します。[名前] を [キー] フィールドに入力し、[値] フィールドに
MyCodePipelineDemo
を入力します。重要 [Name (名前)] キーには、EC2 インスタンスの作成時にインスタンスに割り当てたのと同じ値を選択する必要があります。インスタンスに
MyCodePipelineDemo
以外のタグを付けた場合は、ここでもそのタグを使用してください。 -
AWSSystems Manager によるエージェント設定で、[今すぐアップデートをスケジュールする] を選択します。これにより、インスタンスにエージェントがインストールされます。Windows インスタンスはすでに SSM エージェントを使用して設定されており、 CodeDeploy 今後はエージェントを使用して更新されます。
-
[デプロイ設定] で
CodeDeployDefault.OneAtaTime
を選択します。 -
[ロードバランサー] で、[ロードバランシングの有効化] ボックスが選択されていないことを確認してください。この例では、ロードバランサーを設定したり、ターゲットグループを選択したりする必要はありません。チェックボックスの選択を解除すると、ロードバランサーのオプションが表示されません。
-
[詳細設定] セクションでは、既定のままにしておきます。
-
[Create deployment group] (デプロイグループの作成) を選択します。
ステップ 4: で最初のパイプラインを作成する CodePipeline
チュートリアルのこの部分では、パイプラインを作成します。サンプルは、パイプラインを通して自動的に実行されます。
CodePipeline 自動リリースプロセスを作成するには
にサインインしてAWS Management Console、http://console.aws.amazon.com/codesuite/codepipeline/home CodePipeline
でコンソールを開きます。 -
[ようこそ] ページ、[Getting started (開始方法)] ページ、または [パイプライン] ページで、[パイプラインの作成] を選択します。
-
[ステップ 1: パイプラインの設定を選択する] の [パイプライン名] に「
MyFirstPipeline
」と入力します。注記 パイプラインに別の名前を選択した場合は、このチュートリアルの残りの部分で
MyFirstPipeline
の代わりにその名前を使用してください。パイプラインを作成したら、その名前を変更することはできません。パイプラインの名前にはいくつかの制限がある場合があります。詳細については、「AWS CodePipeline のクォータ」を参照してください。 -
[Service role (サービスロール)] で、次のいずれかの操作を行います。
-
New service role を選択して、IAM CodePipeline で新しいサービスロールの作成を許可します。
-
IAM で作成済みのサービスロールを使用するには、[Existing service role (既存のサービスロール)] を選択します。[ロール名] で、リストからサービスロールを選択します。
-
-
[詳細設定] をデフォルト設定のままにし、[次へ] を選択します。
-
[Step 2: Add source stage (ステップ 2: ソースステージの追加)] ページの [ソースプロバイダ] で、[Amazon S3] を選択します。[バケット] に、「ステップ 1: アプリケーションの S3 バケットを作成する」で作成した S3 バケットの名前を入力します。S3 オブジェクトキーで、ファイルパスの有無にかかわらずオブジェクトキーを入力し、必ずファイル拡張子を含めます。たとえば、
SampleApp_Windows.zip
の場合、次の例に示すように、サンプルファイル名を入力します。SampleApp_Windows.zip
[次のステップ] を選択します。
[Change detection options] で、デフォルト値のままにします。Amazon CloudWatch Events CodePipeline を使用して、ソースバケットの変更を検出できます。
[Next] (次へ) を選択します。
-
[Step 3: Add build stage] (ステップ 3: ビルドステージを追加する) で、[Skip build stage] (ビルドステージのスキップ) を選択し、もう一度 [スキップ] を選択して警告メッセージを受け入れます。[Next] (次へ) を選択します。
-
[Step 4: Add deploy stage (ステップ 4: デプロイステージの追加)] の [デプロイプロバイダ] で、[CodeDeploy ] を選択します。[リージョン] フィールドは、デフォルトで、AWS リージョンパイプラインと同じになります。[アプリケーション名] に
MyDemoApplication
を入力するか、更新ボタンを選択してリストからそのアプリケーション名を選択します。[デプロイグループ] に「MyDemoDeploymentGroup
」と入力するか、リストからデプロイグループを選択して [次へ] を選択します。注記 「Deploy」は、[ステップ 4: デプロイステージの追加] ステップで作成したステージにデフォルトで付けられる名前です。パイプラインの最初のステージに付けられる「Source」という名前も同様です。
-
[ステップ 5: 確認] で情報を確認し、[パイプラインの作成] を選択します。
-
パイプラインの実行が開始されます。 CodePipeline サンプルがデプロイの各 Amazon EC2 インスタンスにウェブページをデプロイしている間、進行状況と成功/失敗メッセージを表示できます。 CodeDeploy
お疲れ様でした。シンプルなパイプラインがに作成されました CodePipeline。パイプラインには 2 つのステージがあります。
-
[Source] という名前のソースステージ。このステージでは、S3 バケットに保存したバージョニング済みのサンプルアプリケーションの変更を検出し、これらの変更をパイプライン内にプルします。
-
[Deploy] ステージ。このステージでは、 CodeDeploy を使用して、これらの変更を EC2 インスタンスにデプロイします。
ここで、結果を確認します。
パイプラインが正常に実行されたことを確認するには
-
パイプラインの最初の進行状況を表示します。各ステージのステータスは、[まだ実行はありません] から [進行中] に変わり、その後、[Succeeded (成功)] または [Failed (失敗)] のいずれかに変わります。パイプラインの最初の実行は数分で完了します。
-
アクションのステータスに [Succeeded (成功)] が表示されたら、[ Deploy (デプロイ)] ステージのステータス領域で [Details (詳細)] を選択します。 CodeDeploy コンソールが開きます。
-
[デプロイグループ] タブの [Deployment lifecycle events (デプロイライフサイクルイベント)] の下で、インスタンス ID を選択します。これにより、EC2 コンソールが開きます。
-
[Description] タブの [Public DNS] でアドレスをコピーし、ウェブブラウザーのアドレスバーに貼り付けます。S3 バケットにアップロードしたサンプルアプリケーションのインデックスページを表示します。
S3 バケットにアップロードしたサンプルアプリケーションのウェブページが表示されます。
ステージ、アクション、パイプラインの仕組みの詳細については、「CodePipeline コンセプト」を参照してください。
(オプション) ステップ 5: 別のステージをパイプラインに追加する
次に、別のステージをパイプラインに追加し、 CodeDeploy を使用してステージングサーバーから本稼働サーバーにデプロイできるようにします。まず、 CodePipelineDemoApplication に別のデプロイグループを作成します CodeDeploy。その後、このデプロイグループを使用するアクションを含むステージを追加します。別のステージを追加するには、 CodePipeline コンソールまたはを使用して、JSON ファイルのパイプライン構造を取得し、手動で編集します。その後、update-pipelineコマンドを実行して、パイプラインの変更を更新します。AWS CLI
で 2 番目のデプロイグループを作成するには CodeDeploy
チュートリアルのこの部分では、2 番目のデプロイグループを作成しますが、以前と同じ Amazon EC2 インスタンスにデプロイします。このウォークスルーは、デモンストレーションのみを目的としています。意図的にエラーを表示する方法を示すために、意図的に失敗するように設計されています CodePipeline。
で 2 番目のデプロイグループを作成するには CodeDeploy
-
https://console.aws.amazon.com/codedeploy CodeDeploy
でコンソールを開きます。 -
[アプリケーション] を選択し、アプリケーションのリストで [
MyDemoApplication
] を選択します。 -
[デプロイグループ] タブを選択して、[Create deployment group (デプロイグループの作成)] を選びます。
-
[Create deployment group (デプロイグループの作成)] ページの [Deployment group name (デプロイグループ名)] に、2 番目のデプロイグループの名前 (たとえば、
CodePipelineProductionFleet
) を入力します。 -
[Service role] ( CodeDeploy サービスロールではない) で、最初のデプロイに使用したのと同じ CodePipeline サービスロールを選択します。
-
[Deployment type] (デプロイタイプ) で、[In-place] (インプレース) を選択します。
-
[環境設定] で、[Amazon EC2 インスタンス] を選択します。[名前] を [キー] ボックスから選択し、[値] ボックスから
MyCodePipelineDemo
をリストから選択します。[デプロイ設定] のデフォルト設定をそのままにします。 -
[デプロイ設定] で、[
CodeDeployDefault.OneAtaTime
] を選択します。 -
[Load Balancer (ロードバランサー)] で、[Enable load balancing (ロードバランシングの有効化)] をオフにします。
-
[Create deployment group] (デプロイグループの作成) を選択します。
パイプラインの別のステージとしてデプロイグループを追加する
別のデプロイグループが追加されたため、このデプロイグループを使用するステージを追加して、前に使用したのと同じ EC2 インスタンスにデプロイできます。 CodePipeline コンソールまたは AWS CLI を使用してこのステージを追加できます。
3 番目のステージを追加する (コンソール)
CodePipeline コンソールを使用して、新しいデプロイグループを使用する新しいステージを追加できます。このデプロイグループのデプロイ先は、すでに使用した EC2 インスタンスであるため、このステージのデプロイアクションは失敗します。
にサインインしてAWS Management Console、http://console.aws.amazon.com/codesuite/codepipeline/home CodePipeline
でコンソールを開きます。 -
[名前] で、作成したパイプラインの名前 MyFirstPipeline を選択します。
-
パイプライン詳細ページで、[編集] を選択します。
-
[Edit (編集)] ページで [+ Add stage (+ ステージの追加)] を選択して、[Deploy] ステージの直後にステージを追加します。
-
[Add stage (ステージの追加)] で、[Stage name (ステージ名)] に、
Production
を入力します。[Add stage (ステージの追加)] を選択します。 -
新しいステージで、[+ Add action group (+ アクショングループの追加)] を選択します。
-
[アクションの編集] の、[アクション名] に、
Deploy-Second-Deployment
を入力します。 アクションプロバイダーの [デプロイ] で、を選択しますCodeDeploy。 -
パイプラインの作成時と同様に、 CodeDeploy セクションの [Application name] (アプリケーション名) で、ドロップダウンリストから選択します。
MyDemoApplication
[デプロイグループ] で、先ほど作成したデプロイグループCodePipelineProductionFleet
を選択します。[入力アーティファクト] で、ソースアクションから入力アーティファクトを選択します。[Save] (保存) を選択します。 -
[Edit (編集)] ページで [Save (保存)] を選択します。[パイプラインの変更を保存] で、[Save (保存)] を選択します。
-
新しいステージがパイプラインに追加されていますが、パイプラインの別の実行をトリガーした変更がないため、[まだ実行はありません] というステータスが表示されます。最新のリビジョンを手動で再度実行して、編集されたパイプラインの実行度を確認する必要があります。パイプラインの詳細ページで、[Release change (リリースの変更)] を選択し、プロンプトが表示されたら [Release (リリース)] を選択します。これにより、ソースアクションで指定した各ソース場所における最新のリビジョンがパイプラインで実行されます。
または、AWS CLI を使用してパイプラインを再実行するには、ローカル Linux、macOS、または Unix マシンのターミナルから、またはローカル Windows マシンのコマンドプロンプトから、パイプラインの名前を指定して start-pipeline-execution コマンドを実行します。これにより、ソースバケット内のアプリケーションの 2 回目の実行がパイプラインで実行されます。
aws codepipeline start-pipeline-execution --name MyFirstPipeline
このコマンドは
pipelineExecutionId
オブジェクトを返します。 -
CodePipeline コンソールに戻り、パイプラインのリストで、MyFirstPipelineビューページを開くを選択します。
パイプラインには、3 つのステージがあり、それらの各ステージのアーティファクトの状態が示されます。パイプラインがすべてのステージを実行するまでに最大 5 分かかることがあります。前回と同じように、最初の 2 つのステージではデプロイが成功しますが、[Production (本番稼働用)] ステージでは [Deploy-Second-Deployment (2 番目のデプロイをデプロイ)] アクションが失敗したことが示されます。
-
[Deploy-Second-Deployment] アクションで、[Details] を選択します。 CodeDeploy デプロイのページにリダイレクトされます。この場合、最初のインスタンスグループがすべての EC2 インスタンスにデプロイされ、2 番目のデプロイグループ用のインスタンスが残っていないために失敗しています。
注記 この失敗は、パイプラインのステージにエラーがある場合にどうなるかを示すために、意図的に起こしたものです。
3 番目のステージを追加する (CLI)
AWS CLI を使用してステージをパイプラインに追加するのは、コンソールを使用するよりも複雑ですが、パイプラインの構造が見やすくなります。
パイプラインの 3 番目のステージを作成するには
-
ローカル 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": "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 } }
-
この構造をコピーしてプレーンテキストエディタに貼り付け、ファイルを
pipeline.json
として保存します。便利なように、aws codepipeline コマンドを実行する同じディレクトリにこのファイルを保存します。注記 以下のように、get-pipeline コマンドを使用して、パイプ処理で JSON をファイルに渡すことができます。
aws codepipeline get-pipeline --name
MyFirstPipeline
>pipeline.json
-
[ Deploy (デプロイ)] ステージセクションをコピーし、最初の 2 つのステージの後に貼り付けます。これはデプロイステージであるため、[ Deploy (デプロイ)] ステージと同様に、3 番目のステージのテンプレートとして使用します。
-
ステージの名前とデプロイグループの詳細を変更します。
以下の例では、[Deploy] ステージの後に 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 } ] } -
get-pipeline コマンドを使用して取得したパイプライン構造を使用している場合、JSON ファイルから
metadata
行を削除する必要があります。それ以外の場合は、update-pipeline コマンドで使用することはできません。"metadata": { }
行と、"created"
、"pipelineARN"
、"updated"
フィールドを削除します。例えば、構造から以下の行を削除します。
"metadata": { "pipelineArn": "arn:aws:codepipeline:
region
:account-ID
:pipeline-name
", "created": "date
", "updated": "date
" }ファイルを保存します。
-
以下のようにパイプライン JSON ファイルを指定して、update-pipeline コマンドを実行します。
aws codepipeline update-pipeline --cli-input-json file://pipeline.json
このコマンドは、更新されたパイプラインの構造全体を返します。
重要 ファイル名の前に必ず
file://
を含めてください。このコマンドでは必須です。 -
パイプラインの名前を指定して、start-pipeline-execution コマンドを実行します。これにより、ソースバケット内のアプリケーションの 2 回目の実行がパイプラインで実行されます。
aws codepipeline start-pipeline-execution --name MyFirstPipeline
このコマンドは
pipelineExecutionId
オブジェクトを返します。 -
CodePipeline コンソールを開き、MyFirstPipelineパイプラインのリストから選択します。
パイプラインには、3 つのステージがあり、それらの各ステージのアーティファクトの状態が示されます。パイプラインがすべてのステージを実行するまでに最大 5 分かかることがあります。前回と同じように、最初の 2 つのステージではデプロイが成功しますが、[Production] ステージでは [Deploy-Second-Deployment] アクションが失敗したことが示されます。
-
[Deploy-Second-Deployment] アクションで、[Details] を選択すると、その失敗の詳細が表示されます。 CodeDeploy デプロイの詳細ページにリダイレクトされます。この場合、最初のインスタンスグループがすべての EC2 インスタンスにデプロイされ、2 番目のデプロイグループ用のインスタンスが残っていないために失敗しています。
注記 この失敗は、パイプラインのステージにエラーがある場合にどうなるかを示すために、意図的に起こしたものです。
(オプション) ステップ 6: ステージ間の移行を無効/有効にする CodePipeline
パイプラインのステージ間の移行を有効化または無効化することができます。ステージ間の移行を無効にすると、ステージ間の移行を手動で制御できるようになります。たとえば、パイプラインの最初の 2 つのステージを実行するが、本番環境にデプロイする準備ができるまで、または問題のトラブルシューティング中か、そのステージが失敗するまで、3 番目のステージへの移行を無効化します。
CodePipeline パイプラインのステージ間の移行を無効/有効にするには
-
CodePipeline コンソールを開き、MyFirstPipelineパイプラインのリストから選択します。
-
パイプラインの詳細ページで、第 2 ステージ (デプロイ) と前のセクションで追加した 3 番目のステージ (プロダクション) の間の [移行を無効にする] ボタンを選択します。
-
[移行を無効にする] で、ステージ間の移行を無効にする理由を入力し、[無効化] を選択します。
ステージ間の矢印では、アイコンと色の変化、および、[移行を有効にする] ボタンが表示されます。
-
サンプルをもう一度 S3 バケットにアップロードします。バケットのバージョニングが有効になっているため、この変更によってパイプラインが開始します。詳細については、「Upload the sample application」を参照してください。
-
パイプラインの詳細ページに戻り、ステージの状態を監視します。パイプラインビューでは、最初の 2 つのステージで進行状況が示されて成功に変わりますが、3 番目のステージで変更はありません。このプロセスには数分かかることがあります。
-
2 つのステージの間の [移行を有効にする] ボタンを選択して、遷移を有効にします。[Enable transition] ダイアログボックスで、[Enable] を選択します。3 番目のステージの実行は数分で開始し、パイプラインの最初の 2 つのステージですでに実行されているアーティファクトの処理を試みます。
注記 この 3 番目のステージを成功させるには、 CodePipelineProductionFleet 遷移を有効にする前にデプロイグループを編集し、アプリケーションのデプロイ先として別の一連の EC2 インスタンスを指定します。そのための方法の詳細については、「デプロイグループの設定を変更する」を参照してください。追加の EC2 インスタンスを作成すると、追加のコストが発生する場合があります。
ステップ 7: リソースをクリーンアップする
チュートリアル: 4 ステージのパイプラインを作成する 用にこのチュートリアルで作成したリソースの一部を使用することができます。たとえば、 CodeDeploy アプリケーションとデプロイは再利用できます。ビルドアクションは、クラウド上の完全マネージド型のビルドサービスである CodeBuild、などのプロバイダで設定できます。また、Jenkins など、ビルドサーバーまたはシステムと備えたプロバイダを使用するビルドアクションを設定することもできます。
ただし、これらのチュートリアルの完了後、これらのリソースに対する継続利用料金が発生しないよう、使用したパイプラインおよびリソースを削除する必要があります。最初にパイプラインを削除し、 CodeDeploy 次にアプリケーションとそれに関連付けられている Amazon EC2 インスタンスを削除します。
このチュートリアルで使用されているリソースをクリーンアップするには
-
CodePipeline リソースをクリーンアップするには、の「パイプラインの削除」の手順に従ってくださいAWS CodePipeline。
-
リソースをクリーンアップするには、「 CodeDeploy リソースをクリーンアップするには (コンソール)」の手順に従います。
-
S3 バケットを削除するには、「バケットを削除するか空にする 」の手順に従います。追加のパイプラインを作成しない場合は、パイプラインのアーティファクトの保存用に作成した S3 バケットを削除します。このバケットの詳細については、「CodePipeline コンセプト」を参照してください。