更新环境 - AWS Proton

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

更新环境

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

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

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

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

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

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

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

可以使用 4 种模式更新环境,如以下列表中所述。使用时 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"

取消正在进行的环境部署

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

取消更新部署时, 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" } }