編輯服務 - AWS Proton

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

編輯服務

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

  • 編輯服務說明。

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

編輯服務描述

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

AWS Management Console

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

在服務清單中。

  1. 在 中AWS Proton安慰,選擇服務

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

  3. 選擇 Edit (編輯)

  4. 在 中配置服務頁面,填寫表單,然後選擇下一頁

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

  6. 查看您的編輯並選擇儲存變更

位於服務詳細資訊頁面。

  1. 在 中AWS Proton安慰,選擇服務

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

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

  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. 選擇 Edit (編輯)

  4. (選擇性) 在配置服務頁面上,編輯服務名稱或說明,然後選擇下一頁

  5. 在「」設定自訂設定頁面中,選擇刪除以刪除服務執行個體並選擇加入新的執行個體以新增服務執行個體並填寫表單。

  6. 選擇 Next (下一步)。

  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"

下面的例子 CLIlist-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對於服務,如中所述檢視服務資料

以下列表顯示了如何使用"${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資源和標記