View a markdown version of this page

更新环境 - AWS Proton

终止支持通知:2026 年 10 月 7 日, AWS 将终止对的支持。 AWS Proton 2026 年 10 月 7 日之后,您将无法再访问 AWS Proton 控制台或 AWS Proton 资源。您部署的基础设施将保持不变。有关更多信息,请参阅AWS Proton 服务弃用和迁移指南。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

更新环境

如果 AWS Proton 环境与环境账户连接相关联,请勿更新或添加用于更新或连接到环境账户连接的protonServiceRoleArn参数。

只有在满足以下两个条件时,您才能更新为新的环境账户连接:

  • 环境账户连接是在创建当前环境账户连接的同一环境账户中创建的。

  • 环境账户连接与当前环境相关联。

如果环境与环境账户连接不 关联,则不要 更新或包含 environmentAccountConnectionId 参数。

您可以更新 environmentAccountConnectionId 或 protonServiceRoleArn 参数和值。您无法同时更新两者。

如果您的环境使用自托管式预置,请不要 更新 provisioning-repository 参数并省略 environmentAccountConnectionId 和 protonServiceRoleArn 参数。

可以使用 4 种模式更新环境,如以下列表中所述。使用时 AWS CLI,该deployment-type字段定义模式。在使用控制台时,这些模式映射到操作下拉列表中的编辑、更新、更新次要和更新主要操作。

NONE

在该模式下,不会 进行部署。仅更新请求的元数据参数。

CURRENT_VERSION

在该模式下,将使用您提供的新规范部署和更新环境。仅更新请求的参数。在使用该 deployment-type 时,不要 包含次要或主要版本参数。

MINOR_VERSION

在该模式下,默认使用当前使用的主要版本的已发布推荐(最新)次要版本部署和更新环境。您也可以指定当前使用的主要版本的不同次要版本。

MAJOR_VERSION

在该模式下,默认使用当前模板的已发布推荐(最新)主要版本和次要版本部署和更新环境。您也可以指定高于正在使用的主要版本的不同主要版本和次要版本(可选)。

更新 AWS 托管配置环境

仅使用 CloudFormation预置的环境支持标准预置。

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

AWS 管理控制台
使用控制台更新一个环境,如以下步骤中所示。
  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" } }

更新自托管式预置环境

Self-managed 只有使用 Terraform 进行配置的环境才支持配置。

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

AWS 管理控制台
使用控制台更新一个环境,如以下步骤中所示。
  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"

取消正在进行的环境部署

如果已启用,则可以尝试取消环境更新部署IN_PROGRESS。deploymentStatus AWS Proton 尝试取消部署。不能 保证成功取消。

取消更新部署时,会 AWS Proton 尝试取消部署,如以下步骤所示。

With AWS-托管配置, AWS Proton 执行以下操作:
  • 将部署状态设置为 CANCELLING。

  • 停止正在进行的部署,并删除状态为 IN_PROGRESS 时部署创建的任何新资源。

  • 将部署状态设置为 CANCELLED。

  • 将资源状态恢复为开始部署之前的状态。

使用自我管理的配置, AWS Proton 执行以下操作:
  • 尝试关闭拉取请求,以防止将更改合并到存储库中。

  • 如果已成功关闭拉取请求,则将部署状态设置为 CANCELLED。

有关如何取消环境部署的说明,请参阅 AWS Proton API 参考CancelEnvironmentDeployment中的。

您可以使用控制台或 CLI 取消正在进行的环境。

AWS 管理控制台

使用控制台取消环境更新部署,如以下步骤中所示。

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