创建服务 - AWS Proton

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

创建服务

要使用 AWS Proton 部署应用程序,您作为开发人员需要创建一个服务并提供以下输入。

  1. 由平台团队发布的 AWS Proton 服务模板的名称。

  2. 服务的名称。

  3. 您要部署的服务实例数量。

  4. 您要使用的一组环境。

  5. 到代码存储库的连接 - 如果您使用的服务模板包含服务管道(可选)。

服务中包含的内容

在创建 AWS Proton 服务时,您可以从两种不同类型的服务模板中进行选择:

  • 包含服务管道的服务模板(默认)。

  • 包含服务管道的服务模板。

在创建服务时,您必须至少创建一个服务实例。

服务实例和可选管道与服务相关联。您只能在服务创建删除 操作的上下文中创建或删除管道。要了解如何在服务中添加和删除实例,请参阅编辑服务

注意

您的环境配置为 AWS 托管式预置或自托管式预置。AWS Proton 使用与环境相同的预置方法在环境中预置服务。创建或更新服务实例的开发人员看不到差异,并且他们在这两种情况下的体验是相同的。

有关预置方法的更多信息,请参阅AWS Proton 如何预置基础设施

服务模板

服务模板具有主要版本和次要版本。在使用控制台时,您可以选择服务模板的最新 Recommended 主要版本和次要版本。在您使用 AWS CLI 并且仅指定服务模板的主要版本时,您隐式指定了最新的 Recommended 次要版本。

下面介绍了主要和次要模板版本的区别及其用途。

  • 在获得平台团队成员的批准后,新的模板版本就会变为Recommended版本。这意味着,新服务是使用该版本创建的,并提示您将现有服务更新为新版本。

  • 通过 AWS Proton,平台团队可以自动将服务实例更新为新的服务模板次要版本。次要版本必须向后兼容。

  • 由于主要版本要求您在更新过程中提供新输入,因此,您需要将服务更新为其服务模板的主要版本。主要版本 向后兼容。

创建服务

以下过程说明了如何使用 AWS Proton 控制台或 AWS CLI 创建具有或没有服务管道的服务。

AWS Management Console
创建一个服务,如以下控制台步骤中所示。
  1. AWS Proton 控制台中,选择服务

  2. 选择 Create service

  3. 选择服务模板页面中,选择一个模板,然后选择配置

    如果您 希望使用启用的管道,请为您的服务选择标记为不包含管道的模板。

  4. 配置服务页面上的服务设置部分中,输入一个服务名称

  5. (可选)输入服务的描述。

  6. 服务存储库设置部分中:
    1. 对于 CodeStar 连接,从列表中选择您的连接。

    2. 对于存储库 ID,从列表中选择您的源代码存储库的名称。

    3. 对于分支名称,从列表中选择您的源代码存储库分支的名称。

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

  8. 选择下一步

  9. 配置自定义设置页面上的服务实例部分中,在新实例部分中,您必须输入 required 参数的值。您可以输入 optional 参数的值,或使用给定的默认值。

  10. 管道输入部分中,您必须输入 required 参数的值。您可以输入 optional 参数的值,或使用给定的默认值。

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

  12. 选择创建

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

  13. 在导航窗格中,选择服务

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

AWS CLI

在使用 AWS CLI 时,您可以在位于源代码目录的 YAML 格式 spec 文件 (.aws-proton/service.yaml) 中指定服务输入。

您可以使用 CLI get-service-template-minor-version 命令,查看您在规范文件中提供值的架构必需参数和可选参数。

如果要使用具有 pipelineProvisioning: "CUSTOMER_MANAGED" 的服务模板,请不要 在规范中包含 pipeline: 部分,并且不要create-service 命令中包含 -repository-connection-arn-repository-id-branch-name 参数。

创建一个具有服务管道的服务,如以下 CLI 步骤中所示。

  1. 为管道设置服务角色,如以下 CLI 示例命令中所示。

    命令:

    $ aws proton update-account-settings \ --pipeline-service-role-arn "arn:aws:iam::123456789012:role/AWSProtonServiceRole"
  2. 以下列表显示基于服务模板架构的示例规范,其中包括服务管道和实例输入。

    规范:

    proton: ServiceSpec pipeline: my_sample_pipeline_required_input: "hello" my_sample_pipeline_optional_input: "bye" instances: - name: "acme-network-dev" environment: "ENV_NAME" spec: my_sample_service_instance_required_input: "hi" my_sample_service_instance_optional_input: "ho"

    创建一个具有管道的服务,如以下 CLI 示例命令和响应中所示。

    命令:

    $ aws proton create-service \ --name "MySimpleService" \ --branch-name "mainline" \ --template-major-version "1" \ --template-name "fargate-service" \ --repository-connection-arn "arn:aws:codestar-connections:region-id:123456789012:connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" \ --repository-id "myorg/myapp" \ --spec "file://spec.yaml"

    响应:

    { "service": { "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleService", "createdAt": "2020-11-18T19:50:27.460000+00:00", "lastModifiedAt": "2020-11-18T19:50:27.460000+00:00", "name": "MySimpleService", "repositoryConnectionArn": "arn:aws:codestar-connections:region-id:123456789012:connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "repositoryId": "myorg/myapp", "status": "CREATE_IN_PROGRESS", "templateName": "fargate-service" } }

创建一个没有服务管道的服务,如以下 CLI 示例命令和响应中所示。

下面显示了一个 包含服务管道输入的示例规范。

规范:

proton: ServiceSpec instances: - name: "acme-network-dev" environment: "ENV_NAME" spec: my_sample_service_instance_required_input: "hi" my_sample_service_instance_optional_input: "ho"

要创建一个没有 预置的服务管道的服务,您需要提供 spec.yaml 的路径,并且 包含存储库参数,如以下 CLI 示例命令和响应中所示。

命令:

$ aws proton create-service \ --name "MySimpleServiceNoPipeline" \ --template-major-version "1" \ --template-name "fargate-service" \ --spec "file://spec-no-pipeline.yaml"

响应:

{ "service": { "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleServiceNoPipeline", "createdAt": "2020-11-18T19:50:27.460000+00:00", "lastModifiedAt": "2020-11-18T19:50:27.460000+00:00", "name": "MySimpleServiceNoPipeline", "status": "CREATE_IN_PROGRESS", "templateName": "fargate-service-no-pipeline" } }