

终止支持通知：2026 年 10 月 7 日， AWS 将终止对的支持。 AWS Proton 2026 年 10 月 7 日之后，您将无法再访问 AWS Proton 控制台或 AWS Proton 资源。您部署的基础架构将保持不变。有关更多信息，请参阅《[AWS Proton 服务弃用和迁移指南》](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html)。

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

# 更新环境
<a name="ag-env-update"></a>

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

只有在满足以下两个条件时，您才能更新为新的环境账户连接：
+ 环境账户连接是在创建当前环境账户连接的同一环境账户中创建的。
+ 环境账户连接与当前环境相关联。

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

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

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

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

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

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

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

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

**Topics**
+ [更新 AWS 托管配置环境](#ag-env-std-update)
+ [更新自托管式预置环境](#ag-env-pr-update)
+ [取消正在进行的环境部署](#ag-env-cancel)

## 更新 AWS 托管配置环境
<a name="ag-env-std-update"></a>

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

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

------
#### [ AWS 管理控制台 ]

**使用控制台更新一个环境，如以下步骤中所示。**

1. 

**选择以下 2 个步骤之一。**

   1. 

**在环境列表中。**

      1. 在 [AWS Proton 控制台](https://console.aws.amazon.com//proton/)中，选择**环境**。

      1. 在环境列表中，选择要更新的环境左侧的单选按钮。

   1. 

****在控制台环境详细信息页面中。****

      1. 在 [AWS Proton 控制台](https://console.aws.amazon.com//proton/)中，选择**环境**。

      1. 在环境列表中，选择要更新的环境名称。

1. 

**选择接下来的 4 个步骤之一以更新您的环境。**

   1. 

**进行不需要部署环境的编辑。**

      1. 例如，更改描述。

         选择**编辑**。

      1. 填写表单并选择**下一步**。

      1. 检查您的编辑内容并选择**更新**。

   1. 

**仅更新元数据输入。**

      1. 选择**操作**，然后选择**更新**。

      1. 填写表单并选择**编辑**。

      1. 填写表单并选择**下一步**，直至到达**审核**页面。

      1. 检查您的更新内容并选择**更新**。

   1. 

**将其环境模板更新为新的次要版本。**

      1. 选择**操作**，然后选择**更新次要**。

      1. 填写表单并选择**下一步**。

      1. 填写表单并选择**下一步**，直至到达**审核**页面。

      1. 检查您的更新内容并选择**更新**。

   1. 

**将其环境模板更新为新的主要版本。**

      1. 选择**操作**，然后选择**更新主要**。

      1. 填写表单并选择**下一步**。

      1. 填写表单并选择**下一步**，直至到达**审核**页面。

      1. 检查您的更新内容并选择**更新**。

------
#### [ 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"
    }
}
```

------

## 更新自托管式预置环境
<a name="ag-env-pr-update"></a>

仅使用 Terraform 预置的环境支持自托管式预置。

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

------
#### [ AWS 管理控制台 ]

**使用控制台更新一个环境，如以下步骤中所示。**

1. 

**选择以下 2 个步骤之一。**

   1. 

**在环境列表中。**

      1. 在 [AWS Proton 控制台](https://console.aws.amazon.com//proton/)中，选择**环境**。

      1. 在环境列表中，选择要更新的环境模板左侧的单选按钮。

   1. 

****在控制台环境详细信息页面中。****

      1. 在 [AWS Proton 控制台](https://console.aws.amazon.com//proton/)中，选择**环境**。

      1. 在环境列表中，选择要更新的环境名称。

1. 

**选择接下来的 4 个步骤之一以更新您的环境。**

   1. 

**进行不需要部署环境的编辑。**

      1. 例如，更改描述。

         选择**编辑**。

      1. 填写表单并选择**下一步**。

      1. 检查您的编辑内容并选择**更新**。

   1. 

**仅更新元数据输入。**

      1. 选择**操作**，然后选择**更新**。

      1. 填写表单并选择**编辑**。

      1. 填写表单并选择**下一步**，直至到达**审核**页面。

      1. 检查您的更新内容并选择**更新**。

   1. 

**将其环境模板更新为新的次要版本。**

      1. 选择**操作**，然后选择**更新次要**。

      1. 填写表单并选择**下一步**。

      1. 填写表单并选择**下一步**，直至到达**审核**页面。

      1. 检查您的更新内容并选择**更新**。

   1. 

**将其环境模板更新为新的主要版本。**

      1. 选择**操作**，然后选择**更新主要**。

      1. 填写表单并选择**下一步**。

      1. 填写表单并选择**下一步**，直至到达**审核**页面。

      1. 检查您的更新内容并选择**更新**。

------
#### [ 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"
       }
   }
   ```

1. 运行以下命令以获取并确认状态：

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

1. 查看发送的拉取请求 AWS Proton。
   + 如果您批准请求，则会进行预置。
   + 如果您拒绝请求，将取消创建环境。
   + 如果拉取请求超时，则不会完成创建环境。

1. 向提供配置状态 AWS Proton。

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

------

## 取消正在进行的环境部署
<a name="ag-env-cancel"></a>

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

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

**使用 AWS托管配置，执行以下 AWS Proton 操作：**
+ 将部署状态设置为 `CANCELLING`。
+ 停止正在进行的部署，并删除状态为 `IN_PROGRESS` 时部署创建的任何新资源。
+ 将部署状态设置为 `CANCELLED`。
+ 将资源状态恢复为开始部署之前的状态。

**使用自我管理配置， AWS Proton 可以执行以下操作：**
+ 尝试关闭拉取请求，以防止将更改合并到存储库中。
+ 如果已成功关闭拉取请求，则将部署状态设置为 `CANCELLED`。

有关如何取消环境部署的说明，请参阅 *AWS Proton API 参考[CancelEnvironmentDeployment](https://docs.aws.amazon.com/proton/latest/APIReference/API_CancelEnvironmentDeployment.html)*中的。

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

------
#### [ AWS 管理控制台 ]

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

1. 在 [AWS Proton 控制台](https://console.aws.amazon.com//proton/)中，在导航窗格中选择**环境**。

1. 在环境列表中，选择包含要取消的部署更新的环境名称。

1. 如果您的更新部署状态为**进行中**，请在环境详细信息页面中选择**操作**，然后选择**取消部署**。

1. 一个模态框提示您确认是否要取消。选择**取消部署**。

1. 您的更新部署状态设置为**正在取消**，然后设置为**已取消**以完成取消。

------
#### [ AWS CLI ]

**使用取消 AWS Proton AWS CLI 将 IN\$1PROGRESS 环境更新部署到新的次要版本 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"
    }
}
```

------