View a markdown version of this page

注册并发布模板 - AWS Proton

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

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

注册并发布模板

您可以注册和发布环境和服务模板 AWS Proton,如以下部分所述。

您可以使用控制台或创建模板的新版本 AWS CLI。

或者,您可以使用控制台或 AWS CLI 创建模板并为其配置配置模板同步。此配置允许从位于您定义的已注册 Git 存储库中的模板包进行 AWS Proton 同步。每次将提交推送到更改某个模板捆绑包的存储库时,都会创建新的模板次要或主要版本(如果该版本尚不存在)。要了解模板同步配置先决条件和要求的更多信息,请参阅模板同步配置。

注册和发布环境模板

您可以注册并发布以下类型的环境模板。

  • 注册并发布 AWS Proton 用于部署和管理环境基础架构的标准环境模板。

  • 注册并发布客户管理的环境模板,该模板 AWS Proton 用于连接到您管理的现有预置基础架构。 AWS Proton 不管理您现有的预置基础架构。

重要

作为管理员,请确保您的预置和托管基础架构以及所有输出参数与相关的客户管理环境模板兼容。 AWS Proton 无法代表你解释变更,因为这些更改对人不可见 AWS Proton。不一致会导致失败。

您可以使用控制台或 AWS CLI 来注册和发布环境模板。

AWS 管理控制台
使用控制台注册并发布新的环境模板。
  1. 在 AWS Proton 控制台中,选择环境模板。

  2. 选择创建环境模板。

  3. 在创建环境模板页面上的模板选项部分中,选择两个可用的模板选项之一。

    • 创建用于预置新环境的模板。

    • 创建模板以使用您管理的预置基础设施。

  4. 如果您选择创建用于预置新环境的模板,则在模板捆绑包源部分中选择三个可用的模板捆绑包源选项之一。要了解模板同步要求和先决条件的更多信息,请参阅模板同步配置。

  5. 提供模板捆绑包的路径。
    1. 如果您选择了使用我们的示例模板捆绑包:

      在示例模板捆绑包部分中,选择一个示例模板捆绑包。

    2. 如果您选择了从 Git 同步模板,在源代码部分中:

      1. 为您的模板同步配置选择存储库。

      2. 输入要从中同步的存储库分支的名称。

      3. (可选)输入目录名称以限制模板捆绑包搜索。

    3. 否则,在 S3 捆绑包位置部分中,提供您的模板捆绑包的路径。

  6. 在模板详细信息部分中。

    1. 输入模板名称。

    2. (可选)输入模板显示名称。

    3. (可选)输入环境模板的模板描述。

  7. (可选)选中加密设置部分中的自定义加密设置 (高级) 复选框以提供您自己的加密密钥。

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

  9. 选择创建环境模板。

    您现在位于一个新页面中,其中显示新环境模板的状态和详细信息。这些详细信息包括标签列表 AWS 和客户管理的标签。 AWS Proton 在您创建 AWS Proton 资源时自动为您生成 AWS 托管标签。有关更多信息,请参阅 AWS Proton 资源和标记。

  10. 新环境模板的初始状态为草稿。您和具有 proton:CreateEnvironment 权限的其他人可以查看和访问该模板。执行下一步,以使该模板可供其他人使用。

  11. 在模板版本部分中,选择刚创建的模板次要版本 (1.0) 左侧的单选按钮。或者,您可以在信息提醒中选择发布并跳过下一步。

  12. 在模板版本部分中,选择发布。

  13. 模板状态变为已发布。由于它是最新的模板版本,因此,它是推荐版本。

  14. 在导航窗格中,选择环境模板以查看环境模板和详细信息列表。

使用控制台注册新的环境模板主要版本和次要版本。

有关更多信息,请参阅 版本控制的模板。

  1. 在 AWS Proton 控制台中,选择环境模板。

  2. 在环境模板列表中,选择要创建主要或次要版本的环境模板的名称。

  3. 在环境模板详细信息视图中,在模板版本部分中选择创建新版本。

  4. 在创建新环境模板版本页面上的模板捆绑包源部分中,选择两个可用的模板捆绑包源选项之一。

    • 使用我们的示例模板捆绑包。

    • 使用自己的模板捆绑包。

  5. 提供选定模板捆绑包的路径。

    • 如果您选择了使用我们的示例模板捆绑包,请在示例模板捆绑包部分中选择一个示例模板捆绑包。

    • 如果您选择了使用自己的模板捆绑包包,请在 S3 捆绑包位置部分中选择您的模板捆绑包的路径。

  6. 在模板详细信息部分中。

    1. (可选)输入模板显示名称。

    2. (可选)输入服务模板的模板描述。

  7. 在模板详细信息部分中,选择以下选项之一。

    • 要创建次要版本,请将选中可创建新的主要版本复选框保留为空。

    • 要创建主要版本,请选中选中可创建新的主要版本复选框。

  8. 继续执行控制台步骤以创建新的次要版本或主要版本,然后选择创建新版本。

AWS CLI
使用 CLI 注册并发布新的环境模板,如以下步骤中所示。
  1. 指定区域、名称、显示名称(可选)和描述(可选)以创建一个标准 或客户托管 环境模板。

    1. 创建一个标准 环境模板。

      运行以下命令:

      $ aws proton create-environment-template \ --name "simple-env" \ --display-name "Fargate" \ --description "VPC with public access"

      响应:

      { "environmentTemplate": { "arn": "arn:aws:proton:region-id:123456789012:environment-template/simple-env", "createdAt": "2020-11-11T23:02:45.336000+00:00", "description": "VPC with public access", "displayName": "VPC", "lastModifiedAt": "2020-11-11T23:02:45.336000+00:00", "name": "simple-env" } }
    2. 添加值为 CUSTOMER_MANAGED 的 provisioning 参数以创建一个客户托管 环境模板。

      运行以下命令:

      $ aws proton create-environment-template \ --name "simple-env" \ --display-name "Fargate" \ --description "VPC with public access" \ --provisioning "CUSTOMER_MANAGED"

      响应:

      { "environmentTemplate": { "arn": "arn:aws:proton:region-id:123456789012:environment-template/simple-env", "createdAt": "2020-11-11T23:02:45.336000+00:00", "description": "VPC with public access", "displayName": "VPC", "lastModifiedAt": "2020-11-11T23:02:45.336000+00:00", "name": "simple-env", "provisioning": "CUSTOMER_MANAGED" } }
  2. 创建环境模板主要版本 1 的次要版本 0

    对于标准 和客户托管 环境模板,该步骤和其余步骤是相同的。

    包括模板名称、主要版本以及包含环境模板捆绑包的 S3 存储桶的存储桶名称和密钥。

    运行以下命令:

    $ aws proton create-environment-template-version \ --template-name "simple-env" \ --description "Version 1" \ --source s3="{bucket=your_s3_bucket, key=your_s3_key}"

    响应:

    { "environmentTemplateVersion": { "arn": "arn:aws:proton:region-id:123456789012:environment-template/simple-env:1.0", "createdAt": "2020-11-11T23:02:47.763000+00:00", "description": "Version 1", "lastModifiedAt": "2020-11-11T23:02:47.763000+00:00", "majorVersion": "1", "minorVersion": "0", "status": "REGISTRATION_IN_PROGRESS", "templateName": "simple-env" } }
  3. 使用 get 命令检查注册状态。

    运行以下命令:

    $ aws proton get-environment-template-version \ --template-name "simple-env" \ --major-version "1" \ --minor-version "0"

    响应:

    { "environment": { "arn": "arn:aws:proton:region-id:123456789012:environment-template/simple-env:1.0", "createdAt": "2020-11-11T23:02:47.763000+00:00", "description": "Version 1", "lastModifiedAt": "2020-11-11T23:02:47.763000+00:00", "majorVersion": "1", "minorVersion": "0", "recommendedMinorVersion": "0", "schema": "schema:\n format:\n openapi: \"3.0.0\"\n environment_input_type: \"MyEnvironmentInputType\"\n types:\n MyEnvironmentInputType:\n type: object\n description: \"Input properties for my environment\"\n properties:\n my_sample_input:\n type: string\n description: \"This is a sample input\"\n default: \"hello world\"\n my_other_sample_input:\n type: string\n description: \"Another sample input\"\n required:\n - my_other_sample_input\n", "status": "DRAFT", "statusMessage": "", "templateName": "simple-env" } }
  4. 提供模板名称以及主要版本和次要版本,以发布环境模板主要版本 1 的次要版本 0。该版本是 Recommended 版本。

    运行以下命令:

    $ aws proton update-environment-template-version \ --template-name "simple-env" \ --major-version "1" \ --minor-version "0" \ --status "PUBLISHED"

    响应:

    { "environmentTemplateVersion": { "arn": "arn:aws:proton:region-id:123456789012:environment-template/simple-env:1.0", "createdAt": "2020-11-11T23:02:47.763000+00:00", "description": "Version 1", "lastModifiedAt": "2020-11-11T23:02:54.610000+00:00", "majorVersion": "1", "minorVersion": "0", "recommendedMinorVersion": "0", "schema": "schema:\n format:\n openapi: \"3.0.0\"\n environment_input_type: \"MyEnvironmentInputType\"\n types:\n MyEnvironmentInputType:\n type: object\n description: \"Input properties for my environment\"\n properties:\n my_sample_input:\n type: string\n description: \"This is a sample input\"\n default: \"hello world\"\n my_other_sample_input:\n type: string\n description: \"Another sample input\"\n required:\n - my_other_sample_input\n", "status": "PUBLISHED", "statusMessage": "", "templateName": "simple-env" } }

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

运行以下命令:

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

注册和发布服务模板

在创建服务模板版本时,您可以指定兼容的环境模板列表。这样,在开发人员选择服务模板时,他们可以选择将其服务部署到哪个环境中。

在通过服务模板创建服务或发布服务模板之前,请确认环境是通过列出的兼容环境模板部署的。

如果将服务部署到通过删除的兼容环境模板构建的环境中,则无法 将该服务更新为新的主要版本。

要添加或删除服务模板版本的兼容环境模板,您可以为其创建新的主要版本。

您可以使用控制台或 AWS CLI 来注册和发布服务模板。

AWS 管理控制台
使用控制台注册并发布新的服务模板。
  1. 在 AWS Proton 控制台中,选择服务模板。

  2. 选择创建服务模板。

  3. 在创建服务模板页面上的模板捆绑包源部分中,选择可用的模板选项之一。

    • 使用自己的模板捆绑包。

    • 从 Git 同步模板。

  4. 提供模板捆绑包的路径。
    1. 如果您选择了从 Git 同步模板,在源代码存储库部分中:

      1. 为您的模板同步配置选择存储库。

      2. 输入要从中同步的存储库分支的名称。

      3. (可选)输入目录名称以限制模板捆绑包搜索。

    2. 否则,在 S3 捆绑包位置部分中,提供您的模板捆绑包的路径。

  5. 在模板详细信息部分中。

    1. 输入模板名称。

    2. (可选)输入模板显示名称。

    3. (可选)输入服务模板的模板描述。

  6. 在兼容的环境模板部分中,从兼容的环境模板列表中进行选择。

  7. (可选)在加密设置部分中,选择自定义加密设置 (高级) 以提供您自己的加密密钥。

  8. (可选)在管道部分中:

    如果在您的服务模板中不包含服务管道定义,请取消选中页面底部的管道 - 可选复选框。在创建服务模板后,您无法 更改该设置。有关更多信息,请参阅 模板捆绑包。

  9. (可选)在支持的组件源部分中,为组件源选择直接定义以允许将直接定义的组件附加到服务实例。

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

  11. 选择创建服务模板。

    您现在位于一个新页面中,其中显示新服务模板的状态和详细信息。这些详细信息包括标签列表 AWS 和客户管理的标签。 AWS Proton 在您创建 AWS Proton 资源时自动为您生成 AWS 托管标签。有关更多信息,请参阅 AWS Proton 资源和标记。

  12. 新服务模板的初始状态为草稿。您和具有 proton:CreateService 权限的其他人可以查看和访问该模板。执行下一步,以使该模板可供其他人使用。

  13. 在模板版本部分中,选择刚创建的模板次要版本 (1.0) 左侧的单选按钮。或者,您可以在信息提醒中选择发布并跳过下一步。

  14. 在模板版本部分中,选择发布。

  15. 模板状态变为已发布。由于它是最新的模板版本,因此,它是推荐版本。

  16. 在导航窗格中,选择服务模板以查看服务模板和详细信息列表。

使用控制台注册新的服务模板主要版本和次要版本。

有关更多信息,请参阅 版本控制的模板。

  1. 在 AWS Proton 控制台中,选择服务模板。

  2. 在服务模板列表中,选择要创建主要或次要版本的服务模板的名称。

  3. 在服务模板详细信息视图中,在模板版本部分中选择创建新版本。

  4. 在创建新服务模板版本页面上的捆绑包源部分中,选择使用自己的模板捆绑包。

  5. 在 S3 捆绑包位置部分中,选择您的模板捆绑包的路径。

  6. 在模板详细信息部分中。

    1. (可选)输入模板显示名称。

    2. (可选)输入服务模板的模板描述。

  7. 在模板详细信息部分中,选择以下选项之一。

    • 要创建次要版本,请将选中可创建新的主要版本复选框保留为空。

    • 要创建主要版本,请选中选中可创建新的主要版本复选框。

  8. 继续执行控制台步骤以创建新的次要版本或主要版本,然后选择创建新版本。

AWS CLI

要创建用于部署服务并且没有服务管道的服务模板,请将 --pipeline-provisioning "CUSTOMER_MANAGED" 参数和值添加到 create-service-template 命令中。按照模板捆绑包创建和服务模板捆绑包的架构要求中所述,配置您的模板捆绑包。

注意

在创建服务模板后,您无法修改 pipelineProvisioning。

  1. 使用 CLI 注册并发布一个新的服务模板(具有或没有服务管道),如以下步骤中所示。
    1. 使用 CLI 创建一个具有服务管道的服务模板。

      指定名称、显示名称(可选)和描述(可选)。

      运行以下命令:

      $ aws proton create-service-template \ --name "fargate-service" \ --display-name "Fargate" \ --description "Fargate-based Service"

      响应:

      { "serviceTemplate": { "arn": "arn:aws:proton:region-id:123456789012:service-template/fargate-service", "createdAt": "2020-11-11T23:02:55.551000+00:00", "description": "Fargate-based Service", "displayName": "Fargate", "lastModifiedAt": "2020-11-11T23:02:55.551000+00:00", "name": "fargate-service" } }
    2. 创建一个没有服务管道的服务模板。

      添加 --pipeline-provisioning。

      运行以下命令:

      $ aws proton create-service-template \ --name "fargate-service" \ --display-name "Fargate" \ --description "Fargate-based Service" \ --pipeline-provisioning "CUSTOMER_MANAGED"

      响应:

      { "serviceTemplate": { "arn": "arn:aws:proton:region-id:123456789012:service-template/fargate-service", "createdAt": "2020-11-11T23:02:55.551000+00:00", "description": "Fargate-based Service", "displayName": "Fargate", "lastModifiedAt": "2020-11-11T23:02:55.551000+00:00", "name": "fargate-service", "pipelineProvisioning": "CUSTOMER_MANAGED" } }
  2. 创建服务模板主要版本 1 的次要版本 0。

    包括模板名称、兼容的环境模板、主要版本以及包含服务模板捆绑包的 S3 存储桶的存储桶名称和密钥。

    运行以下命令:

    $ aws proton create-service-template-version \ --template-name "fargate-service" \ --description "Version 1" \ --source s3="{bucket=your_s3_bucket, key=your_s3_key}" \ --compatible-environment-templates '[{"templateName":"simple-env","majorVersion":"1"}]'

    响应:

    { "serviceTemplateMinorVersion": { "arn": "arn:aws:proton:region-id:123456789012:service-template/fargate-service:1.0", "compatibleEnvironmentTemplates": [ { "majorVersion": "1", "templateName": "simple-env" } ], "createdAt": "2020-11-11T23:02:57.912000+00:00", "description": "Version 1", "lastModifiedAt": "2020-11-11T23:02:57.912000+00:00", "majorVersion": "1", "minorVersion": "0", "status": "REGISTRATION_IN_PROGRESS", "templateName": "fargate-service" } }

  3. 使用 get 命令检查注册状态。

    运行以下命令:

    $ aws proton get-service-template-version \ --template-name "fargate-service" \ --major-version "1" \ --minor-version "0"

    响应:

    { "serviceTemplateMinorVersion": { "arn": "arn:aws:proton:us-east-1:123456789012:service-template/fargate-service:1.0", "compatibleEnvironmentTemplates": [ { "majorVersion": "1", "templateName": "simple-env" } ], "createdAt": "2020-11-11T23:02:57.912000+00:00", "description": "Version 1", "lastModifiedAt": "2020-11-11T23:02:57.912000+00:00", "majorVersion": "1", "minorVersion": "0", "schema": "schema:\n format:\n openapi: \"3.0.0\"\n pipeline_input_type: \"MyPipelineInputType\"\n service_input_type: \"MyServiceInstanceInputType\"\n\n types:\n MyPipelineInputType:\n type: object\n description: \"Pipeline input properties\"\n required:\n - my_sample_pipeline_required_input\n properties:\n my_sample_pipeline_optional_input:\n type: string\n description: \"This is a sample input\"\n default: \"hello world\"\n my_sample_pipeline_required_input:\n type: string\n description: \"Another sample input\"\n\n MyServiceInstanceInputType:\n type: object\n description: \"Service instance input properties\"\n required:\n - my_sample_service_instance_required_input\n properties:\n my_sample_service_instance_optional_input:\n type: string\n description: \"This is a sample input\"\n default: \"hello world\"\n my_sample_service_instance_required_input:\n type: string\n description: \"Another sample input\"", "status": "DRAFT", "statusMessage": "", "templateName": "fargate-service" } }
  4. 使用 update 命令将状态更改为 "PUBLISHED" 以发布服务模板。

    运行以下命令:

    $ aws proton update-service-template-version \ --template-name "fargate-service" \ --description "Version 1" \ --major-version "1" \ --minor-version "0" \ --status "PUBLISHED"

    响应:

    { "serviceTemplateVersion": { "arn": "arn:aws:proton:region-id:123456789012:service-template/fargate-service:1.0", "compatibleEnvironmentTemplates": [ { "majorVersion": "1", "templateName": "simple-env" } ], "createdAt": "2020-11-11T23:02:57.912000+00:00", "description": "Version 1", "lastModifiedAt": "2020-11-11T23:02:57.912000+00:00", "majorVersion": "1", "minorVersion": "0", "recommendedMinorVersion": "0", "schema": "schema:\n format:\n openapi: \"3.0.0\"\n pipeline_input_type: \"MyPipelineInputType\"\n service_input_type: \"MyServiceInstanceInputType\"\n\n types:\n MyPipelineInputType:\n type: object\n description: \"Pipeline input properties\"\n required:\n - my_sample_pipeline_required_input\n properties:\n my_sample_pipeline_optional_input:\n type: string\n description: \"This is a sample input\"\n default: \"hello pipeline\"\n my_sample_pipeline_required_input:\n type: string\n description: \"Another sample input\"\n\n MyServiceInstanceInputType:\n type: object\n description: \"Service instance input properties\"\n required:\n - my_sample_service_instance_required_input\n properties:\n my_sample_service_instance_optional_input:\n type: string\n description: \"This is a sample input\"\n default: \"hello world\"\n my_sample_service_instance_required_input:\n type: string\n description: \"Another sample input\"\n", "status": "PUBLISHED", "statusMessage": "", "templateName": "fargate-service" } }
  5. 使用 get 命令检索服务模板详细信息数据,检查是否 AWS Proton 已发布 1.0 版。

    运行以下命令:

    $ aws proton get-service-template-version \ --template-name "fargate-service" \ --major-version "1" \ --minor-version "0"

    响应:

    { "serviceTemplateMinorVersion": { "arn": "arn:aws:proton:us-east-1:123456789012:service-template/fargate-service:1.0", "compatibleEnvironmentTemplates": [ { "majorVersion": "1", "templateName": "simple-env" } ], "createdAt": "2020-11-11T23:02:57.912000+00:00", "description": "Version 1", "lastModifiedAt": "2020-11-11T23:03:04.767000+00:00", "majorVersion": "1", "minorVersion": "0", "schema": "schema:\n format:\n openapi: \"3.0.0\"\n pipeline_input_type: \"MyPipelineInputType\"\n service_input_type: \"MyServiceInstanceInputType\"\n\n types:\n MyPipelineInputType:\n type: object\n description: \"Pipeline input properties\"\n required:\n - my_sample_pipeline_required_input\n properties:\n my_sample_pipeline_optional_input:\n type: string\n description: \"This is a sample input\"\n default: \"hello world\"\n my_sample_pipeline_required_input:\n type: string\n description: \"Another sample input\"\n\n MyServiceInstanceInputType:\n type: object\n description: \"Service instance input properties\"\n required:\n - my_sample_service_instance_required_input\n properties:\n my_sample_service_instance_optional_input:\n type: string\n description: \"This is a sample input\"\n default: \"hello world\"\n my_sample_service_instance_required_input:\n type: string\n description: \"Another sample input\"", "status": "PUBLISHED", "statusMessage": "", "templateName": "fargate-service" } }