更新環境 - AWS Proton

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

更新環境

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

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

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

  • 它與目前環境相關聯。

如果環境不是與環境帳戶連線不要更新或包含environmentAccountConnectionId參數。

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

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

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

NONE

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

CURRENT_VERSION

在此模式下,環境會部署並使用您提供的新規格進行更新。僅更新請求的參數。Don't使用此參數時包括次要或主要版本參數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. 例如,若要變更描述。

        選擇 Edit (編輯)

      2. 請填寫表單,然後選擇表單下一頁

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

    2. 僅對中繼資料輸入進行更新。

      1. 選擇動作然後更新

      2. 請填寫表單,然後選擇表單Edit (編輯)

      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. 例如,若要變更描述。

        選擇 Edit (編輯)

      2. 填寫表單,然後選擇表單下一頁

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

    2. 僅對中繼資料輸入進行更新。

      1. 選擇動作然後更新

      2. 填寫表單,然後選擇表單Edit (編輯)

      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如果拉請求已成功關閉。

如需如何取消環境部署的詳細資訊,請參閱CancelEnvironmentDeployment中的AWS ProtonAPI 參考

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

AWS Management Console

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

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

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

  3. 如果您的更新部署狀態為In progress (正在進行)」中的環境詳細資訊頁面上,選擇動作然後Cancel 部署

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

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

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