创建环境 - AWS Proton

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

创建环境

学习创建 AWS Proton 环境。

您可以通过以下两种方式之一创建 AWS Proton 环境:
  • 使用标准环境模板创建、管理和配置标准环境。 AWS Proton 为您的环境配置基础架构。

  • 使用客户管理的环境模板 AWS Proton 连接到客户管理的基础架构。您可以在外部配置自己的共享资源 AWS Proton,然后提供 AWS Proton 可供使用的配置输出。

在创建环境时,您可以选择多种预置方法之一。
  • AWS 托管配置-使用单一账户创建、管理和配置环境。 AWS Proton 配置您的环境。

    此方法仅支持 CloudFormation 基础设施代码 (IaC) 模板。

  • AWS 托管配置到另一个账户 — 在单个管理账户中,创建和管理在具有环境账户连接的另一个账户中配置的环境。 AWS Proton 在另一个账户中配置您的环境。有关更多信息,请参阅 在一个账户中创建环境并在另一个账户中预置环境账户连接

    此方法仅支持 CloudFormation IaC 模板。

  • 自行管理配置-使用您自己的配置基础架构将配置拉取请求 AWS Proton 提交到链接存储库。

    该方法仅支持 Terraform IaC 模板。

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

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

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

    注意

    您可以对环境和服务使用 CodeBuild 置备。目前,您无法通过这种方法预置组件。

使用 AWS 托管配置(在同一个账户和另一个账户中), AWS Proton 可以直接调用以配置您的资源。

通过自我管理配置, AWS Proton 可以发出拉取请求以提供已编译的 IaC 文件,供您的 IaC 引擎用于配置资源。

有关更多信息,请参阅 AWS Proton 如何预置基础设施模板捆绑包环境模板捆绑包的架构要求

在同一账户中创建和预置标准环境

使用控制台或 AWS CLI 在单个账户中创建和配置环境。配置由管理 AWS。

AWS Management Console
使用控制台在单个账户中创建和预置环境
  1. AWS Proton 控制台中,选择环境

  2. 选择创建环境

  3. 选择环境模板页面中,选择一个模板并选择配置

  4. 配置环境页面上的预置部分中,选择 AWS 托管式预置

  5. 部署账户部分中,选择该 AWS 账户账户

  6. 配置环境页面上的环境设置部分中,输入一个环境名称

  7. (可选)输入环境的描述。

  8. 环境角色部分中,选择您在设置 AWS Proton 服务角色过程中创建的 AWS Proton 服务角色。

  9. (可选)在组件角色部分中,选择一个服务角色,该角色允许直接定义的组件在环境中运行并缩小它们可以预置的资源范围。有关更多信息,请参阅 AWS Proton 组件

  10. (可选)在标签部分中,选择添加新标签,并输入键和值以创建一个客户托管标签。

  11. 选择下一步

  12. 配置环境自定义设置页面中,您必须输入 required 参数的值。您可以输入 optional 参数的值,或使用给定的默认值。

  13. 选择下一步并检查您的输入。

  14. 选择创建

    查看环境详细信息和状态,以及您的环境的 AWS 托管标签和客户托管标签。

  15. 在导航窗格中,选择环境

    新页面显示您的环境列表以及状态和其他环境详细信息。

AWS CLI

使用 AWS CLI 在单个账户中创建和配置环境。

要创建环境,您需要指定AWS Proton 服务角色ARN、规范文件路径、环境名称、环境模板ARN、主要版本和次要版本以及描述(可选)。

下一个示例显示 YAML 格式的规范文件,该文件指定环境模板架构文件中定义的两个输入的值。您可以使用 get-environment-template-minor-version 命令查看环境模板架构。

proton: EnvironmentSpec spec: my_sample_input: "the first" my_other_sample_input: "the second"

运行以下命令以创建一个环境。

$ aws proton create-environment \ --name "MySimpleEnv" \ --template-name simple-env \ --template-major-version 1 \ --proton-service-role-arn "arn:aws:iam::123456789012:role/AWS ProtonServiceRole" \ --spec "file://env-spec.yaml"

响应:

{ "environment": { "arn": "arn:aws:proton:region-id:123456789012:environment/MySimpleEnv", "createdAt": "2020-11-11T23:03:05.405000+00:00", "deploymentStatus": "IN_PROGRESS", "lastDeploymentAttemptedAt": "2020-11-11T23:03:05.405000+00:00", "name": "MySimpleEnv", "protonServiceRoleArn": "arn:aws:iam::123456789012:role/ProtonServiceRole", "templateName": "simple-env" } }

创建新环境后,您可以查看客户管理的标签列表 AWS ,如以下示例命令所示。 AWS Proton 自动为您生成 AWS 托管标签。您也可以使用 AWS CLI修改和创建客户托管标签。有关更多信息,请参阅 AWS Proton 资源和标记

命令:

$ aws proton list-tags-for-resource \ --resource-arn "arn:aws:proton:region-id:123456789012:environment/MySimpleEnv"

在一个账户中创建环境并在另一个账户中预置

使用控制台或 AWS CLI 在管理账户中创建标准环境,在另一个账户中配置环境基础架构。预置是由 AWS管理的。

在使用控制台或之前CLI,请完成以下步骤。
  1. 确定管理和环境帐户 AWS 账户 IDs的,然后将其复制以备后用。

  2. 在环境帐户中,创建一个具有最低权限的 AWS Proton 服务角色,供环境创建。有关更多信息,请参阅 AWS Proton 使用进行置备的服务角色 AWS CloudFormation

AWS Management Console
使用控制台在一个账户中创建环境并在另一个账户中进行预置。
  1. 在环境账户中,创建一个环境账户连接,并使用该连接发送请求以连接到管理账户。
    1. AWS Proton 控制台中,在导航窗格中选择环境账户连接

    2. 环境账户连接页面中,选择请求连接

      注意

      验证环境账户连接页面标题中列出的账户 ID 是否与您预先找到的环境账户 ID 匹配。

    3. 请求连接页面上的环境角色部分中,选择现有的服务角色以及您为环境创建的服务角色的名称。

    4. Connect to 管理账户部分,输入您的环境的管理账户 ID 和 AWS Proton 环境名称。复制该名称以供以后使用。

    5. 选择页面右下角的请求连接

    6. 您的请求在发送到管理账户的环境连接表中显示为“待处理”,并且一个模态框说明了如何接受来自管理账户的请求。

  2. 在管理账户中,接受来自环境账户的连接请求。
    1. 登录您的管理账户,然后在 AWS Proton 控制台中选择环境帐户连接

    2. 环境账户连接页面上的环境账户连接请求表中,选择环境账户 ID 与您预先找到的环境账户 ID 匹配的环境账户连接。

      注意

      验证环境账户连接页面标题中列出的账户 ID 是否与您预先找到的管理账户 ID 匹配。

    3. 选择 Accept (接受)。状态从变PENDING为CONNECTED。

  3. 在管理账户中,创建一个环境。
    1. 在导航窗格中,选择环境模板

    2. 环境模板页面中,选择创建环境模板

    3. 选择环境模板页面中,选择一个环境模板。

    4. 配置环境页面上的预置部分中,选择 AWS 托管式预置

    5. 部署帐户部分,选择其他 AWS 账户;

    6. 环境详细信息部分中,选择您的环境账户连接环境名称

    7. 选择下一步

    8. 填写表单并选择下一步,直至到达审核和创建页面。

    9. 检查并选择创建环境

AWS CLI

使用在一个账户中 AWS CLI 创建环境,在另一个账户中进行配置。

在环境账户中,创建一个环境账户连接,并运行以下命令以请求连接。

$ aws proton create-environment-account-connection \ --environment-name "simple-env-connected" \ --role-arn "arn:aws:iam::222222222222:role/service-role/env-account-proton-service-role" \ --management-account-id "111111111111"

响应:

{ "environmentAccountConnection": { "arn": "arn:aws:proton:region-id:222222222222:environment-account-connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "environmentAccountId": "222222222222", "environmentName": "simple-env-connected", "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "lastModifiedAt": "2021-04-28T23:13:50.847000+00:00", "managementAccountId": "111111111111", "requestedAt": "2021-04-28T23:13:50.847000+00:00", "roleArn": "arn:aws:iam::222222222222:role/service-role/env-account-proton-service-role", "status": "PENDING" } }

在管理账户中,运行以下命令以接受环境账户连接请求。

$ aws proton accept-environment-account-connection \ --id "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"

响应:

{ "environmentAccountConnection": { "arn": "arn:aws:proton:region-id:222222222222:environment-account-connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "environmentAccountId": "222222222222", "environmentName": "simple-env-connected", "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "lastModifiedAt": "2021-04-28T23:15:33.486000+00:00", "managementAccountId": "111111111111", "requestedAt": "2021-04-28T23:13:50.847000+00:00", "roleArn": "arn:aws:iam::222222222222:role/service-role/env-account-proton-service-role", "status": "CONNECTED" } }

运行以下命令以查看您的环境账户连接。

$ aws proton get-environment-account-connection \ --id "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"

响应:

{ "environmentAccountConnection": { "arn": "arn:aws:proton:region-id:222222222222:environment-account-connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "environmentAccountId": "222222222222", "environmentName": "simple-env-connected", "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "lastModifiedAt": "2021-04-28T23:15:33.486000+00:00", "managementAccountId": "111111111111", "requestedAt": "2021-04-28T23:13:50.847000+00:00", "roleArn": "arn:aws:iam::222222222222:role/service-role/env-account-proton-service-role", "status": "CONNECTED" } }

在管理账户中,运行以下命令以创建一个环境。

$ aws proton create-environment \ --name "simple-env-connected" \ --template-name simple-env-template \ --template-major-version "1" \ --template-minor-version "1" \ --spec "file://simple-env-template/specs/original.yaml" \ --environment-account-connection-id "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"

响应:

{ "environment": { "arn": "arn:aws:proton:region-id:111111111111:environment/simple-env-connected", "createdAt": "2021-04-28T23:02:57.944000+00:00", "deploymentStatus": "IN_PROGRESS", "environmentAccountConnectionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "environmentAccountId": "222222222222", "lastDeploymentAttemptedAt": "2021-04-28T23:02:57.944000+00:00", "name": "simple-env-connected", "templateName": "simple-env-template" } }

使用自托管式预置创建和预置环境

使用自我管理配置时,使用您自己的配置基础架构将配置拉取请求 AWS Proton 提交到链接存储库。拉取请求会启动您自己的工作流程,该工作流程调用 AWS 服务;以配置基础架构。

自托管式预置注意事项:
  • 在创建环境之前,设置一个用于自托管式预置的存储库资源目录。有关更多信息,请参阅 AWS Proton 基础架构即代码文件

  • 创建环境后, AWS Proton 等待收到有关基础设施配置状态的异步通知。您的配置代码必须使用 AWS Proton NotifyResourceStateChangeAPI将这些异步通知发送到 AWS Proton。

您可以在控制台中或通过 AWS CLI使用自托管式预置。以下示例说明了如何使用 Terraform 进行自托管式预置。

AWS Management Console
使用控制台创建一个使用自托管式预置的 Terraform 环境。
  1. AWS Proton 控制台中,选择环境

  2. 选择创建环境

  3. 选择环境模板页面中,选择一个 Terraform 模板并选择配置

  4. 配置环境页面上的预置部分中,选择自托管式预置

  5. 预置存储库详细信息部分中:

    1. 如果您尚未将配置存储库链接到 AWS Proton,请选择 “新建存储库”,选择其中一个存储库提供程序,然后选择其中一个连接进行CodeStar连接

      注意

      如果您尚未连接到相关的存储库提供商帐户,请选择 “添加新 CodeStar 连接”。然后,创建连接,然后选择CodeStar 连接菜单旁边的刷新按钮。您现在应该可以在菜单中选择您的新连接。

      如果您已经将仓库链接到 AWS Proton,请选择现有存储库

    2. 对于存储库名称,选择一个存储库。下拉菜单为现有存储库显示链接的存储库,或者为新存储库显示提供商账户中的存储库列表。

    3. 对于分支名称,选择存储库分支之一。

  6. 环境设置部分中,输入一个环境名称

  7. (可选)输入环境的描述。

  8. (可选)在标签部分中,选择添加新标签,并输入键和值以创建一个客户托管标签。

  9. 选择下一步

  10. 配置环境自定义设置页面中,您必须输入 required 参数的值。您可以输入 optional 参数的值,或使用给定的默认值。

  11. 选择下一步并检查您的输入。

  12. 选择创建以发送一个拉取请求。

    • 如果您批准拉取请求,则会进行部署。

    • 如果您拒绝拉取请求,将取消创建环境。

    • 如果拉取请求超时,则不会 完成创建环境。

  13. 查看环境详细信息和状态,以及您的环境的 AWS 托管标签和客户托管标签。

  14. 在导航窗格中,选择环境

    新页面显示您的环境列表以及状态和其他环境详细信息。

AWS CLI

在您创建使用自托管式预置的环境时,您可以添加 provisioningRepository 参数并省略 ProtonServiceRoleArnenvironmentAccountConnectionId 参数。

使用创建具有自我管理配置的 Terraform 环境。 AWS CLI
  1. 创建一个环境,并向存储库发送拉取请求以进行审核和批准。

    下一个示例显示一个 YAML 格式的规范文件,该文件根据环境模板架构文件定义两个输入的值。您可以使用 get-environment-template-minor-version 命令查看环境模板架构。

    规范:

    proton: EnvironmentSpec spec: ssm_parameter_value: "test"

    运行以下命令以创建一个环境。

    $ aws proton create-environment \ --name "pr-environment" \ --template-name "pr-env-template" \ --template-major-version "1" \ --provisioning-repository="branch=main,name=myrepos/env-repo,provider=GITHUB" \ --spec "file://env-spec.yaml"

    响应:

    { "environment": { "arn": "arn:aws:proton:region-id:123456789012:environment/pr-environment", "createdAt": "2021-11-18T17:06:58.679000+00:00", "deploymentStatus": "IN_PROGRESS", "lastDeploymentAttemptedAt": "2021-11-18T17:06:58.679000+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" }, "templateName": "pr-env-template" }
  2. 检查请求。

    • 如果您批准请求,则会进行预置。

    • 如果您拒绝请求,将取消创建环境。

    • 如果拉取请求超时,则不会 完成创建环境。

  3. 异步向提供配置状态。 AWS Proton以下示例通知 AWS Proton 配置成功。

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