View a markdown version of this page

操作方法 AWS Proton 供应基础设施 - AWS Proton

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

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

操作方法 AWS Proton 供应基础设施

AWS Proton 可以通过以下几种方式之一配置基础架构:

  • AWS-托管配置 — 代表您调 AWS Proton 用配置引擎。该方法仅支持 AWS CloudFormation 模板捆绑包。有关更多信息,请参阅 CloudFormation IaC 文件

  • CodeBuild 配置 — AWS Proton AWS CodeBuild 用于运行您提供的 shell 命令。您的命令可以读取 AWS Proton 提供基础架构的输入,并负责配置或取消配置基础架构并生成输出值。该方法的模板捆绑包包括清单文件中的命令,以及这些命令可能需要的任何程序、脚本或其他文件。

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

    有关更多信息,请参阅 CodeBuild 配置模板包

    注意

    您可以将 CodeBuild 配置与环境和服务一起使用。目前,您无法通过这种方法预置组件。

  • Self-managed 配置 — 向您提供的存储库 AWS Proton 发出拉取请求 (PR),您自己的基础架构部署系统在其中运行配置过程。该方法仅支持 Terraform 模板捆绑包。有关更多信息,请参阅 Terraform IaC 文件

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-托管配置有效

当环境或服务使用 AWS托管配置时,基础架构的配置方式如下:

  1. AWS Proton 客户(管理员或开发人员)创建 AWS Proton 资源(环境或服务)。客户为资源选择模板,并提供所需的参数。有关更多信息,请参阅注意事项 AWS托管式预置一节。

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

  3. AWS Proton 调 CloudFormation 用使用呈现的模板开始配置。

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

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

下图显示了这些 AWS Proton 步骤中的大多数都是直接执行的。

中显示了 AWS管理配置的示意图 AWS Proton

注意事项 AWS托管式预置

  • 基础设施配置角色 — 当环境或其中运行的任何服务实例可能使用 AWS托管配置时,管理员需要配置 IAM 角色(直接配置或作为 AWS Proton 环境账户连接的一部分)。 AWS Proton 使用此角色来配置这些 AWS托管的配置资源的基础架构。该角色应具有创建这些资源模板所包含的所有资源的权限。 CloudFormation

    有关更多信息,请参阅IAM 角色AWS Proton IAM 服务角色策略示例

  • 服务配置 -当开发人员向环境部署使用 AWS托管配置的服务实例时, AWS Proton 使用向该环境提供的角色为该服务实例配置基础架构。开发人员看不到该角色,也无法更改该角色。

  • 带管道的服务 AWS-使用管理配置的服务模板可能包括以 CloudFormation YAML 架构编写的管道定义。 AWS Proton 还通过调用创建管道 CloudFormation。 AWS Proton 用于创建管道的角色与每个环境的角色是分开的。此角色仅在 AWS 账户级别 AWS Proton 单独提供一次,用于配置和管理所有 AWS托管管道。该角色应有权创建管道以及管道所需的其他资源。

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

    AWS Proton console
    提供管道角色
    1. AWS Proton 控制台的导航窗格中,选择设置 > 账户设置,然后选择配置

    2. 使用 “管 AWS道管理角色” 部分为托管配置配置新的或现有的管道角色。 AWS

    AWS Proton API
    提供管道角色
    1. 使用 UpdateAccountSettings API 操作。

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

    AWS CLI

    提供管道角色

    运行以下命令:

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

CodeBuild 配置的工作原理

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

  1. AWS Proton 客户(管理员或开发人员)创建 AWS Proton 资源(环境或服务)。客户为资源选择模板,并提供所需的参数。有关更多信息,请参阅CodeBuild 配置注意事项一节。

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

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

  4. 预置完成后,最终的客户命令将配置状态返回到 CodeBuild 并调用 NotifyResourceDeploymentStatusChange AWS Proton API 操作以提供输出,例如 Amazon VPC ID(如果有)。

    重要

    确保您的命令将配置状态正确返回到 CodeBuild 并提供输出。如果不这样做,则 AWS Proton 无法正确跟踪配置状态,也无法向服务实例提供正确的输出。

下图说明了在 CodeBuild 任务中 AWS Proton 执行的步骤以及您的命令执行的步骤。

示意图说明了中的 CodeBuild-based 配置 AWS Proton

CodeBuild 配置注意事项

  • 基础设施配置角色 — 当环境或其中运行的任何服务实例可能使用 CodeBuild-based 预置时,管理员需要配置 IAM 角色(直接配置或作为 AWS Proton 环境账户连接的一部分)。 AWS Proton 使用此角色来配置这些 CodeBuild 配置资源的基础架构。该角色应 CodeBuild 有权使用这些资源的模板创建您在这些资源配置的模板中命令的所有资源。

    有关更多信息,请参阅IAM 角色AWS Proton IAM 服务角色策略示例

  • 服务配置 -当开发人员部署使用环境 CodeBuild 配置的服务实例时, AWS Proton 使用提供给该环境的角色为该服务实例预置基础架构。开发人员看不到该角色,也无法更改该角色。

  • 带管道的服务 -使用 CodeBuild 预配的服务模板可能包括用于配置管道的命令。 AWS Proton 还通过调用创建管道 CodeBuild。 AWS Proton 用于创建管道的角色与每个环境的角色是分开的。此角色仅在 AWS 账户级别 AWS Proton 单独提供一次,用于配置和管理所有 CodeBuild-based 管道。该角色应有权创建管道以及管道所需的其他资源。

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

    AWS Proton console
    提供管道角色
    1. AWS Proton 控制台的导航窗格中,选择设置 > 账户设置,然后选择配置

    2. 使用 Codebuild 管道配置角色部分来配置新的或现有的管道角色以进行 CodeBuild配置。

    AWS Proton API
    提供管道角色
    1. 使用 UpdateAccountSettings API 操作。

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

    AWS CLI

    提供管道角色

    运行以下命令:

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

自托管式预置的工作方式

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

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

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

  3. AWS Proton 使用呈现的 Terraform 模板向基础设施存储库提交 PR。

  4. 在客户(管理员或开发人员)合并 PR 时,客户的自动化代码触发预置引擎,以使用合并的模板开始预置基础设施。

    注意

    如果客户(管理员或开发人员)关闭 PR,则将 PR AWS Proton 识别为已关闭并将部署标记为已取消。

  5. 配置完成后,客户的自动化调用 NotifyResourceDeploymentStatusChange AWS Proton API 操作以表示已完成,提供状态(成功或失败),并提供输出,例如 Amazon VPC ID(如果有)。

    重要

    确保您的自动化代码 AWS Proton 使用配置状态和输出回调。如果不是, AWS Proton 可能会将配置视为待处理的时间超过应有的时间,并继续显示 “进行” 状态。

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

中自主管理配置的示意图 AWS Proton

自托管式预置的注意事项

  • 基础架构存储库 -管理员为自我管理的配置配置环境时,他们需要提供链接的基础架构存储库。 AWS Proton 向该存储库提交 PR 以配置环境的基础设施以及部署到该存储库的所有服务实例。存储库中客户拥有的自动化操作应假定一个 IAM 角色,该角色有权创建您的环境和服务模板包含的所有资源,并具有反映目标 AWS 账户的身份。有关代入角色的 GitHub 操作示例,请参阅 “配置 AWS 证书” GitHub 操作文档中的代入角色。

  • 权限 -您的配置代码必须根据需要使用账户进行身份验证(例如,对 AWS 账户进行身份验证),并提供资源配置授权(例如,提供角色)。

  • 服务配置 — 当开发人员向环境部署使用自管理配置的服务实例时, AWS Proton 向与环境关联的存储库提交 PR,为该服务实例配置基础架构。开发人员看不到存储库,也无法更改存储库。

    注意

    无论预置方法如何,创建服务的开发人员使用相同的过程,并对它们的差异进行抽象处理。不过,对于自托管式预置,开发人员可能会遇到响应速度较慢的情况,因为他们需要等待某人(可能不是他们自己)将 PR 合并到基础设施存储库中,然后才能开始预置。

  • 带管道的服务 — 具有自我管理配置的环境的服务模板可能包括以 Terraform HCL 编写的 AWS CodePipeline 管道定义(例如,管道)。 AWS Proton 为了能够配置这些管道,管理员向提供了链接的管道存储库 AWS Proton。配置管道时,存储库中客户拥有的自动化操作应扮演一个 IAM 角色,该角色具有预置管道的权限,并具有反映目标 AWS 账户的身份。管道存储库和角色与用于每个单独环境的存储库和角色是分开的。链接存储库仅在 AWS 账户级别 AWS Proton 单独提供一次,用于配置和管理所有管道。该角色应有权创建管道以及管道所需的其他资源。

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

    AWS Proton console
    提供管道角色
    1. AWS Proton 控制台的导航窗格中,选择设置 > 账户设置,然后选择配置

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

    AWS Proton API
    提供管道角色
    1. 使用 UpdateAccountSettings API 操作。

    2. 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 销毁命令。