更新環境 - AWS Proton

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

更新環境

如果AWS Proton環境與環境帳戶連接相關聯,不要更新或包含protonServiceRoleArn用於更新或連接到環境帳戶連接的參數。

只有在下列兩項都成立時,您才能更新為新的環境帳戶連線:

  • 環境帳戶連線是在建立目前環境帳戶連線的相同環境帳戶中建立的。

  • > 環境帳戶連線與目前環境相關聯。

如果環境不是與環境帳戶連接相關聯,不要更新或包含environmentAccountConnectionId參數。

您可以更新environmentAccountConnectionId或者protonServiceRoleArn參數和值。您無法同時更新兩者。

如果您的環境使用自我管理佈建,不要更新provisioning-repository參數和忽略environmentAccountConnectionIdprotonServiceRoleArn參數。

更新環境有四種模式,如下列清單所述。使用時AWS CLI,該deployment-type字段定義模式。使用主控台時,這些模式會對應至編輯,更新,更新次要,以及主要更新從下拉式清單的動作動作

NONE

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

CURRENT_VERSION

在此模式下,環境會部署並使用您提供的新規格進行更新。只會更新要求的參數。不要使用此參數時包括次要或主要版本參數deployment-type

MINOR_VERSION

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

MAJOR_VERSION

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

更新一個AWS受管佈建環境

標準佈建僅由以下項目提供的環境支援AWS CloudFormation。

使用控制台或AWS CLI以更新您的環境。

AWS Management Console
如下列步驟所示,使用主控台更新環境。
  1. 選擇以下 2 個步驟之一。
    1. 在環境列表中。
      1. AWS Proton安慰,選擇環境

      2. 在環境清單中,選擇您要更新之環境左側的圓鈕。

    2. 在控制台環境詳細信息頁面中。
      1. AWS Proton安慰,選擇環境

      2. 在環境清單中,選擇您要更新之環境的名稱。

  2. 選擇接下來 4 個步驟中的一個來更新您的環境。
    1. 進行不需要環境部署的編輯。
      1. 例如,若要變更描述。

        選擇 編輯

      2. 填寫表格並選擇下一步

      3. 查看您的編輯並選擇更新

    2. 僅對中繼資料輸入進行更新。
      1. 選擇動作然後更新

      2. 填寫表格並選擇編輯

      3. 填寫表格並選擇下一步直到你到達評論頁面。

      4. 查看您的更新並選擇更新

    3. 更新其環境範本的新次要版本。
      1. 選擇動作然後更新次要

      2. 填寫表格並選擇下一步

      3. 填寫表格並選擇下一步直到你到達評論頁面。

      4. 查看您的更新並選擇更新

    4. 要更新其環境模板的新主要版本。
      1. 選擇動作然後主要更新

      2. 填寫表格並選擇下一步

      3. 填寫表格並選擇下一步直到你到達評論頁面。

      4. 查看您的更新並選擇更新

AWS CLI

使用AWS Proton AWS CLI將環境更新為新的次要版本。

執行下列命令來更新您的環境:

$ aws proton update-environment \ --name "MySimpleEnv" \ --deployment-type "MINOR_VERSION" \ --template-major-version "1" \ --template-minor-version "1" \ --proton-service-role-arn arn:aws:iam::123456789012:role/service-role/ProtonServiceRole \ --spec "file:///spec.yaml"

回應:

{ "environment": { "arn": "arn:aws:proton:region-id:123456789012:environment/MySimpleEnv", "createdAt": "2021-04-02T17:29:55.472000+00:00", "deploymentStatus": "IN_PROGRESS", "lastDeploymentAttemptedAt": "2021-04-02T17:48:26.307000+00:00", "lastDeploymentSucceededAt": "2021-04-02T17:29:55.472000+00:00", "name": "MySimpleEnv", "protonServiceRoleArn": "arn:aws:iam::123456789012:role/service-role/ProtonServiceRole", "templateMajorVersion": "1", "templateMinorVersion": "0", "templateName": "simple-env" } }

執行下列命令以取得並確認狀態:

$ aws proton get-environment \ --name "MySimpleEnv"

回應:

{ "environment": { "arn": "arn:aws:proton:region-id:123456789012:environment/MySimpleEnv", "createdAt": "2021-04-02T17:29:55.472000+00:00", "deploymentStatus": "SUCCEEDED", "environmentName": "MySimpleEnv", "lastDeploymentAttemptedAt": "2021-04-02T17:48:26.307000+00:00", "lastDeploymentSucceededAt": "2021-04-02T17:48:26.307000+00:00", "protonServiceRoleArn": "arn:aws:iam::123456789012:role/service-role/ProtonServiceRole", "spec": "proton: EnvironmentSpec\n\nspec:\n my_sample_input: hello\n my_other_sample_input: everybody\n", "templateMajorVersion": "1", "templateMinorVersion": "1", "templateName": "simple-env" } }

更新自我管理的佈建環境

只有使用 Terraform 佈建的環境才支援自我管理的佈建。

使用控制台或AWS CLI以更新您的環境。

AWS Management Console
如下列步驟所示,使用主控台更新環境。
  1. 選擇以下 2 個步驟之一。
    1. 在環境列表中。
      1. AWS Proton安慰,選擇環境

      2. 在環境清單中,選擇您要更新之環境範本左側的圓鈕。

    2. 在控制台環境詳細信息頁面中。
      1. AWS Proton安慰,選擇環境

      2. 在環境清單中,選擇您要更新之環境的名稱。

  2. 選擇接下來 4 個步驟中的一個來更新您的環境。
    1. 進行不需要環境部署的編輯。
      1. 例如,若要變更描述。

        選擇 編輯

      2. 填寫表格並選擇下一步

      3. 查看您的編輯並選擇更新

    2. 僅對中繼資料輸入進行更新。
      1. 選擇動作然後更新

      2. 填寫表格並選擇編輯

      3. 填寫表格並選擇下一步直到你到達評論頁面。

      4. 查看您的更新並選擇更新

    3. 更新其環境範本的新次要版本。
      1. 選擇動作然後更新次要

      2. 填寫表格並選擇下一步

      3. 填寫表格並選擇下一步直到你到達評論頁面。

      4. 查看您的更新並選擇更新

    4. 要更新其環境模板的新主要版本。
      1. 選擇動作然後主要更新

      2. 填寫表格並選擇下一步

      3. 填寫表格並選擇下一步直到你到達評論頁面。

      4. 查看您的更新並選擇更新

AWS CLI
使用AWS CLI將 Terraform 環境更新為具有自我管理佈建的新次要版本。
  1. 執行下列命令來更新您的環境:

    $ aws proton update-environment \ --name "pr-environment" \ --deployment-type "MINOR_VERSION" \ --template-major-version "1" \ --template-minor-version "1" \ --provisioning-repository "branch=main,name=myrepos/env-repo,provider=GITHUB" \ --spec "file://env-spec-mod.yaml"

    回應:

    { "environment": { "arn": "arn:aws:proton:region-id:123456789012:environment/pr-environment", "createdAt": "2021-11-18T21:09:15.745000+00:00", "deploymentStatus": "IN_PROGRESS", "lastDeploymentAttemptedAt": "2021-11-18T21:25:41.998000+00:00", "lastDeploymentSucceededAt": "2021-11-18T21:09:15.745000+00:00", "name": "pr-environment", "provisioningRepository": { "arn": "arn:aws:proton:region-id:123456789012:repository/github:myrepos/env-repo", "branch": "main", "name": "myrepos/env-repo", "provider": "GITHUB" }, "templateMajorVersion": "1", "templateMinorVersion": "0", "templateName": "pr-env-template" } }
  2. 執行下列命令以取得並確認狀態:

    $ aws proton get-environment \ --name "pr-environment"

    回應:

    { "environment": { "arn": "arn:aws:proton:region-id:123456789012:environment/pr-environment", "createdAt": "2021-11-18T21:09:15.745000+00:00", "deploymentStatus": "SUCCEEDED", "lastDeploymentAttemptedAt": "2021-11-18T21:25:41.998000+00:00", "lastDeploymentSucceededAt": "2021-11-18T21:25:41.998000+00:00", "name": "pr-environment", "provisioningRepository": { "arn": "arn:aws:proton:region-id:123456789012:repository/github:myrepos/env-repo", "branch": "main", "name": "myrepos/env-repo", "provider": "GITHUB" }, "spec": "proton: EnvironmentSpec\nspec:\n ssm_parameter_value: \"test\"\n ssm_another_parameter_value: \"update\"\n", "templateMajorVersion": "1", "templateMinorVersion": "1", "templateName": "pr-env-template" } }
  3. 檢閱由傳送的提取要求AWS Proton。

    • 如果您核准請求,則正在進行佈建。

    • 如果您拒絕請求,則會取消環境建立。

    • 如果提取請求逾時,則環境建立不完成。

  4. 將佈建狀態提供給AWS Proton。

    $ aws proton notify-resource-deployment-status-change \ --resource-arn "arn:aws:proton:region-id:123456789012:environment/pr-environment" \ --status "SUCCEEDED"

取消進行中的環境部署

您可以嘗試取消環境更新部署,如果deploymentStatusIN_PROGRESS。AWS Proton嘗試取消部署。成功取消不是保證。

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

同AWS-管理佈建,AWS Proton執行以下操作:
  • 將部署狀態設定為CANCELLING

  • 停止進行中的部署,並刪除部署在下列情況下建立的任何新資源IN_PROGRESS

  • 將部署狀態設定為CANCELLED

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

透過自我管理佈建,AWS Proton執行以下操作:
  • 嘗試關閉提取請求以防止將更改合併到存儲庫中。

  • 將部署狀態設定為CANCELLED如果拉請求已成功關閉。

如需如何取消環境部署的指示,請參閱CancelEnvironmentDeploymentAWS ProtonAPI 參考資料

您可以使用主控台或 CLI 取消進行中的環境。

AWS Management Console

使用主控台取消環境更新部署,如下列步驟所示。

  1. AWS Proton安慰,選擇環境在導航窗格中。

  2. 在環境清單中,選擇您要取消之部署更新之環境的名稱。

  3. 如果您的更新部署狀態為進行中,在「環境詳細資訊」頁面中,選擇動作然後取消部署

  4. 強制回應會提示您確認要取消。選擇取消部署

  5. 您的更新部署狀態設定為取消然後已取消完成取消。

AWS CLI

使用AWS Proton AWS CLI,以取消對新次要版本 2 的 IN_PROGRESS 環境更新部署。

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

執行下列命令以取消更新:

$ aws proton cancel-environment-deployment \ --environment-name "MySimpleEnv"

回應:

{ "environment": { "arn": "arn:aws:proton:region-id:123456789012:environment/MySimpleEnv", "createdAt": "2021-04-02T17:29:55.472000+00:00", "deploymentStatus": "CANCELLING", "lastDeploymentAttemptedAt": "2021-04-02T18:15:10.243000+00:00", "lastDeploymentSucceededAt": "2021-04-02T17:48:26.307000+00:00", "name": "MySimpleEnv", "protonServiceRoleArn": "arn:aws:iam::123456789012:role/service-role/ProtonServiceRole", "spec": "proton: EnvironmentSpec\n\nspec:\n my_sample_input: hello\n my_other_sample_input: everybody\n", "templateMajorVersion": "1", "templateMinorVersion": "1", "templateName": "simple-env" } }

執行下列命令以取得並確認狀態:」

$ aws proton get-environment \ --name "MySimpleEnv"

回應:

{ "environment": { "arn": "arn:aws:proton:region-id:123456789012:environment/MySimpleEnv", "createdAt": "2021-04-02T17:29:55.472000+00:00", "deploymentStatus": "CANCELLED", "deploymentStatusMessage": "User initiated cancellation.", "lastDeploymentAttemptedAt": "2021-04-02T18:15:10.243000+00:00", "lastDeploymentSucceededAt": "2021-04-02T17:48:26.307000+00:00", "name": "MySimpleEnv", "protonServiceRoleArn": "arn:aws:iam::123456789012:role/service-role/ProtonServiceRole", "spec": "proton: EnvironmentSpec\n\nspec:\n my_sample_input: hello\n my_other_sample_input: everybody\n", "templateMajorVersion": "1", "templateMinorVersion": "1", "templateName": "simple-env" } }