本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建服务
要使用 AWS Proton 部署应用程序,您作为开发人员需要创建一个服务并提供以下输入。
-
由平台团队发布的 AWS Proton 服务模板的名称。
-
服务的名称。
-
您要部署的服务实例数量。
-
您要使用的一组环境。
-
到代码存储库的连接 - 如果您使用的服务模板包含服务管道(可选)。
服务中包含的内容
在创建 AWS Proton 服务时,您可以从两种不同类型的服务模板中进行选择:
-
包含服务管道的服务模板(默认)。
-
不 包含服务管道的服务模板。
在创建服务时,您必须至少创建一个服务实例。
服务实例和可选管道与服务相关联。您只能在服务创建 和删除 操作的上下文中创建或删除管道。要了解如何在服务中添加和删除实例,请参阅编辑服务。
您的环境配置为 AWS 托管式预置或自托管式预置。AWS Proton 使用与环境相同的预置方法在环境中预置服务。创建或更新服务实例的开发人员看不到差异,并且他们在这两种情况下的体验是相同的。
有关预置方法的更多信息,请参阅AWS Proton 如何预置基础设施。
服务模板
服务模板具有主要版本和次要版本。在使用控制台时,您可以选择服务模板的最新 Recommended
主要版本和次要版本。在您使用 AWS CLI 并且仅指定服务模板的主要版本时,您隐式指定了最新的 Recommended
次要版本。
下面介绍了主要和次要模板版本的区别及其用途。
-
在获得平台团队成员的批准后,新的模板版本就会变为Recommended
版本。这意味着,新服务是使用该版本创建的,并提示您将现有服务更新为新版本。
-
通过 AWS Proton,平台团队可以自动将服务实例更新为新的服务模板次要版本。次要版本必须向后兼容。
-
由于主要版本要求您在更新过程中提供新输入,因此,您需要将服务更新为其服务模板的主要版本。主要版本不 向后兼容。
创建服务
以下过程说明了如何使用 AWS Proton 控制台或 AWS CLI 创建具有或没有服务管道的服务。
- AWS Management Console
-
创建一个服务,如以下控制台步骤中所示。
-
在 AWS Proton 控制台中,选择服务。
-
选择 Create service。
-
在选择服务模板页面中,选择一个模板,然后选择配置。
如果您不 希望使用启用的管道,请为您的服务选择标记为不包含管道的模板。
-
在配置服务页面上的服务设置部分中,输入一个服务名称。
-
(可选)输入服务的描述。
-
在服务存储库设置部分中:
-
对于 CodeStar 连接,从列表中选择您的连接。
-
对于存储库 ID,从列表中选择您的源代码存储库的名称。
-
对于分支名称,从列表中选择您的源代码存储库分支的名称。
-
(可选)在标签部分中,选择添加新标签,并输入键和值以创建一个客户托管标签。
-
选择下一步。
-
在配置自定义设置页面上的服务实例部分中,在新实例部分中,您必须输入 required
参数的值。您可以输入 optional
参数的值,或使用给定的默认值。
-
在管道输入部分中,您必须输入 required
参数的值。您可以输入 optional
参数的值,或使用给定的默认值。
-
选择下一步并检查您的输入。
-
选择创建。
查看服务详细信息和状态,以及您的服务的 AWS 托管标签和客户托管标签。
-
在导航窗格中,选择服务。
新页面将显示您的服务列表以及状态和其他服务详细信息。
- 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 步骤中所示。
-
为管道设置服务角色,如以下 CLI 示例命令中所示。
命令:
$
aws proton update-account-settings \
--pipeline-service-role-arn "arn:aws:iam::123456789012
:role/AWSProtonServiceRole
"
-
以下列表显示基于服务模板架构的示例规范,其中包括服务管道和实例输入。
规范:
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"
}
}