

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 教學課程：建立部署至 Service Catalog 的管道
<a name="tutorials-S3-servicecatalog"></a>

Service Catalog 可讓您根據 AWS CloudFormation 範本建立和佈建產品。

**重要**  
在建立管道的過程中，CodePipeline 將使用客戶提供的 S3 成品儲存貯體來製作成品。（這與用於 S3 來源動作的 儲存貯體不同。) 如果 S3 成品儲存貯體位於與管道帳戶不同的帳戶中，請確定 S3 成品儲存貯體由 所擁有 AWS 帳戶 ，安全且可靠。

本教學課程說明如何建立和設定管道，以將產品範本部署至 Service Catalog，並交付您在來源儲存庫中所做的變更 （已在 GitHub、CodeCommit 或 Amazon S3 中建立）。

**注意**  
當 Amazon S3 是管道的來源提供者時，您必須將所有封裝為單一 .zip 檔案的來源檔案上傳至儲存貯體。否則，來源動作會失敗。

首先，在 Service Catalog 中建立產品，然後在其中建立管道 AWS 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 儲存貯體的範例 AWS 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"
       }
     }
   }
   ```

   此範本允許 AWS CloudFormation 建立可供 Service Catalog 使用的 S3 儲存貯體。

1. 將 `S3_template.json` 檔案上傳至 AWS CodeCommit 儲存庫。

### 步驟 2：在 Service Catalog 中建立產品
<a name="tutorials-S3-servicecatalog-product"></a>

1. 身為 IT 管理員，請登入 Service Catalog 主控台，前往**產品**頁面，然後選擇**上傳新產品**。

1. 在 **Upload new product (上傳新產品)** 頁面上，完成下列動作：

   1. 在 **Product name (產品名稱)** 中，輸入您想要使用的新產品名稱。

   1. 在 **Description (敘述)** 中輸入產品型錄描述。此處的描述會顯示在產品列表中，以協助使用者選擇正確的產品。

   1. 在 **Provided by (提供者)** 中輸入 IT 部門或管理員的名稱。

   1. 選擇**下一步**。

1. (選擇性) 在 **Enter support details (輸入支援詳細資訊)** 中，請輸入產品支援聯絡資訊，然後選擇 **Next (下一步)**。

1. 於 **Version details (版本詳細資訊)** 中，完成以下項目：

   1. 選擇 **Upload a template file (上傳範本檔案)**。瀏覽您的 `S3_template.json` 檔案並上傳。

   1. 在 **Version title (版本標題)** 中，輸入產品版本名稱 (例如，**devops S3 v2**)。

   1. 在 **Description (敘述)** 中，輸入區分此版本與其他版本的詳細資訊。

   1. 選擇**下一步**。

1. 在 **Review (檢閱)** 頁面上，確認資訊正確，然後選擇 **Create (建立)**。

1. 在瀏覽器中複製 **Products (產品)** 頁面上的 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。

   幾秒鐘後，您的產品即會出現在 **Products (產品)** 頁面上。可能需要重新整理瀏覽器才能在清單中看到產品。

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

1. 若要命名管道和選擇管道參數，請執行下列動作：

   1. 登入 AWS 管理主控台 並開啟 CodePipeline 主控台，網址為 https：//[https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/)。

   1. 在 **Welcome (歡迎)** 頁面、**Getting started (入門)** 頁面、或者 **Pipelines (管道)** 頁面上，選擇 **Create pipeline (建立管道)**。

   1. 在**步驟 1：選擇建立選項**頁面的**建立選項**下，選擇**建置自訂管道**選項。選擇**下一步**。

   1. 在**步驟 2：選擇管道設定**中，在**管道名稱**中輸入管道的名稱。

   1. CodePipeline 提供 V1 和 V2 類型的管道，其特性和價格有所不同。V2 類型是您可以在 主控台中選擇的唯一類型。如需詳細資訊，請參閱[管道類型](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types-planning.html?icmpid=docs_acp_help_panel)。如需 CodePipeline 定價的資訊，請參閱 [定價](https://aws.amazon.com/codepipeline/pricing/)。

   1. 在**服務角色**中，選擇**新服務角色**，以允許 CodePipeline 在 IAM 中建立服務角色。

   1. 將 **Advanced settings (進階設定)** 下的設定保留為預設值，然後選擇 **Next (下一步)**。

1. 若要在**步驟 3：新增來源階段頁面上新增來源階段**，請執行下列動作：

   1. 在 **Source provider (來源提供者)** 中選擇 **AWS CodeCommit**。

   1. 在 **Repository name (儲存庫名稱)** 和 **Branch name (分支名稱)** 中，輸入您想為來源動作使用的儲存庫和分支。

   1. 選擇**下一步**。

1. 在**步驟 4：新增建置階段**中，選擇**略過建置階段**，然後再次選擇**略過**以接受警告訊息。

1. 在**步驟 5：新增測試階段**中，選擇**略過測試階段**，然後再次選擇**略過**以接受警告訊息。

   選擇**下一步**。

1. 在**步驟 6：新增部署階段**中，完成下列操作：

   1. 在**部署提供者**中，選擇 **AWS Service Catalog**。

   1. 對於部署設定，選擇 **Enter deployment configuration (輸入部署設定)**。

   1. 在**產品 ID** 中，貼上您從 Service Catalog 主控台複製的產品 ID。

   1. 在 **Template file path (範本檔案路徑)** 中，輸入範本檔案存放的相對路徑。

   1. 在**產品類型**中，選擇**CloudFormation 範本**。

   1. 在**產品版本名稱**中，輸入您在 Service Catalog 中指定的產品版本名稱。如果要將範本變更部署到新產品版本，請輸入同一產品之前版本中未曾使用過的產品版本名稱。

   1. 對於 **Input artifact (輸入成品)**，請選擇來源輸入成品。

   1. 選擇**下一步**。

1. 在**步驟 7：檢閱**中，檢閱管道設定，然後選擇**建立**。

1. 管道成功執行之後，在部署階段選擇 **Details (詳細資訊)**。這會在 Service Catalog 中開啟您的產品。  
![\[\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/images/deploy-servicecatalog-pipeline.png)

1. 在您的產品資訊下，選擇您的版本名稱以開啟產品範本。檢視範本部署。

### 步驟 4：推送變更並在 Service Catalog 中驗證您的產品
<a name="tutorials-S3-servicecatalog-change"></a>

1. 在 CodePipeline 主控台中檢視管道，然後在來源階段選擇**詳細資訊**。您的來源 AWS CodeCommit 儲存庫會在 主控台中開啟。選擇 **Edit (編輯)**，並在檔案中進行變更 (例如，對描述進行變更)。

   ```
   "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 儲存貯體的範例 AWS 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"
       }
     }
   }
   ```

   此範本允許 AWS CloudFormation 建立可供 Service Catalog 使用的 S3 儲存貯體。

1. 將 `S3_template.json` 檔案上傳至 AWS 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` 檔案上傳至 AWS CodeCommit 儲存庫。請確定您上傳此檔案到您的來源儲存庫。

### 步驟 3：在 Service Catalog 中建立產品
<a name="tutorials-S3-servicecatalog-product2"></a>

1. 身為 IT 管理員，請登入 Service Catalog 主控台，前往**產品**頁面，然後選擇**上傳新產品**。

1. 在 **Upload new product (上傳新產品)** 頁面上，完成下列動作：

   1. 在 **Product name (產品名稱)** 中，輸入您想要使用的新產品名稱。

   1. 在 **Description (敘述)** 中輸入產品型錄描述。此處的描述顯示於產品列表中，以協助使用者選擇正確的產品。

   1. 在 **Provided by (提供者)** 中輸入 IT 部門或管理員的名稱。

   1. 選擇**下一步**。

1. (選擇性) 在 **Enter support details (輸入支援詳細資訊)** 中，請輸入產品支援聯絡資訊，然後選擇 **Next (下一步)**。

1. 於 **Version details (版本詳細資訊)** 中，完成以下項目：

   1. 選擇 **Upload a template file (上傳範本檔案)**。瀏覽您的 `S3_template.json` 檔案並上傳。

   1. 在 **Version title (版本標題)** 中，輸入產品版本名稱 (例如「devops S3 v2」)。

   1. 在 **Description (敘述)** 中，輸入區分此版本與其他版本的詳細資訊。

   1. 選擇**下一步**。

1. 在 **Review (檢閱)** 頁面上，確認資訊正確，然後選擇**確認並上傳**。

1. 在瀏覽器中複製 **Products (產品)** 頁面上的 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。

   幾秒鐘後，您的產品即會出現在 **Products (產品)** 頁面上。可能需要重新整理瀏覽器才能在清單中看到產品。

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

1. 若要命名管道和選擇管道參數，請執行下列動作：

   1. 登入 AWS 管理主控台 並開啟 CodePipeline 主控台，網址為 https：//[https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/)。

   1. 選擇 **Getting started (入門)**。選擇 **Create pipeline (建立管道)** 然後輸入管道名稱。

   1. 在**服務角色**中，選擇**新服務角色**，以允許 CodePipeline 在 IAM 中建立服務角色。

   1. 將 **Advanced settings (進階設定)** 下的設定保留為預設值，然後選擇 **Next (下一步)**。

1. 若要新增來源階段，請執行以下操作：

   1. 在 **Source provider (來源提供者)** 中選擇 **AWS CodeCommit**。

   1. 在 **Repository name (儲存庫名稱)** 和 **Branch name (分支名稱)** 中，輸入您想為來源動作使用的儲存庫和分支。

   1. 選擇**下一步**。

1. 在 **Add build stage (新增建置階段)** 中，選擇 **Skip build stage (跳過建置階段)**，然後再次選擇 **Skip (跳過)** 來接受警告訊息​。

1. 在 **Add deploy stage (新增部署階段)** 中，完成以下項目：

   1. 在**部署提供者**中，選擇 **AWS Service Catalog**。

   1. 選擇 **Use configuration file (使用組態檔案)**。

   1. 在**產品 ID** 中，貼上您從 Service Catalog 主控台複製的產品 ID。

   1. 在 **Configuration file path (組態檔案路徑中)**，輸入您儲存庫中組態檔案的檔案路徑。

   1. 選擇**下一步**。

1. 在 **Review (檢閱)** 中檢閱您的管道設定，然後選擇 **Create (建立)**。

1. 管道成功執行後，請在部署階段選擇**詳細資訊**，以在 Service Catalog 中開啟您的產品。  
![\[\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/images/deploy-servicecatalog-pipeline.png)

1. 在您的產品資訊下，選擇您的版本名稱以開啟產品範本。檢視範本部署。

### 步驟 5：在 Service Catalog 中推送變更並驗證您的產品
<a name="tutorials-S3-servicecatalog-change2"></a>

1. 在 CodePipeline 主控台中檢視管道，然後在來源階段選擇**詳細資訊**。您的來源 AWS CodeCommit 儲存庫會在 主控台中開啟。選擇 **Edit (編輯)**，然後在檔案中進行變更 (例如，對描述進行變更)。

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

1. 遞交並推送您的變更。您的管道將在您推送變更之後啟動。當管道執行完成時，在部署階段，選擇**詳細資訊**以在 Service Catalog 中開啟您的產品。

1. 在您的產品資訊下，選擇新版本名稱以開啟產品範本。查看部署的範本變更。