

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

# 教程：创建部署到 Service Catalog 的管道
<a name="tutorials-S3-servicecatalog"></a>

Service Catalog 使您能够基于 Amazon CloudFormation 模板创建和配置产品。

**重要**  
作为创建管道的一部分，客户提供的 S3 工件存储桶将 CodePipeline 用于项目。（这与用于 S3 源操作的存储桶不同。） 如果 S3 工件存储桶与您的管道账户位于不同的账户中，请确保 S3 工件存储桶归其所有 Amazon Web Services 账户 ，该存储桶是安全且可靠的。

本教程向您展示如何创建和配置管道，以便将您的产品模板部署到 Service Catalog，并交付您在源存储库（已在 GitHub CodeCommit、或 Amazon S3 中创建）中所做的更改。

**注意**  
当 Amazon S3 是管道的源提供程序时，您必须将所有源文件打包为单个 .zip 文件上传到桶。否则，源操作将失败。

首先，您在 Service Catalog 中创建一个产品，然后在 Amazon CodePipeline中创建管道。本教程提供两个设置部署配置的选项：
+ 在 Service Catalog 中创建产品并将模板文件上传到您的源存储库。在 CodePipeline 控制台中提供产品版本和部署配置（无需单独的配置文件）。请参阅[选项 1：在不使用配置文件的情况下部署到 Service Catalog](#tutorials-S3-servicecatalog-ex1-configure)。
**注意**  
可以按 YAML 或 JSON 格式创建模板文件。
+ 在 Service Catalog 中创建产品并将模板文件上传到您的源存储库。在单独的配置文件中提供产品版本和部署配置。请参阅[选项 2：使用配置文件部署到 Service Catalog](#tutorials-S3-servicecatalog-ex2-configure)。

## 选项 1：在不使用配置文件的情况下部署到 Service Catalog
<a name="tutorials-S3-servicecatalog-ex1-configure"></a>

在此示例中，您上传了 S3 存储桶的示例 Amazon CloudFormation 模板文件，然后在 Service Catalog 中创建您的产品。接下来，创建管道并在 CodePipeline 控制台中指定部署配置。

### 步骤 1：将示例模板文件上传到源存储库
<a name="tutorials-S3-servicecatalog-configure"></a>

1. 打开文本编辑器。通过将以下内容粘贴到文件中创建一个示例模板。将该文件保存为 `S3_template.json`。

   ```
   {
     "AWSTemplateFormatVersion": "2010-09-09",
     "Description": "CloudFormation Sample Template S3_Bucket: Sample template showing how to create a privately accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the resources used if you create a stack from this template.",
     "Resources": {
       "S3Bucket": {
         "Type": "AWS::S3::Bucket",
         "Properties": {}
       }
     },
     "Outputs": {
       "BucketName": {
         "Value": {
           "Ref": "S3Bucket"
         },
         "Description": "Name of Amazon S3 bucket to hold website content"
       }
     }
   }
   ```

   此模板 Amazon CloudFormation 允许创建可由 Service Catalog 使用的 S3 存储桶。

1. 将 `S3_template.json`文件上传到 Amazon CodeCommit 存储库中。

### 步骤 2：在 Service Catalog 中创建产品
<a name="tutorials-S3-servicecatalog-product"></a>

1. 以 IT 管理员身份登录到 Service Catalog 控制台，转到**产品**页面，然后选择**上传新产品**。

1. 在**上传新产品**页面上，完成以下操作：

   1. 在**产品名称**中，输入您要用于新产品的名称。

   1. 在**描述**中，输入产品目录描述。此说明显示在产品列表中，可帮助用户选择正确的产品。

   1. 在**提供者**中，输入 IT 部门或管理员的名称。

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

1. （可选）在**输入支持详细信息**中，输入产品支持联系人信息，然后选择**下一步**。

1. 在**版本详细信息**中，完成以下内容：

   1. 选择**上传模板文件**。浏览您的 `S3_template.json` 文件并将其上传。

   1. 在**版本标题**中，输入产品版本名称（例如 **devops S3 v2**）。

   1. 在**描述**中，输入区分此版本与其他版本的详细信息。

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

1. 在**审核**页面上，确认信息正确，然后选择**创建**。

1. 在**产品**页面上，在浏览器中复制新产品的 URL。这包含产品 ID。复制并保留此产品 ID。在 CodePipeline 中创建管道时要使用它。

   以下是名为 `my-product` 的产品的 URL。要提取产品 ID，请复制等号（`=`）和符号（`&`）之间的值。在此示例中，产品 ID 为 `prod-example123456`。

   ```
   https://<region-URL>/servicecatalog/home?region=<region>#/admin-products?productCreated=prod-example123456&createdProductTitle=my-product
   ```
**注意**  
复制您的产品的 URL，然后再离开该页面。离开此页面后，必须使用 CLI 获取产品 ID。

   几秒钟后，您的产品会显示在**产品**页面上。您可能需要刷新浏览器才能在列表中看到此产品。

### 步骤 3：创建管道
<a name="tutorials-S3-servicecatalog-pipeline"></a>

1. 要命名您的管道并选择用于管道的参数，请执行以下操作：

   1. 登录 Amazon Web Services 管理控制台 并打开 CodePipeline 控制台，网址为[https://console.aws.amazon.com/codepipeline/](https://console.amazonaws.cn/codepipeline/)。

   1. 在**欢迎**页面、**入门**页面或**管道**页面上，选择**创建管道**。

   1. 在**步骤 1：选择创建选项**页面上的**创建选项**下，选择**构建自定义管道**选项。选择**下一步**。

   1. 在**步骤 2：选择管道设置**的**管道名称**中，输入管道的名称。

   1. CodePipeline 提供 V1 和 V2 类型的管道，它们的特性和价格各不相同。在控制台中，您只能选择 V2 类型。有关更多信息，请参阅[管道类型](https://docs.amazonaws.cn/codepipeline/latest/userguide/pipeline-types-planning.html?icmpid=docs_acp_help_panel)。有关定价的信息 CodePipeline，请参阅[定价](https://www.amazonaws.cn/codepipeline/pricing/)。

   1. 在**服务角色**中，选择**新建服务角色** CodePipeline 以允许在 IAM 中创建服务角色。

   1. 将**高级设置**中的各项设置保留为默认值，然后选择**下一步**。

1. 要在**步骤 3：添加源阶段**页面上添加源阶段，请执行以下操作：

   1. 在**源提供程序**中，选择 **Amazon CodeCommit**。

   1. 在**存储库名称**和**分支名称**中，输入您要用于自己的源操作的存储库和分支。

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

1. 在**步骤 4：添加构建阶段**中，选择**跳过构建阶段**，并通过再次选择**跳过**接受警告消息。

1. 在**步骤 5：添加测试阶段**中，选择**跳过测试阶段**，并通过再次选择**跳过**接受警告消息。

   选择**下一步**。

1. 在**步骤 6：添加部署阶段**中，完成以下操作：

   1. 在**部署提供商**中，选择**Amazon Service Catalog**。

   1. 对于部署配置，请选择**输入部署配置**。

   1. 在**产品 ID** 中，粘贴您从 Service Catalog 控制台复制的产品 ID。

   1. 在**模板文件路径**中，输入存储模板文件的位置的相对路径。

   1. 在**产品类型**中，选择 **Amazon CloudFormation 模板**。

   1. 在**产品版本名称**中，输入您在 Service Catalog 中指定的产品版本的名称。如果您想将模板更改部署到新的产品版本，请输入尚未用于同一产品中任何先前产品版本的产品版本名称。

   1. 对于**输入项目**，选择源输入项目。

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

1. 在**步骤 7：审核**中，审核您的管道设置，然后选择**创建**。

1. 管道成功运行后，在部署阶段上选择**详细信息**。这会在 Service Catalog 中打开您的产品。  
![\[\]](http://docs.amazonaws.cn/codepipeline/latest/userguide/images/deploy-servicecatalog-pipeline.png)

1. 在您的产品信息中，选择您的版本名称以打开产品模板。查看模板部署。

### 步骤 4：在 Service Catalog 中推送更改并验证产品
<a name="tutorials-S3-servicecatalog-change"></a>

1. 在 CodePipeline 控制台中查看您的管道，然后在源代码舞台上选择 Deta **ils**。您的源 Amazon CodeCommit 存储库将在控制台中打开。选择**编辑**，然后在文件中进行更改（例如，更改描述）。

   ```
   "Description": "Name of Amazon S3 bucket to hold and version website content"
   ```

1. 提交并推送您的更改。推送更改后，您的管道启动。当管道运行完成时，在部署阶段上选择**详细信息**以在 Service Catalog 中打开您的产品。

1. 在您的产品信息中，选择新的版本名称以打开产品模板。查看部署的模板更改。

## 选项 2：使用配置文件部署到 Service Catalog
<a name="tutorials-S3-servicecatalog-ex2-configure"></a>

在此示例中，您上传了 S3 存储桶的示例 Amazon CloudFormation 模板文件，然后在 Service Catalog 中创建您的产品。您还可以上传指定您的部署配置的单独配置文件。接下来，您可以创建您的管道，并指定部署文件的位置。

### 步骤 1：将示例模板文件上传到源存储库
<a name="tutorials-S3-servicecatalog-upload2"></a>

1. 打开文本编辑器。通过将以下内容粘贴到文件中创建一个示例模板。将该文件保存为 `S3_template.json`。

   ```
   {
     "AWSTemplateFormatVersion": "2010-09-09",
     "Description": "CloudFormation Sample Template S3_Bucket: Sample template showing how to create a privately accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the resources used if you create a stack from this template.",
     "Resources": {
       "S3Bucket": {
         "Type": "AWS::S3::Bucket",
         "Properties": {}
       }
     },
     "Outputs": {
       "BucketName": {
         "Value": {
           "Ref": "S3Bucket"
         },
         "Description": "Name of Amazon S3 bucket to hold website content"
       }
     }
   }
   ```

   此模板 Amazon CloudFormation 允许创建可由 Service Catalog 使用的 S3 存储桶。

1. 将 `S3_template.json`文件上传到 Amazon CodeCommit 存储库中。

### 步骤 2：创建产品部署配置文件
<a name="tutorials-S3-servicecatalog-configure2"></a>

1. 打开文本编辑器。为您的产品创建配置文件。配置文件用于定义 Service Catalog 部署参数/首选项。创建管道时要使用此文件。

   此示例提供了“devops S3 v2”的 `ProductVersionName` 和 `MyProductVersionDescription` 的 `ProductVersionDescription`。如果您想将模板更改部署到新的产品版本，只需输入尚未用于同一产品中任何先前产品版本的产品版本名称。

    将该文件保存为 `sample_config.json`。

   ```
   {
       "SchemaVersion": "1.0",
       "ProductVersionName": "devops S3 v2",
       "ProductVersionDescription": "MyProductVersionDescription",
       "ProductType": "CLOUD_FORMATION_TEMPLATE",
       "Properties": {
           "TemplateFilePath": "/S3_template.json"
       }
   }
   ```

   此文件将在您的管道每次运行时为您创建产品版本信息。

1. 将 `sample_config.json`文件上传到 Amazon CodeCommit 存储库中。确保您将此文件上载到您的源存储库。

### 步骤 3：在 Service Catalog 中创建产品
<a name="tutorials-S3-servicecatalog-product2"></a>

1. 以 IT 管理员身份登录到 Service Catalog 控制台，转到**产品**页面，然后选择**上传新产品**。

1. 在**上传新产品**页面上，完成以下操作：

   1. 在**产品名称**中，输入您要用于新产品的名称。

   1. 在**描述**中，输入产品目录描述。此说明出现在产品列表中，可帮助用户选择正确的产品。

   1. 在**提供者**中，输入 IT 部门或管理员的名称。

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

1. （可选）在**输入支持详细信息**中，输入产品支持联系人信息，然后选择**下一步**。

1. 在**版本详细信息**中，完成以下内容：

   1. 选择**上传模板文件**。浏览您的 `S3_template.json` 文件并将其上传。

   1. 在**版本标题**中，输入产品版本的名称（例如，“devops S3 v2”）。

   1. 在**描述**中，输入区分此版本与其他版本的详细信息。

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

1. 在**审核**页面上，确认信息正确，然后选择**确认并上传**。

1. 在**产品**页面上，在浏览器中复制新产品的 URL。这包含产品 ID。复制并保留此产品 ID。在 CodePipeline 中创建管道时要使用它。

   以下是名为 `my-product` 的产品的 URL。要提取产品 ID，请复制等号（`=`）和符号（`&`）之间的值。在此示例中，产品 ID 为 `prod-example123456`。

   ```
   https://<region-URL>/servicecatalog/home?region=<region>#/admin-products?productCreated=prod-example123456&createdProductTitle=my-product
   ```
**注意**  
复制您的产品的 URL，然后再离开该页面。离开此页面后，必须使用 CLI 获取产品 ID。

   几秒钟后，您的产品会显示在**产品**页面上。您可能需要刷新浏览器才能在列表中看到此产品。

### 步骤 4：创建管道
<a name="tutorials-S3-servicecatalog-pipeline2"></a>

1. 要命名您的管道并选择用于管道的参数，请执行以下操作：

   1. 登录 Amazon Web Services 管理控制台 并打开 CodePipeline 控制台，网址为[https://console.aws.amazon.com/codepipeline/](https://console.amazonaws.cn/codepipeline/)。

   1. 选择**开始使用**。选择**创建管道**，然后输入管道名称。

   1. 在**服务角色**中，选择**新建服务角色** CodePipeline 以允许在 IAM 中创建服务角色。

   1. 将**高级设置**中的各项设置保留为默认值，然后选择**下一步**。

1. 要添加源阶段，请执行以下操作：

   1. 在**源提供程序**中，选择 **Amazon CodeCommit**。

   1. 在**存储库名称**和**分支名称**中，输入您要用于自己的源操作的存储库和分支。

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

1. 在**添加构建阶段**中，选择**跳过构建阶段**，然后再次选择**跳过**以接受警告消息。

1. 在**添加部署阶段**中，完成以下操作：

   1. 在**部署提供商**中，选择**Amazon Service Catalog**。

   1. 选择**使用配置文件**。

   1. 在**产品 ID** 中，粘贴您从 Service Catalog 控制台复制的产品 ID。

   1. 在**配置文件路径**中，输入存储库中配置文件的文件路径。

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

1. 在**审核**中，审核您的管道设置，然后选择**创建**。

1. 管道成功运行后，在部署阶段上选择**详细信息**，以便在 Service Catalog 中打开您的产品。  
![\[\]](http://docs.amazonaws.cn/codepipeline/latest/userguide/images/deploy-servicecatalog-pipeline.png)

1. 在您的产品信息中，选择您的版本名称以打开产品模板。查看模板部署。

### 步骤 5：在Service Catalog 中推送更改并验证产品
<a name="tutorials-S3-servicecatalog-change2"></a>

1. 在 CodePipeline 控制台中查看您的管道，然后在源代码舞台上选择 Deta **ils**。您的源 Amazon CodeCommit 存储库将在控制台中打开。选择**编辑**，然后在文件中进行更改（例如，更改描述）。

   ```
   "Description": "Name of Amazon S3 bucket to hold and version website content"
   ```

1. 提交并推送您的更改。推送更改后，您的管道启动。当管道运行完成时，在部署阶段上选择**详细信息**以在 Service Catalog 中打开您的产品。

1. 在您的产品信息中，选择新的版本名称以打开产品模板。查看部署的模板更改。