編輯服務 - AWS Proton

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

編輯服務

您可以對 AWS Proton 服務進行下列編輯。

  • 編輯服務描述。

  • 透過新增和移除服務執行個體來編輯服務。

編輯服務描述

您可以使用 主控台或 AWS CLI 編輯服務描述。

AWS Management Console

使用主控台編輯服務,如下列步驟所述。

在 服務清單中。
  1. AWS Proton 主控台中,選擇 服務

  2. 在服務清單中,選擇您要更新之服務左側的選項按鈕。

  3. 選擇編輯

  4. 設定服務頁面中,填寫表單並選擇下一步

  5. 設定自訂設定頁面中,選擇下一步

  6. 檢閱您的編輯,然後選擇儲存變更

在服務詳細資訊頁面中。
  1. AWS Proton 主控台中,選擇 服務

  2. 在服務清單中,選擇您要編輯的服務名稱。

  3. 在服務詳細資訊頁面中,選擇編輯

  4. 設定服務頁面中,填寫表單並選擇下一步

  5. 設定自訂設定頁面中,填寫表單並選擇下一步

  6. 檢閱您的編輯,然後選擇儲存變更

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. 在導覽窗格中,選擇服務

  2. 選取您要編輯的服務。

  3. 選擇編輯

  4. (選用) 在設定服務頁面上,編輯服務名稱或描述,然後選擇下一步

  5. 設定自訂設定頁面上,選擇刪除以刪除服務執行個體,然後選擇新增執行個體以新增服務執行個體並填寫表單。

  6. 選擇下一步

  7. 檢閱您的更新,然後選擇儲存變更

  8. 模態會要求您驗證服務執行個體的刪除。遵循指示並選擇是,刪除

  9. 在服務詳細資訊頁面上,檢視服務的狀態詳細資訊。

AWS CLI

新增和刪除已編輯 的服務執行個體spec,如下列 AWS CLI 範例命令和回應所示。

當您使用 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"

如果值存在於 中spec,您可以使用 "${Proton::CURRENT_VAL}"來指示要從原始 保留哪些參數值specget-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-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 會嘗試修復故障模式,如下所示。

  • 如果一或多個服務執行個體無法建立, 會 AWS Proton 嘗試取消佈建所有新建立的服務執行個體,並將 還原spec為先前的狀態。它不會刪除任何服務執行個體,也不會以任何方式修改管道。

  • 如果一個或多個服務執行個體無法刪除,請 AWS Proton 重新佈建管道,而沒有已刪除的執行個體。spec 已更新以包含新增的執行個體,並排除標記為刪除的執行個體。

  • 如果管道佈建失敗則不會嘗試轉返,並且服務和管道都會反映失敗的更新狀態。

標記和服務編輯

當您新增服務執行個體做為服務編輯的一部分時, AWS 受管標籤會傳播至 ,並針對新執行個體和佈建的資源自動建立。如果您建立新的標籤,這些標籤只會套用至新的執行個體。現有的服務客戶受管標籤也會傳播到新的執行個體。如需詳細資訊,請參閱AWS Proton 資源和標記