

终止支持通知：2026 年 10 月 7 日， AWS 将终止对的支持。 AWS Proton 2026 年 10 月 7 日之后，您将无法再访问 AWS Proton 控制台或 AWS Proton 资源。您部署的基础架构将保持不变。有关更多信息，请参阅《[AWS Proton 服务弃用和迁移指南》](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html)。

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

# 创建服务
<a name="ag-create-svc"></a>

要与开发人员一起 AWS Proton部署应用程序，您需要创建一项服务并提供以下输入。

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

1. 服务的名称。

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

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

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

## 服务中包含的内容
<a name="ag-create-svc.info"></a>

创建 AWS Proton 服务时，您可以从两种不同类型的服务模板中进行选择：
+ 包含服务管道的服务模板（默认）。
+ *不* 包含服务管道的服务模板。

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

服务实例和可选管道与服务相关联。您只能在服务*创建* 和*删除* 操作的上下文中创建或删除管道。要了解如何在服务中添加和删除实例，请参阅[编辑服务](ag-svc-update.md)。

**注意**  
您的环境已配置为使用 AWS-或自行管理配置。 AWS Proton 使用与环境相同的配置方法在环境中配置服务。创建或更新服务实例的开发人员看不到差异，并且他们在这两种情况下的体验是相同的。  
有关预置方法的更多信息，请参阅[如何配置 AWS Proton 基础架构](ag-works-prov-methods.md)。

## 服务模板
<a name="ag-create-svc.templates"></a>

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

下面介绍了主要和次要模板版本的区别及其用途。
+ 在获得平台团队成员的批准后，新的模板版本就会变为`Recommended`版本。这意味着，新服务是使用该版本创建的，并提示您将现有服务更新为新版本。
+ 通过该平台 AWS Proton，平台团队可以自动将服务实例更新为服务模板的新次要版本。次要版本必须向后兼容。
+ 由于主要版本要求您在更新过程中提供新输入，因此，您需要将服务更新为其服务模板的主要版本。主要版本*不* 向后兼容。

## 创建服务
<a name="ag-create-svc.procedure"></a>

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

------
#### [ AWS 管理控制台 ]

**创建一个服务，如以下控制台步骤中所示。**

1. 在 [AWS Proton 控制台](https://console.aws.amazon.com//proton/)中，选择**服务**。

1. 选择 **Create service**。

1. 在**选择服务模板**页面中，选择一个模板，然后选择**配置**。

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

1. 在**配置服务**页面上的**服务设置**部分中，输入一个**服务名称**。

1. （可选）输入服务的描述。

1. 

**在**服务存储库设置**部分中：**

   1. 在 “**CodeStar 连接**” 中，从列表中选择您的连接。

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

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

1. （可选）在**标签**部分中，选择**添加新标签**，并输入键和值以创建一个客户托管标签。

1. 选择**下一步**。

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

1. 在**管道输入**部分中，您必须输入 `required` 参数的值。您可以输入 `optional` 参数的值，或使用给定的默认值。

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

1. 选择**创建**。

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

1. 在导航窗格中，选择**服务**。

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

------
#### [ 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. **为管道设置[服务角色](security_iam_service-role-policy-examples.md#codepipeline-proton-svc-role)，如以下 CLI 示例命令中所示。**

   命令:

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

1. 以下列表显示基于服务模板架构的示例规范，其中包括服务管道和实例输入。

   规范：

   ```
   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"
    }
}
```

------