更新服務管道 - AWS Proton

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

更新服務管道

了解如何更新AWS Proton服務管道並取消更新。

服務管線屬於服務。您只能在服務建立和刪除動作的前後關聯內建立刪除管線。

更新服務管線有四種模式,如下列清單所述。使用時AWS CLI,deployment-type欄位會定義模式。當您使用主控台時,這些模式會對應至 「編輯管線」 和「更新至建議的版本」。

NONE

在此模式中,會發生部署。只會更新要求的中繼資料參數。

CURRENT_VERSION

在此模式中,服務管線會部署並使用您提供的新規格進行更新。只更新了請求參數。使用此參數時,請勿包含次要或主要版本參數deployment-type

MINOR_VERSION

在此模式下,依預設,服務管線會以目前使用的主要版本的已發佈建議 (最新) 次要版本進行部署和更新。您也可以指定目前正在使用的主要版本的不同次要版本。

MAJOR_VERSION

在此模式下,依預設,服務管線會以目前範本的已發佈、建議 (最新) 主要和次要版本進行部署和更新。您也可以指定高於使用中的主要版本和次要版本 (選用) 的不同主要版本。

如果deploymentStatus是,您可以嘗試取消服務管線更新部署IN_PROGRESS。 AWS Proton嘗試取消部署。不能保證取消成功。

取消更新部署時,會AWS Proton嘗試取消部署,如下列步驟所列。

  • 將部署狀態設定為CANCELLING

  • 停止處理中的部署,並刪除部署在時間建立的所有新資源IN_PROGRESS

  • 將部署狀態設定為CANCELLED

  • 將資源的狀態還原為開始部署之前的狀態。

如需取消服務管線部署的詳細資訊,請參閱 AWS ProtonAPI 參考CancelServicePipelineDeployment中的。

使用主控台或AWS CLI進行更新或取消更新部署。

AWS Management Console

使用主控台更新服務管線,如下列步驟所述。

  1. AWS Proton主控台中,選擇 [服務]。

  2. 在服務清單中,請選擇您要更新的服務名稱。

  3. 服務詳細資訊頁面上有兩個標籤:「概觀」和「管線」。選擇「管線」。

  4. 如果您想要更新規格,請選擇 [編輯管線] 並填寫每個表單,然後選擇 [下一步],直到您完成最終表單為止,然後選擇 [更新管道]。

    如果您想要更新為新版本,而且在 Pipeline 範本中有一個資訊圖示指出新版本可用,請選擇新範本版本的名稱。

    1. 選擇「更新至建議版本」。

    2. 填寫每份表格,然後選擇「下一步」,直到您完成最終表格並選擇「更新」。

AWS CLI

服務管線更新為新的次要版本,如下列 CLI 範例命令和回應所示。

當您使用已修改的服務管線來更新服務管線時spec,如果值存在於中spec,您可以使用"${Proton::CURRENT_VAL}"指示要保留原始參數值的參數值spec。用get-service於檢視服務管線spec的原始資料,如中所述檢視服務資料

以下範例示範如何"${Proton::CURRENT_VAL}"spec.

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主控台中,選擇功能窗格中的 [服務]。

  2. 在服務清單中,選擇您要取消的部署更新的管道名稱。

  3. 在服務詳細資訊頁面上,選擇 Pipeline (管道) 標籤

  4. 如果您的更新部署狀態為 [進行中],請在服務管線詳細資料頁面中選擇 [取消部署]。

  5. 模式要求您確認取消。選擇 [取消部署]。

  6. 您的更新部署狀態設定為「取」,然後設定為「取消」以完成取消。

AWS CLI

IN_PROGRESS 服務管線部署更新取消至次要版本 2,如下列 CLI 範例命令和回應所示。

等待條件包含在用於此範例的範本中,以便在更新部署成功之前開始取消。

命令:取消

$ 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" } }