

终止支持通知：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)。

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

# 如何 AWS Proton 运作
<a name="ag-works"></a>

使用 AWS Proton，您可以配置*环境*，然后在这些环境中运行的*服务*。环境和服务分别基于您在 AWS Proton 版本化*模板*库中选择的环境和服务模板。

![\[描述如何为一组 AWS Proton 基础架构资源创建模板包的过程的示意图。\]](http://docs.aws.amazon.com/zh_cn/proton/latest/userguide/images/works.png)


 ![\[Red circle with the number 1 inside, typically used as a notification icon.\]](http://docs.aws.amazon.com/zh_cn/proton/latest/userguide/images/label-one.png)以管理员身份选择环境模板时，需要为必需的*输入参数*提供值。 AWS Proton

 ![\[Number 2 icon in a pink circle.\]](http://docs.aws.amazon.com/zh_cn/proton/latest/userguide/images/label-two.png) AWS Proton 使用环境模板和参数值来配置您的环境。

 ![\[Pink square icon with a white exclamation mark inside a circle.\]](http://docs.aws.amazon.com/zh_cn/proton/latest/userguide/images/label-three.png)作为开发人员或管理员，当您选择带有的服务模板时 AWS Proton，您需要为必需的输入参数提供值。您也可以选择一个环境以部署您的应用程序或服务。

 ![\[Number 4 in a red circle icon, commonly used to indicate a notification count.\]](http://docs.aws.amazon.com/zh_cn/proton/latest/userguide/images/label-four.png) AWS Proton 使用服务模板以及您的服务和选定的环境参数值来配置您的服务。

您提供输入参数的值以自定义您的模板，以在多个使用案例、应用程序或服务中重用。

为了实现该目的，您需要创建环境或服务模板捆绑包，并将它们分别上传到注册的环境或服务模板。

[模板包](ag-template-authoring.md#ag-template-bundles)包含配置环境或服务 AWS Proton 所需的一切。

在创建环境或服务模板时，您需要上传一个模板捆绑包，其中包含 AWS Proton 用于预置环境或服务的参数化基础设施即代码 (IaC) 文件。

在您选择环境或服务模板以创建或更新环境或服务时，您需要提供模板捆绑包 IaC 文件参数的值。

**Topics**
+ [AWS Proton 物体](ag-works-objects.md)
+ [如何配置 AWS Proton 基础架构](ag-works-prov-methods.md)
+ [AWS Proton 术语](terminology.md)

# AWS Proton 物体
<a name="ag-works-objects"></a>

下图显示了主要 AWS Proton 对象及其与其他对象 AWS 和第三方对象的关系。箭头表示数据流方向（依赖项的反方向）。

我们在图表后面提供了这些 AWS Proton 对象的简要描述和参考链接。

![\[该图说明了中的 AWS托管配置 AWS Proton\]](http://docs.aws.amazon.com/zh_cn/proton/latest/userguide/images/object-diagram.png)

+ **环境模板** - 可用于创建 AWS Proton 环境的环境模板版本集合。

  有关更多信息，请参阅[模板编写和捆绑包](ag-template-authoring.md)和[AWS Proton 模板](ag-templates.md)。
+ **环境模板版本** - 特定的环境模板版本。将 S3 存储桶或 Git 存储库中的*模板捆绑包*作为输入。该捆绑包指定了 AWS Proton 环境的基础设施即代码 (IaC) 和相关输入参数。

  有关更多信息，请参阅 [版本控制的模板](ag-template-versions.md)、[注册并发布模板](template-create.md) 和 [模板同步配置](ag-template-sync-configs.md)。
+ **环境** — AWS Proton 服务部署到的一组共享 AWS 基础架构资源和访问策略。 AWS 资源是通过使用特定参数值调用的环境模板版本来配置的。访问策略是在服务角色中提供的。

  有关更多信息，请参阅 [AWS Proton 环境](ag-environments.md)。
+ **服务模板** - 可用于创建 AWS Proton 服务的服务模板版本集合。

  有关更多信息，请参阅[模板编写和捆绑包](ag-template-authoring.md)和[AWS Proton 模板](ag-templates.md)。
+ **服务模板版本** - 特定的服务模板版本。将 S3 存储桶或 Git 存储库中的*模板捆绑包*作为输入。该捆绑包指定了基础设施即代码 (IaC) 和 AWS Proton 服务的相关输入参数。

  服务模板版本还根据版本指定对服务实例的以下限制：
  + **兼容的环境模板** - 实例只能在基于这些兼容的环境模板的环境中运行。
  + **支持的组件源** - 指定开发人员可以将哪些组件类型与实例相关联。

  有关更多信息，请参阅 [版本控制的模板](ag-template-versions.md)、[注册并发布模板](template-create.md) 和 [模板同步配置](ag-template-sync-configs.md)。
+ **服务** — 使用服务模板中指定的资源运行应用程序的服务实例集合，也可以选择将应用程序代码部署到这些实例中的 CI/CD 管道。

  在该图中，从**服务模板**引出的虚线表示服务将模板传送到服务实例和管道。

  有关更多信息，请参阅 [AWS Proton 服务](ag-services.md)。
+ **服务实例** — 在特定 AWS Proton 环境中运行应用程序的一组 AWS 基础架构资源。 AWS 资源是通过使用特定参数值调用的服务模板版本来配置的。

  有关更多信息，请参阅[AWS Proton 服务](ag-services.md)和[更新服务实例](ag-svc-instance-update.md)。
+ Pi@@ **p** eline — 一种可选 CI/CD 管道，用于将应用程序部署到服务的实例中，并使用访问策略来配置此管道。访问策略是在服务角色中提供的。一项服务并不总是有关联的 AWS Proton 管道，您可以选择在外部管理您的应用程序代码部署。 AWS Proton

  在图中，S **ervic** e 中的虚线和 Pi **p** eline 周围的虚线框意味着，如果您选择自己管理 CI/CD 部署，则可能无法创建 AWS Proton 管道，并且您自己的管道可能不在您的 AWS 账户中。

  有关更多信息，请参阅[AWS Proton 服务](ag-services.md)和[更新服务管道](ag-svc-pipeline-update.md)。
+ **组件** - 开发人员定义的服务实例扩展。除环境和服务实例提供的资源外，指定特定应用程序可能需要的其他 AWS 基础设施资源。平台团队将一个组件角色附加到环境，以控制组件可以预置的基础设施。

  有关更多信息，请参阅 [AWS Proton 组件](ag-components.md)。

# 如何配置 AWS Proton 基础架构
<a name="ag-works-prov-methods"></a>

AWS Proton 可以通过以下几种方式之一配置基础架构：
+ **AWS-托管配置** — 代表您调 AWS Proton 用配置引擎。该方法仅支持 AWS CloudFormation 模板捆绑包。有关更多信息，请参阅 [CloudFormation IaC 文件](ag-infrastructure-tmp-files-cloudformation.md)。
+ **CodeBuild 配置** — AWS Proton AWS CodeBuild 用于运行您提供的 shell 命令。您的命令可以读取 AWS Proton 提供并负责配置或取消配置基础架构以及生成输出值的输入。该方法的模板捆绑包包括清单文件中的命令，以及这些命令可能需要的任何程序、脚本或其他文件。

  作为使用 CodeBuild 配置的示例，您可以包括使用 AWS Cloud Development Kit (AWS CDK) 来配置 AWS 资源的代码，以及用于安装 CDK 并运行 CDK 代码的清单。

  有关更多信息，请参阅 [CodeBuild 配置模板包](ag-infrastructure-tmp-files-codebuild.md)。
**注意**  
您可以对环境和服务使用 CodeBuild 置备。目前，您无法通过这种方法预置组件。
+ **自我管理配置** — 向您提供的存储库 AWS Proton 发出拉取请求 (PR)，由您自己的基础架构部署系统在其中运行配置过程。该方法仅支持 Terraform 模板捆绑包。有关更多信息，请参阅 [Terraform IaC 文件](ag-infrastructure-tmp-files-terraform.md)。

AWS Proton 分别确定和设置每个环境和服务的配置方法。在您创建或更新环境或服务时， AWS Proton 检查您提供的模板捆绑包，并确定模板捆绑包指示的预置方法。在环境级别，您可以提供环境及其潜在服务的配置方法可能需要的参数，即AWS Identity and Access Management (IAM) 角色、环境账户连接或基础设施存储库。

无论采用 AWS Proton 何种预配方式，过去配置服务的开发者都具有相同的体验。开发人员不需要了解预置方法，也不需要在服务预置过程中更改任何内容。服务模板设置预置方法，开发人员部署服务的每个环境提供服务实例预置所需的参数。

下图简要说明了不同预置方法的一些主要特征。表后面的部分提供了有关每种方法的详细信息。


| 预置方法 | 模板 | 预置者 | 状态跟踪者 | 
| --- | --- | --- | --- | 
| AWS托管式 | 清单、架构、IaC 文件 () CloudFormation | AWS Proton （通过 CloudFormation） | AWS Proton （通过 CloudFormation） | 
| CodeBuild | 清单（带命令）、架构、命令依赖关系（例如 AWS CDK 代码） | AWS Proton （通过 CodeBuild） | AWS Proton （您的命令通过返回状态 CodeBuild） | 
| 自行管理 | 清单、架构、IaC 文件 (Terraform) | 您的代码（通过 Git 操作） | 您的代码（ AWS 通过 API 调用传递给） | 

## AWS托管配置的工作原理
<a name="ag-works-prov-methods-direct"></a>

当环境或服务使用 AWS托管配置时，将按以下方式配置基础架构：

1.  AWS Proton 客户（管理员或开发人员）创建 AWS Proton 资源（环境或服务）。客户为资源选择模板，并提供所需的参数。有关更多信息，请参阅[AWS托管配置的注意事项](#ag-works-prov-methods-direct-consider)一节。

1. AWS Proton 呈现用于配置资源的完整 CloudFormation 模板。

1. AWS Proton 调用 CloudFormation 以使用渲染的模板开始配置。

1. AWS Proton 持续监控部 CloudFormation 署。

1. 配置完成后，如果出现故障，则会 AWS Proton 报告错误，并在成功时捕获配置输出，例如 Amazon VPC ID。

下图显示了可以直接 AWS Proton 完成其中的大多数步骤。

![\[该图说明了中的 AWS托管配置 AWS Proton\]](http://docs.aws.amazon.com/zh_cn/proton/latest/userguide/images/provisioning-direct.png)


### AWS托管配置的注意事项
<a name="ag-works-prov-methods-direct-consider"></a>
+ *基础设施配置角色* — 当环境或其中运行的任何服务实例可能使用 AWS托管配置时，管理员需要配置 IAM 角色（直接配置或作为 AWS Proton 环境账户连接的一部分）。 AWS Proton 使用此角色来配置这些 AWS托管配置资源的基础架构。该角色应有权使用 CloudFormation 来创建这些资源的模板中包含的所有资源。

  有关更多信息，请参阅[IAM 角色](ag-environment-roles.md)和[AWS Proton IAM 服务角色策略示例](security_iam_service-role-policy-examples.md)。
+ *服务配置* — 当开发人员向环境部署使用 AWS托管配置的服务实例时， AWS Proton 使用提供给该环境的角色为该服务实例配置基础架构。开发人员看不到该角色，也无法更改该角色。
+ *带管道*的服务 — 使用 AWS托管配置的服务模板可能包含以 CloudFormation YAML 架构编写的管道定义。 AWS Proton 还可以通过调用来创建管道 CloudFormation。 AWS Proton 用于创建管道的角色与每个单独环境的角色是分开的。该角色是 AWS Proton 单独提供的，仅在 AWS 账户级别提供一次，用于配置和管理所有托管的 AWS管道。该角色应有权创建管道以及管道所需的其他资源。

  以下过程说明了如何向 AWS Proton提供管道角色。

------
#### [ AWS Proton console ]

**提供管道角色**

  1. 在 [AWS Proton 控制台](https://console.aws.amazon.com//proton/)的导航窗格中，选择**设置 > 账户设置**，然后选择**配置**。

  1. 使用 ** AWS Pipeline-managed 角色部分为 AWS托**管置备配置配置新的或现有的管道角色。

------
#### [ AWS Proton API ]

**提供管道角色**

  1. 使用 [UpdateAccountSettings](https://docs.aws.amazon.com/proton/latest/APIReference/API_UpdateAccountSettings.html)API 操作。

  1. 在 `pipelineServiceRoleArn` 参数中提供您的管道服务角色的 Amazon 资源名称 (ARN)。

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

  **提供管道角色**

  运行以下命令：

  ```
  $ aws proton update-account-settings \
      --pipeline-service-role-arn \
          "arn:aws:iam::123456789012:role/my-pipeline-role"
  ```

------

## CodeBuild 配置的工作原理
<a name="ag-works-prov-methods-codebuild"></a>

当环境或服务使用 CodeBuild 预配时，基础架构的配置方式如下：

1.  AWS Proton 客户（管理员或开发人员）创建 AWS Proton 资源（环境或服务）。客户为资源选择模板，并提供所需的参数。有关更多信息，请参阅[CodeBuild 置备注意事项](#ag-works-prov-methods-codebuild-consider)一节。

1. AWS Proton 呈现带有用于置备资源的输入参数值的输入文件。

1. AWS Proton 打电话 CodeBuild 开始工作。该 CodeBuild 作业运行模板中指定的客户 shell 命令。这些命令预置所需的基础设施，同时可以选择读取输入值。

1. 配置完成后，最终的客户命令会将配置状态返回到， CodeBuild 并调用 [NotifyResourceDeploymentStatusChange](https://docs.aws.amazon.com/proton/latest/APIReference/API_NotifyResourceDeploymentStatusChange.html) AWS Proton API 操作以提供输出，例如 Amazon VPC ID（如果有）。
**重要**  
请确保您的命令正确返回配置状态 CodeBuild 并提供输出。如果他们不这样做，就 AWS Proton 无法正确跟踪配置状态，也无法向服务实例提供正确的输出。

下图说明了在 CodeBuild 作业中 AWS Proton 执行的步骤和命令执行的步骤。

![\[该图说明了中 CodeBuild基于基础的资源调配 AWS Proton\]](http://docs.aws.amazon.com/zh_cn/proton/latest/userguide/images/provisioning-codebuild.png)


### CodeBuild 置备注意事项
<a name="ag-works-prov-methods-codebuild-consider"></a>
+ *基础设施配置角色* — 当环境或其中运行的任何服务实例可能使用 CodeBuild基于基础的配置时，管理员需要配置 IAM 角色（直接配置或作为 AWS Proton 环境账户连接的一部分）。 AWS Proton 使用此角色来配置这些 CodeBuild 配置资源的基础架构。该角色应 CodeBuild 有权使用创建您在这些资源配置的模板中命令的所有资源。

  有关更多信息，请参阅[IAM 角色](ag-environment-roles.md)和[AWS Proton IAM 服务角色策略示例](security_iam_service-role-policy-examples.md)。
+ *服务预配*-当开发人员向环境部署使用 CodeBuild 预配的服务实例时， AWS Proton 使用提供给该环境的角色为该服务实例配置基础架构。开发人员看不到该角色，也无法更改该角色。
+ *带管道*的服务-使用 CodeBuild 预配的服务模板可能包括用于配置管道的命令。 AWS Proton 还可以通过调用来创建管道 CodeBuild。 AWS Proton 用于创建管道的角色与每个单独环境的角色是分开的。此角色是 AWS Proton 单独提供的，仅在 AWS 账户级别提供一次，用于配置和管理所有 CodeBuild基于流水线的管道。该角色应有权创建管道以及管道所需的其他资源。

  以下过程说明了如何向 AWS Proton提供管道角色。

------
#### [ AWS Proton console ]

**提供管道角色**

  1. 在 [AWS Proton 控制台](https://console.aws.amazon.com//proton/)的导航窗格中，选择**设置 > 账户设置**，然后选择**配置**。

  1. 使用 **Codebuild 管道配置角色**部分为置备 CodeBuild配置新的或现有的管道角色。

------
#### [ AWS Proton API ]

**提供管道角色**

  1. 使用 [UpdateAccountSettings](https://docs.aws.amazon.com/proton/latest/APIReference/API_UpdateAccountSettings.html)API 操作。

  1. 在 `pipelineCodebuildRoleArn` 参数中提供您的管道服务角色的 Amazon 资源名称 (ARN)。

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

  **提供管道角色**

  运行以下命令：

  ```
  $ aws proton update-account-settings \
      --pipeline-codebuild-role-arn \
          "arn:aws:iam::123456789012:role/my-pipeline-role"
  ```

------

## 自托管式预置的工作方式
<a name="ag-works-prov-methods-self"></a>

在环境或服务配置为使用自托管式预置时，基础设施按以下方式进行预置：

1.  AWS Proton 客户（管理员或开发人员）创建 AWS Proton 资源（环境或服务）。客户为资源选择模板，并提供所需的参数。对于环境，客户还会提供链接的基础设施存储库。有关更多信息，请参阅[自托管式预置的注意事项](#ag-works-prov-methods-self-consider)一节。

1. AWS Proton 渲染一个完整的 Terraform 模板。它由一个或多个 Terraform 文件（可能位于多个文件夹中）和一个`.tfvars`变量文件组成。 AWS Proton 将资源创建调用中提供的参数值写入此变量文件。

1. AWS Proton 使用渲染的 Terraform 模板向基础设施存储库提交 PR。

1. 在客户（管理员或开发人员）合并 PR 时，客户的自动化代码触发预置引擎，以使用合并的模板开始预置基础设施。
**注意**  
如果客户（管理员或开发人员）关闭 PR，则将 PR AWS Proton 识别为已关闭并将部署标记为已取消。

1. 配置完成后，客户自动调用 [NotifyResourceDeploymentStatusChange](https://docs.aws.amazon.com/proton/latest/APIReference/API_NotifyResourceDeploymentStatusChange.html) AWS Proton API 操作以指示已完成，提供状态（成功或失败），并提供输出，例如 Amazon VPC ID（如果有）。
**重要**  
请确保您的自动化代码使用配置状态和输出 AWS Proton 进行回调。如果不是， AWS Proton 可能会将置备视为待处理的时间超过应有的时间，并继续显示 “进行**中**” 状态。

下图说明了 AWS Proton 执行的步骤以及您自己的配置系统执行的步骤。

![\[该图说明了中的自我管理配置 AWS Proton\]](http://docs.aws.amazon.com/zh_cn/proton/latest/userguide/images/provisioning-self.png)


### 自托管式预置的注意事项
<a name="ag-works-prov-methods-self-consider"></a>
+ *基础架构存储库*-当管理员为自我管理配置配置环境时，他们需要提供链接的基础架构存储库。 AWS Proton 提交 PRs 到此存储库以配置环境的基础架构和部署到该存储库的所有服务实例。存储库中客户拥有的自动化操作应扮演一个 IAM 角色，该角色有权创建您的环境和服务模板包含的所有资源，并具有反映目标 AWS 账户的身份。有关扮演角色的 GitHub 操作示例，请参阅 *“配置 AWS 凭据” GitHub 操作文档中的代入*[角色](https://github.com/aws-actions/configure-aws-credentials#assuming-a-role)。
+ *权限*-您的配置代码必须根据需要使用账户进行身份验证（例如，向 AWS 账户进行身份验证），并提供资源配置授权（例如，提供角色）。
+ *服务配置*-当开发人员向环境部署使用自我管理配置的服务实例时， AWS Proton 向与环境关联的存储库提交 PR，以便为该服务实例配置基础架构。开发人员看不到存储库，也无法更改存储库。
**注意**  
无论预置方法如何，创建服务的开发人员使用相同的过程，并对它们的差异进行抽象处理。不过，对于自托管式预置，开发人员可能会遇到响应速度较慢的情况，因为他们需要等待某人（可能不是他们自己）将 PR 合并到基础设施存储库中，然后才能开始预置。
+ *带管道的服务* — 具有自我管理配置的环境的服务模板可能包括用 Terraform HCL 编写的 AWS CodePipeline 管道定义（例如管道）。 AWS Proton 为了能够配置这些管道，管理员提供了一个链接的管道存储库 AWS Proton。在配置管道时，存储库中客户拥有的自动化操作应扮演一个具有配置管道权限的 IAM 角色和反映目标 AWS 账户的身份。管道存储库和角色与用于每个单独环境的存储库和角色是分开的。链接存储库是 AWS Proton 单独提供的，仅在 AWS 账户级别提供一次，用于配置和管理所有管道。该角色应有权创建管道以及管道所需的其他资源。

  以下过程说明了如何向 AWS Proton提供管道存储库和角色。

------
#### [ AWS Proton console ]

**提供管道角色**

  1. 在 [AWS Proton 控制台](https://console.aws.amazon.com//proton/)的导航窗格中，选择**设置 > 账户设置**，然后选择**配置**。

  1. 使用 **CI/CD 管道存储库**部分配置新的或现有的存储库链接。

------
#### [ AWS Proton API ]

**提供管道角色**

  1. 使用 [UpdateAccountSettings](https://docs.aws.amazon.com/proton/latest/APIReference/API_UpdateAccountSettings.html)API 操作。

  1. 在 `pipelineProvisioningRepository` 参数中提供管道存储库的提供商、名称和分支。

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

  **提供管道角色**

  运行以下命令：

  ```
  $ aws proton update-account-settings \
      --pipeline-provisioning-repository \
          "provider=GITHUB,name=my-pipeline-repo-name,branch=my-branch"
  ```

------
+ *删除自托管式预置资源* - 除了资源定义以外，Terraform 模块可能还包含 Terraform 操作所需的配置元素。因此， AWS Proton 无法删除环境或服务实例的所有 Terraform 文件。而是将文件 AWS Proton 标记为删除，并在 PR 元数据中更新标记。您的自动化代码可以读取该标记，并使用它触发 Terraform 销毁命令。

# AWS Proton 术语
<a name="terminology"></a>

**环境模板**  
定义由多个应用程序或资源使用的共享基础设施，例如 VPC 或集群。

**环境模板捆绑包**  
您上传的一组文件，用于在 AWS Proton中创建和注册环境模板。环境模板捆绑包包含以下内容：  

1. 定义基础设施即代码输入参数的架构文件。

1. 基础设施即代码 (IaC) 文件，用于定义由多个应用程序或资源使用的共享基础设施，例如 VPC 或集群。

1. 列出 IaC 文件的清单文件。

**环境**  
由多个应用程序或资源使用的预置共享基础设施，例如 VPC 或集群。

**服务模板**  
定义在环境中部署和维护应用程序或微服务所需的基础设施类型。

**服务模板捆绑包**  
您上传的一组文件，用于在 AWS Proton中创建和注册服务模板。服务模板捆绑包包含以下内容：  

1. 定义基础设施即代码 (IaC) 输入参数的架构文件。

1. 一个 IaC 文件，用于定义在环境中部署和维护应用程序或微服务所需的基础设施。

1. 列出 IaC 文件的清单文件。

1. 可选

   1. 定义服务管道基础设施的 IaC 文件。

   1. 列出 IaC 文件的清单文件。

**服务**  
定义在环境中部署和维护应用程序或微服务所需的预置基础设施。

**服务实例**  
支持环境中的应用程序或微服务的预置基础设施。

**服务管道**  
支持管道的预置基础设施。

**模板版本**  
模板的主要或次要版本。有关更多信息，请参阅 [版本控制的模板](ag-template-versions.md)。

**输入参数**  
在架构文件中定义并在基础设施即代码 (IaC) 文件中使用，以便重复使用 IaC 文件以及将其用于各种使用案例。

**架构文件**  
定义基础设施即代码输入参数。

**规范文件**  
指定架构文件中定义的基础设施即代码文件输入参数的值。

**清单文件**  
列出基础设施即代码文件。