更新環境 - AWS Proton

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

更新環境

如果 AWS Proton 環境與環境帳戶連線相關聯,請勿更新或包含 protonServiceRoleArn 參數來更新或連線至環境帳戶連線。

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

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

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

如果環境與環境帳戶連線相關聯,請勿更新或包含 environmentAccountConnectionId 參數。

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

如果您的環境使用自我管理佈建,請勿更新 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. 在環境清單中。
      1. AWS Proton 主控台中,選擇環境

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

    2. 在主控台環境詳細資訊頁面中。
      1. AWS Proton 主控台中,選擇環境

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

  2. 選擇接下來 4 個步驟中的 1 個來更新您的環境。
    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. 在環境清單中。
      1. AWS Proton 主控台中,選擇環境

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

    2. 在主控台環境詳細資訊頁面中。
      1. AWS Proton 主控台中,選擇環境

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

  2. 選擇接下來 4 個步驟中的 1 個來更新您的環境。
    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"

取消進行中的環境部署

如果 deploymentStatus為 .IN_PROGRESS AWS Proton attempts 以取消部署,您可以嘗試取消環境更新部署。不保證成功取消。

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

使用 AWS受管佈建時, 會 AWS Proton 執行下列動作:
  • 將部署狀態設定為 CANCELLING

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

  • 將部署狀態設定為 CANCELLED

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

使用自我管理佈建時, 會 AWS Proton 執行下列動作:
  • 嘗試關閉提取請求,以防止合併對儲存庫的變更。

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

如需如何取消環境部署的指示,請參閱 AWS Proton API 參考中的 CancelEnvironmentDeployment

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

AWS Management Console

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

  1. AWS Proton 主控台的導覽窗格中,選擇環境

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

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

  4. 模態會提示您確認是否要取消。選擇取消部署

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

AWS CLI

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

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

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

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