サービスパイプラインを更新する - AWS Proton

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

サービスパイプラインを更新する

ここでは、AWS Proton サービスパイプラインの更新方法とその更新のキャンセル方法を説明します。

サービスパイプラインはサービスに属します。パイプラインインスタンスを作成または削除できるのは、サービスの作成および削除アクションのコンテキスト内のみに限られます。

サービスパイプラインを更新する場合、以下の 4 つのモードがあります。AWS CLI を使用する際には deployment-type フィールドでモードを定義します。コンソールを使用する場合、これらのモードは [Edit pipeline (パイプラインの編集)] と [Update to recommended version (推奨バージョンに更新)] にマップされます。

NONE

このモードでは、デプロイは発生しません。リクエストしたメタデータパラメータのみが更新されます。

CURRENT_VERSION

このモードでは、サービスパイプラインがデプロイされ、指定した新しい仕様に従って更新されます。リクエストしたパラメータのみが更新されます。この deployment-type を使用する場合、マイナーバージョンまたはメジャーバージョンのパラメータを含めないでください。

MINOR_VERSION

このモードでは、デフォルトで、サービスパイプラインは、使用中の現行メジャーバージョンのパブリッシュされた推奨 (最新の) マイナーバージョンでデプロイされ、更新されます。また、使用中の現在のメジャーバージョンについて別のマイナーバージョンを指定することもできます。

MAJOR_VERSION

このモードでは、デフォルトで、サービスパイプラインは、パブリッシュされた推奨 (最新の) メジャーバージョンとマイナーバージョンでデプロイされ、更新されます。使用中のメジャーバージョンやマイナーバージョン (オプション) よりも高いメジャーバージョンも指定できます。

deploymentStatusIN_PROGRESS であれば、サービスパイプラインの更新デプロイをキャンセルできます。AWS Proton はデプロイをキャンセルしようとします。正常にキャンセルされる保証はありません。

更新のデプロイをキャンセルすると、AWS Proton は、次の手順に示すようにデプロイをキャンセルしようとします。

  • デプロイの状態を「CANCELLING」に設定します。

  • 処理中のデプロイを停止し、IN_PROGRESS の際にデプロイによって作成された新しいリソースを削除します。

  • デプロイの状態を「CANCELLED」に設定します。

  • リソースの状態をデプロイが開始される前の状態に戻します。

サービスパイプラインのデプロイをキャンセルする方法の詳細については、『AWS Proton API リファレンス』の「CancelServicePipelineDeployment」を参照してください。

コンソールまたは AWS CLI を使用して、更新をデプロイするか、または更新のデプロイをキャンセルします。

AWS Management Console

以下で説明する手順に従って、コンソールでサービスパイプラインを更新します。

  1. AWS Proton コンソールで、[Services (サービス)] を選択します。

  2. サービスの一覧で、更新したいパイプラインを含むサービスの左側にあるラジオボタンを選択します。

  3. サービスの詳細ページには、[Overview (概要)] と [Pipeline (パイプライン)] という 2 つのタブがあります。[Pipeline (パイプライン)] を選択します。

  4. 仕様を更新したい場合、[Edit Pipeline (パイプラインの編集)] を選択して各フォームに必要な値を入力し、最終フォームが完了するまで [Next (次へ)] を選択してから [Update Pipeline (パイプラインの更新)] を選択します。

    新しいバージョンにアップデートしたい場合にパイプラインテンプレートで新しいバージョンが利用可能であることを示す情報アイコンが表示されていたら、新しいテンプレートバージョンの名前を選択します。

    1. [Update to recommended version (推奨バージョンに更新)] を選択します。

    2. 各フォームに必要な値を入力し、最終フォームが完了するまで [Next (次へ)] を選択し、[Update (更新)] を選択します。

AWS CLI

次の CLI のコマンドとレスポンスの例に示すように、サービスパイプラインを更新して新しいマイナーバージョンにします。

修正した spec でサービスパイプラインを更新する際には、"${Proton::CURRENT_VAL}" を使用して spec に値が存在する場合に元の spec を保存するパラメータ値を指定できます。get-service で説明するように、spec を使用してサービスパイプラインの元の サービスデータを表示する を表示します。

以下の例は、"${Proton::CURRENT_VAL}" での spec の使用方法を示します。

仕様:

proton: ServiceSpec pipeline: my_sample_pipeline_optional_input: "${Proton::CURRENT_VAL}" my_sample_pipeline_required_input: "${Proton::CURRENT_VAL}" instances: - name: "my-instance" environment: "simple-env" spec: my_sample_service_instance_optional_input: "${Proton::CURRENT_VAL}" my_sample_service_instance_required_input: "${Proton::CURRENT_VAL}" - name: "my-other-instance" environment: "simple-env" spec: my_sample_service_instance_required_input: "789"

コマンド: 更新する

$ aws proton update-service-pipeline \ --service-name "simple-svc" \ --spec "file://service-spec.yaml" \ --template-major-version "1" \ --template-minor-version "1" \ --deployment-type "MINOR_VERSION"

レスポンス:

{ "pipeline": { "arn": "arn:aws:proton:region-id:123456789012:service/simple-svc/pipeline/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "createdAt": "2021-04-02T21:29:59.962000+00:00", "deploymentStatus": "IN_PROGRESS", "lastDeploymentAttemptedAt": "2021-04-02T21:39:28.991000+00:00", "lastDeploymentSucceededAt": "2021-04-02T21:29:59.962000+00:00", "spec": "proton: ServiceSpec\n\npipeline:\n my_sample_pipeline_optional_input: \"abc\"\n my_sample_pipeline_required_input: \"123\"\n\ninstances:\n - name: \"my-instance\"\n environment: \"MySimpleEnv\"\n spec:\n my_sample_service_instance_optional_input: \"def\"\n my_sample_service_instance_required_input: \"456\"\n - name: \"my-other-instance\"\n environment: \"MySimpleEnv\"\n spec:\n my_sample_service_instance_required_input: \"789\"\n", "templateMajorVersion": "1", "templateMinorVersion": "0", "templateName": "svc-simple" } }

コマンド: ステータスを取得して確認する

$ aws proton get-service \ --name "simple-svc"

レスポンス:

{ "service": { "arn": "arn:aws:proton:region-id:123456789012:service/simple-svc", "branchName": "main", "createdAt": "2021-04-02T21:29:59.962000+00:00", "lastModifiedAt": "2021-04-02T21:30:54.364000+00:00", "name": "simple-svc", "pipeline": { "arn": "arn:aws:proton:region-id:123456789012:service/simple-svc/pipeline", "createdAt": "2021-04-02T21:29:59.962000+00:00", "deploymentStatus": "SUCCEEDED", "lastDeploymentAttemptedAt": "2021-04-02T21:39:28.991000+00:00", "lastDeploymentSucceededAt": "2021-04-02T21:39:28.991000+00:00", "spec": "proton: ServiceSpec\n\npipeline:\n my_sample_pipeline_optional_input: \"abc\"\n my_sample_pipeline_required_input: \"123\"\n\ninstances:\n - name: \"instance-one\"\n environment: \"simple-env\"\n spec:\n my_sample_service_instance_optional_input: \"def\"\n my_sample_service_instance_required_input: \"456\"\n - name: \"my-other-instance\"\n environment: \"simple-env\"\n spec:\n my_sample_service_instance_required_input: \"789\"\n", "templateMajorVersion": "1", "templateMinorVersion": "1", "templateName": "svc-simple" }, "repositoryConnectionArn": "arn:aws:codestar-connections:region-id:123456789012:connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "repositoryId": "repo-name/myorg-myapp", "spec": "proton: ServiceSpec\n\npipeline:\n my_sample_pipeline_optional_input: \"abc\"\n my_sample_pipeline_required_input: \"123\"\n\ninstances:\n - name: \"instance-one\"\n environment: \"simple-env\"\n spec:\n my_sample_service_instance_optional_input: \"def\"\n my_sample_service_instance_required_input: \"456\"\n - name: \"my-other-instance\"\n environment: \"simple-env\"\n spec:\n my_sample_service_instance_required_input: \"789\"\n", "status": "ACTIVE", "templateName": "svc-simple" } }
AWS Management Console

次の手順に示すように、コンソールでサービスパイプラインのデプロイをキャンセルします。

  1. AWS Proton コンソールのサービスナビゲーションペインで [Services (サービス)] を選択します。

  2. サービスの一覧で、デプロイ更新をキャンセルしたいサービスの名前を選択します。

  3. 詳細ページで [Pipeline (パイプライン)] タブを選択します。

  4. 更新のデプロイステータスが [In progress (進行中)] の場合、サービスインスタンスの詳細ページで [Cancel deployment (デプロイをキャンセル)] を選択します。

  5. キャンセルを確認するメッセージが表示されます。[Cancel deployment (デプロイをキャンセル)] を選択します。

  6. 更新のデプロイステータスが [Cancelling (キャンセル中)] に変わり、キャンセルが完了すると [Cancelled (キャンセル済み)] に変わります。

AWS CLI

CLI のコマンドとレスポンスの例に示すように、マイナーバージョン 2 への IN_PROGRESS サービスパイプライン更新をキャンセルします。

この例で使用するテンプレートには待機条件が含まれており、更新のデプロイが成功する前にキャンセルが開始されます。

コマンド: キャンセルする

$ aws proton cancel-service-pipeline-deployment \ --service-name "simple-svc"

レスポンス:

{ "pipeline": { "arn": "arn:aws:proton:region-id:123456789012:service/simple-svc/pipeline", "createdAt": "2021-04-02T21:29:59.962000+00:00", "deploymentStatus": "CANCELLING", "lastDeploymentAttemptedAt": "2021-04-02T22:02:45.095000+00:00", "lastDeploymentSucceededAt": "2021-04-02T21:39:28.991000+00:00", "templateMajorVersion": "1", "templateMinorVersion": "1", "templateName": "svc-simple" } }

コマンド: ステータスを取得して確認する

$ aws proton get-service \ --name "simple-svc"

レスポンス:

{ "service": { "arn": "arn:aws:proton:region-id:123456789012:service/simple-svc", "branchName": "main", "createdAt": "2021-04-02T21:29:59.962000+00:00", "lastModifiedAt": "2021-04-02T21:30:54.364000+00:00", "name": "simple-svc", "pipeline": { "arn": "arn:aws:proton:region-id:123456789012:service/simple-svc/pipeline", "createdAt": "2021-04-02T21:29:59.962000+00:00", "deploymentStatus": "CANCELLED", "deploymentStatusMessage": "User initiated cancellation.", "lastDeploymentAttemptedAt": "2021-04-02T22:02:45.095000+00:00", "lastDeploymentSucceededAt": "2021-04-02T21:39:28.991000+00:00", "spec": "proton: ServiceSpec\n\npipeline:\n my_sample_pipeline_optional_input: \"abc\"\n my_sample_pipeline_required_input: \"123\"\n\ninstances:\n - name: \"instance-one\"\n environment: \"simple-env\"\n spec:\n my_sample_service_instance_optional_input: \"def\"\n my_sample_service_instance_required_input: \"456\"\n - name: \"my-other-instance\"\n environment: \"simple-env\"\n spec:\n my_sample_service_instance_required_input: \"789\"\n", "templateMajorVersion": "1", "templateMinorVersion": "1", "templateName": "svc-simple" }, "repositoryConnectionArn": "arn:aws:codestar-connections:region-id:123456789012:connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "repositoryId": "repo-name/myorg-myapp", "spec": "proton: ServiceSpec\n\npipeline:\n my_sample_pipeline_optional_input: \"abc\"\n my_sample_pipeline_required_input: \"123\"\n\ninstances:\n - name: \"instance-one\"\n environment: \"simple-env\"\n spec:\n my_sample_service_instance_optional_input: \"def\"\n my_sample_service_instance_required_input: \"456\"\n - name: \"my-other-instance\"\n environment: \"simple-env\"\n spec:\n my_sample_service_instance_required_input: \"789\"\n", "status": "ACTIVE", "templateName": "svc-simple" } }