サービスを編集する - AWS Proton

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

サービスを編集する

AWS Proton サービスには、以下の編集を加えることができます。

  • サービスの説明を編集する

  • サービスインスタンスを追加や削除することでサービスを編集します。

サービスの説明を編集する

コンソールまたは AWS CLI を使用してサービスの説明を編集できます。

AWS Management Console

以下で説明する手順に従って、コンソールでサービスを編集します。

サービスのリストで次のように操作します。
  1. AWS Proton コンソールで、[Services (サービス)] を選択します。

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

  3. [Edit] (編集) を選択します。

  4. [Configure service (サービスを構成する)] ページでフォームに値を入力して [Next (次へ)] を選択します。

  5. [Configure custom settings (カスタム設定の構成)] ページで [Next (次へ)] を選択します。

  6. 編集内容を見直して [[Save changes (変更を保存)] を選択します。

サービスの詳細ページで、以下の操作をします。
  1. AWS Proton コンソールで、[Services (サービス)] を選択します。

  2. サービスの一覧で、編集したいサービスの名前を選択します。

  3. サービスの詳細ページで [Edit (編集)] を選択します。

  4. [Configure service (サービスを構成する)] ページでフォームに値を入力して [Next (次へ)] を選択します。

  5. [Configure custom settings (カスタム設定を構成する)] ページでフォームに値を入力して [Next (次へ)] を選択します。

  6. 編集内容を見直して [Save changes (変更を保存)] を選択します。

AWS CLI

次の CLI の例に示すように説明を編集します。

コマンド:

$ aws proton update-service \ --name "MySimpleService" \ --description "Edit by updating description"

レスポンス:

{ "service": { "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleService", "branchName": "main", "createdAt": "2021-03-12T22:39:42.318000+00:00", "description": "Edit by updating description", "lastModifiedAt": "2021-03-12T22:44:21.975000+00:00", "name": "MySimpleService", "repositoryConnectionArn": "arn:aws:codestar-connections:region-id:123456789012:connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "repositoryId": "my-repository/myorg-myapp", "status": "ACTIVE", "templateName": "fargate-service" } }

サービスインスタンスの追加や削除によってサービスを編集します。

AWS Proton サービスでは、編集した仕様を送信して、サービスインスタンスの追加や削除ができます。リクエストを成功させるためには、次の条件が満たされている必要があります。

  • 編集リクエストの送信時にサービスとパイプラインの編集や削除が行われていない。

  • 編集した仕様にサービスパイプラインや削除対象ではない既存のサービスインスタンスを変更する編集が行われていない。

  • 編集した仕様で、コンポーネントがアタッチされている既存のサービスインスタンスが削除されていない。このようなサービスインスタンスを削除するには、まずコンポーネントを更新してサービスインスタンスからデタッチする必要があります。コンポーネントの詳細については、「AWS Proton コンポーネント」を参照してください。

削除に失敗したインスタンスは、DELETE_FAILED 状態のサービスインすんタンスです。サービスの編集をリクエストすると、AWS Proton は、編集プロセスの一環として、削除に失敗したインスタンスを削除しようとします。いずれかのサービスインスタンスの削除に失敗した場合、コンソールまたは AWS CLI に表示されなくても、インスタンスに関連付けられたリソースがまだ残っている可能性があります。削除に失敗したインスタンスインフラストラクチャリソースを調べて、AWS Proton で削除できるようにクリーンアップします。

サービスのサービスインスタンスのクォータについては、「AWS Proton のクォータ」を参照してください。また、サービスの作成後に 1 つ以上のサービスインスタンスを維持する必要があります。更新プロセスで、AWS Proton は、既存のサービスインスタンスと、追加または削除する予定のインスタンスの数を数えます。削除に失敗したインスタンスもこの数に含まれるため、spec の編集時に考慮に入れる必要があります。

コンソールか AWS CLI で、サービスインスタンスの追加や削除を行ってください。

AWS Management Console

コンソールでサービスインスタンスを追加するか削除してサービスを編集します。

AWS Proton コンソール内

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

  2. 編集するサービスを選択します。

  3. [Edit (編集)] を選択します。

  4. (オプション) [Configure service (サービスを構成する)] ページで、サービス名または説明を編集して、ページの右下にある [Next (次へ)] を選択します。

  5. [Configure custom settings (カスタム設定の構成)] ページで [Delete (削除)] を選択してサービスインスタンスを削除し、[Add new instance (新しいインスタンスを追加)] を選択してサービスインスタンスを追加し、フォームに値を入力します。

  6. [Next (次へ)] をクリックします。

  7. 更新内容を確認して [Save changes (変更を保存)] を選択します。

  8. モーダルがサービスインスタンスの削除の確認を求めるメッセージを表示します。指示に従って操作し、[Yes, delete (はい、削除します)] を選択します。

  9. サービスの詳細ページに表示されるサービスのステータスを確認します。

AWS CLI

次の AWS CLI コマンドとレスポンスの例に示すように、編集した spec を含めてサービスインスタンスを追加や削除します。

CLI を使用する場合、spec で削除するサービスインスタンスを除外し、追加するサービスインスタンスと削除マークを付けていない既存のサービスインスタンスの両方を含める必要があります。

以下のリストは、編集前の spec と仕様によってデプロイされるサービスインスタンスのリストの例を示します。この仕様は、サービスの説明を編集するために前の例で使用されたものです。

仕様:

proton: ServiceSpec pipeline: my_sample_pipeline_optional_input: "abc" my_sample_pipeline_required_input: "123" instances: - name: "my-instance" environment: "simple-env" spec: my_sample_service_instance_optional_input: "def" my_sample_service_instance_required_input: "456" - name: "my-other-instance" environment: "simple-env" spec: my_sample_service_instance_required_input: "789"

次の CLI list-service-instances コマンドとレスポンスの例は、サービスインスタンスを追加または削除する前にアクティブなインスタンスを表示します。

コマンド:

$ aws proton list-service-instances \ --service-name "MySimpleService"

レスポンス:

{ "serviceInstances": [ { "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleService/service-instance/my-other-instance", "createdAt": "2021-03-12T22:39:42.318000+00:00", "deploymentStatus": "SUCCEEDED", "environmentName": "simple-env", "lastDeploymentAttemptedAt": "2021-03-12T22:39:43.109000+00:00", "lastDeploymentSucceededAt": "2021-03-12T22:39:43.109000+00:00", "name": "my-other-instance", "serviceName": "example-svc", "templateMajorVersion": "1", "templateMinorVersion": "0", "templateName": "fargate-service" }, { "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleService/service-instance/my-instance", "createdAt": "2021-03-12T22:39:42.318000+00:00", "deploymentStatus": "SUCCEEDED", "environmentName": "simple-env", "lastDeploymentAttemptedAt": "2021-03-12T22:39:43.160000+00:00", "lastDeploymentSucceededAt": "2021-03-12T22:39:43.160000+00:00", "name": "my-instance", "serviceName": "example-svc", "serviceTemplateArn": "arn:aws:proton:region-id:123456789012:service-template/fargate-service", "templateMajorVersion": "1", "templateMinorVersion": "0", "templateName": "fargate-service" } ] }

次のリストは、インスタンスの削除や追加に編集した spec を使用する例を示します。my-instance という名前の既存のインスタンスが削除され、yet-another-instance という名前の新しいインスタンスが作成されます。

仕様:

proton: ServiceSpec pipeline: my_sample_pipeline_optional_input: "abc" my_sample_pipeline_required_input: "123" instances: - name: "my-other-instance" environment: "simple-env" spec: my_sample_service_instance_required_input: "789" - name: "yet-another-instance" environment: "simple-env" spec: my_sample_service_instance_required_input: "789"

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

以下のリストは、spec で既存のサービスインスタンスを確実に残すようにパラメータ値の変更を含めない"${Proton::CURRENT_VAL}" を使用する方法を示します。

仕様:

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

以下に示すのは、サービスを編集するための CLI コマンドとリクエストの一覧です。

コマンド:

$ aws proton update-service --name "MySimpleService" \ --description "Edit by adding and deleting a service instance" \ --spec "file://spec.yaml"

レスポンス:

{ "service": { "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleService", "branchName": "main", "createdAt": "2021-03-12T22:39:42.318000+00:00", "description": "Edit by adding and deleting a service instance", "lastModifiedAt": "2021-03-12T22:55:48.169000+00:00", "name": "MySimpleService", "repositoryConnectionArn": "arn:aws:codestar-connections:region-id:123456789012:connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "repositoryId": "my-repository/myorg-myapp", "status": "UPDATE_IN_PROGRESS", "templateName": "fargate-service" } }

次の list-service-instances コマンドとレスポンスは、my-instance という名前の既存のインスタンスが削除され、yet-another-instance という名前の新しいインスタンスが作成されたことを確認します。

コマンド:

$ aws proton list-service-instances \ --service-name "MySimpleService"

レスポンス:

{ "serviceInstances": [ { "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleService/service-instance/yet-another-instance", "createdAt": "2021-03-12T22:39:42.318000+00:00", "deploymentStatus": "SUCCEEDED", "environmentName": "simple-env", "lastDeploymentAttemptedAt": "2021-03-12T22:56:01.565000+00:00", "lastDeploymentSucceededAt": "2021-03-12T22:56:01.565000+00:00", "name": "yet-another-instance", "serviceName": "MySimpleService", "templateMajorVersion": "1", "templateMinorVersion": "0", "templateName": "fargate-service" }, { "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleService/service-instance/my-other-instance", "createdAt": "2021-03-12T22:39:42.318000+00:00", "deploymentStatus": "SUCCEEDED", "environmentName": "simple-env", "lastDeploymentAttemptedAt": "2021-03-12T22:39:43.109000+00:00", "lastDeploymentSucceededAt": "2021-03-12T22:39:43.109000+00:00", "name": "my-other-instance", "serviceName": "MySimpleService", "templateMajorVersion": "1", "templateMinorVersion": "0", "templateName": "fargate-service" } ] }

サービスインスタンスを追加または削除した場合

サービスインスタンスの削除や追加のためにサービス編集を送信すると、AWS Proton では次のアクションが実行されます。

  • サービスを UPDATE_IN_PROGRESS に設定します。

  • サービスにパイプラインがある場合、そのステータスを IN_PROGRESS に設定してパイプラインアクションをブロックします。

  • 削除したいサービスインスタンスを DELETE_IN_PROGRESS に設定します。

  • サービスアクションをブロックします。

  • 削除対象のマークが付いたサービスインスタンスに対するアクションをブロックします。

  • 新しいサービスインスタンスを作成します。

  • 削除対象のリストにあるインスタンスを削除します。

  • 削除に失敗したインスタンスの削除を試みます。

  • 追加と削除が完了したら、サービスパイプライン (存在する場合) を再プロビジョニングし、サービスを ACTIVE に設定してサービスとパイプラインのアクションを有効にします。

AWS Proton は、次のように障害モードを再び制御しようとします。

  • 1 つ以上のサービスインスタンスの作成に失敗した場合、AWS Proton は、新しく作成されたすべてのサービスインスタンスのプロビジョニングを解除し、spec を前の状態に戻します。どのサービスインスタンスも削除されず、パイプラインはいかなる修正もされません

  • 1 つ以上のサービスインスタンスの削除に失敗した場合、AWS Proton は、削除されたインスタンスなしでパイプラインを再プロビジョニングします。spec は、追加されたインスタンスを含め、削除マークの付いたインスタンスを除外するように更新されます。

  • パイプラインのプロビジョニングに失敗した場合、ロールバックの試みはなされず、サービスとパイプラインの両方が失敗した更新状態を反映します。

タグ付けとサービスの編集

サービス編集の一部としてサービスインスタンスを追加すると、AWS マネージドタグが自動的に作成され、新しいインスタンスとプロビジョニングされたリソースに伝達されます。新しいタグを作成すると、それらのタグは新しいインスタンスにのみ適用されます。既存のサービスカスタマーマネージドタグも新しいインスタンスに伝播します。詳細については、「AWS Proton リソースとタグ付け」を参照してください。