

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

# 教學課程：使用 建立管道 AWS CloudFormation
<a name="tutorials-cloudformation"></a>

這些範例提供範例範本，可讓您使用 AWS CloudFormation 建立管道，在每次原始程式碼變更時將應用程式部署到您的執行個體。範例範本會建立您可以在 AWS CodePipeline中檢視的管道。管道會透過 Amazon CloudWatch Events 偵測已儲存變更的到達。

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

**Topics**
+ [範例 1：使用 建立 AWS CodeCommit 管道 AWS CloudFormation](tutorials-cloudformation-codecommit.md)
+ [範例 2：使用 建立 Amazon S3 管道 AWS CloudFormation](tutorials-cloudformation-s3.md)

# 範例 1：使用 建立 AWS CodeCommit 管道 AWS CloudFormation
<a name="tutorials-cloudformation-codecommit"></a>

此逐步解說說明如何使用 AWS CloudFormation 主控台建立基礎設施，其中包含連線至 CodeCommit 來源儲存庫的管道。在本教學課程中，您會使用提供的範例範本檔案來建立資源堆疊，其中包含成品存放區、管道和變更偵測資源，例如 Amazon CloudWatch Events 規則。在 中建立資源堆疊之後 AWS CloudFormation，您可以在 AWS CodePipeline 主控台中檢視管道。管道是具有 CodeCommit 來源階段和 CodeDeploy 部署階段的兩階段管道。

**先決條件：**

您必須已建立下列資源，才能與 AWS CloudFormation 範例範本搭配使用：
+ 您必須先建立來源儲存庫。您可以使用您在 中建立的 AWS CodeCommit 儲存庫[教學課程：建立簡單的管道 (CodeCommit 儲存庫）](tutorials-simple-codecommit.md)。
+ 您必須已建立 CodeDeploy 應用程式和部署群組。您可以使用您在 中建立的 CodeDeploy 資源[教學課程：建立簡單的管道 (CodeCommit 儲存庫）](tutorials-simple-codecommit.md)。
+ 選擇下列其中一個連結，下載用於建立管道的範例 AWS CloudFormation 範本檔案：[YAML](samples/codepipeline-codecommit-events-yaml.zip) \$1 [JSON](samples/codepipeline-codecommit-events-json.zip)

  解壓縮檔案並將它放在您的本機電腦。
+ 下載 [SampleApp\$1Linux.zip](samples/SampleApp_Linux.zip) 範例應用程式檔案。



**在 中建立管道 AWS CloudFormation**

1. 從 [SampleApp\$1Linux.zip](samples/SampleApp_Linux.zip) 解壓縮檔案，並將檔案上傳至您的 AWS CodeCommit 儲存庫。您必須將解壓縮的檔案上傳到您儲存庫的根目錄。您可以依照 [步驟 2：將範本程式碼新增至 CodeCommit 儲存庫](tutorials-simple-codecommit.md#codecommit-add-code) 中的指示，將檔案推送到您的儲存庫。

1. 開啟 AWS CloudFormation 主控台，然後選擇**建立堆疊**。選擇 **With new resources (standard)** (使用新資源 (標準))。

1. 在**指定範本**下，選擇**上傳範本**。選取**選擇檔案**，然後從本機電腦選擇範本檔案。選擇**下一步**。

1. 在 **Stack name (堆疊名稱)** 中，輸入管道的名稱。即會顯示範例範本指定的參數。輸入下列參數：

   1. 在 **ApplicationName** 中，輸入 CodeDeploy 應用程式的名稱。

   1. 在 **BetaFleet** 中，輸入 CodeDeploy 部署群組的名稱。

   1. 在 **BranchName** 中，輸入您想要使用的儲存庫分支。

   1. 在 **RepositoryName** 中，輸入 CodeCommit 來源儲存庫的名稱。

1. 選擇**下一步**。接受以下頁面上的預設值，然後選擇 **Next (下一步)**。

1. 在**功能**中，選取**我確認 AWS CloudFormation 可能會建立 IAM 資源**，然後選擇**建立堆疊**。

1. 在完成您的堆疊建立之後，請檢視事件清單以檢查是否有任何錯誤。

   **疑難排解**

   在 中建立管道的 IAM 使用者 AWS CloudFormation 可能需要額外的許可，才能為管道建立資源。政策需要下列許可 AWS CloudFormation ，以允許 為 CodeCommit 管道建立所需的 Amazon CloudWatch Events 資源：

   ```
   {
        "Effect": "Allow",
        "Action": [
           "events:PutRule",
           "events:PutEvents",
           "events:PutTargets",
           "events:DeleteRule",
           "events:RemoveTargets",
           "events:DescribeRule"
        ],
        "Resource": "resource_ARN"
   }
   ```

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

   在 **Pipelines (管道)** 下，選擇您的管道，然後選擇 **View (檢視)**。本圖顯示您的管道來源和部署階段。
**注意**  
若要檢視已建立的管道，請在堆疊**的資源**索引標籤下尋找**邏輯 ID** 欄 CloudFormation。在管道的**實體 ID** 欄中記下名稱。在 CodePipeline 中，您可以在建立堆疊的區域中檢視具有相同實體 ID （管道名稱） 的管道。

1. 在來源儲存庫中遞交並推送變更。您的變更偵測資源會套用該變更，然後您的管道便會啟動。

# 範例 2：使用 建立 Amazon S3 管道 AWS CloudFormation
<a name="tutorials-cloudformation-s3"></a>

此逐步解說說明如何使用 AWS CloudFormation 主控台建立基礎設施，其中包含連線至 Amazon S3 來源儲存貯體的管道。在本教學課程中，您會使用提供的範例範本檔案來建立資源堆疊，其中包含來源儲存貯體、成品存放區、管道和變更偵測資源，例如 Amazon CloudWatch Events 規則和 CloudTrail 追蹤。在 中建立資源堆疊之後 AWS CloudFormation，您可以在 AWS CodePipeline 主控台中檢視管道。管道是具有 Amazon S3 來源階段和 CodeDeploy 部署階段的兩階段管道。

**先決條件：**

您必須擁有下列資源，才能與 AWS CloudFormation 範例範本搭配使用：
+ 您必須已建立在執行個體上安裝 CodeDeploy 代理程式的 Amazon EC2 執行個體。您必須已建立 CodeDeploy 應用程式和部署群組。使用您在 中建立的 Amazon EC2 和 CodeDeploy 資源[教學課程：建立簡單的管道 (CodeCommit 儲存庫）](tutorials-simple-codecommit.md)。
+ 選擇以下連結來下載範例 AWS CloudFormation 範本檔案，以使用 Amazon S3 來源建立管道：
  + 下載管道的範例範本：[YAML](samples/codepipeline-s3-events-yaml.zip) \$1 [JSON](samples/codepipeline-s3-events-json.zip)
  + 下載 CloudTrail 儲存貯體和線索的範例範本：[YAML](samples/codepipeline-s3-cloudtrail-yaml.zip) \$1 [JSON](samples/codepipeline-s3-cloudtrail-json.zip)
  + 解壓縮檔案並將它們放在您的本機電腦。
+ 從 [SampleApp\$1Linux.zip](samples/SampleApp_Linux.zip) 下載範例應用程式。

  將 .zip 檔案儲存至本機電腦。在建立堆疊之後，您會上傳 .zip 檔案。

**在 中建立管道 AWS CloudFormation**

1. 開啟 AWS CloudFormation 主控台，然後選擇**建立堆疊**。選擇 **With new resources (standard)** (使用新資源 (標準))。

1. 在**選擇範本中**，選擇**上傳範本**。選取**選擇檔案**，然後從本機電腦選擇範本檔案。選擇**下一步**。

1. 在 **Stack name (堆疊名稱)** 中，輸入管道的名稱。即會顯示範例範本指定的參數。輸入下列參數：

   1. 在 **ApplicationName** 中，輸入 CodeDeploy 應用程式的名稱。您可以取代 `DemoApplication` 預設名稱。

   1. 在 **BetaFleet** 中，輸入 CodeDeploy 部署群組的名稱。您可以取代 `DemoFleet` 預設名稱。

   1. 在 **SourceObjectKey** 中，輸入 `SampleApp_Linux.zip`。您可以在範本建立儲存貯體和管道後，將此檔案上傳到您的儲存貯體。

1. 選擇**下一步**。接受以下頁面上的預設值，然後選擇 **Next (下一步)**。

1. 在**功能**中，選取**我確認 AWS CloudFormation 可能會建立 IAM 資源**，然後選擇**建立堆疊**。

1. 在完成您的堆疊建立之後，請檢視事件清單以檢查是否有任何錯誤。

   **疑難排解**

   在 中建立管道的 IAM 使用者 AWS CloudFormation 可能需要額外的許可，才能為管道建立資源。政策需要下列許可 AWS CloudFormation ，以允許 為 Amazon S3 管道建立所需的 Amazon CloudWatch Events 資源： Amazon S3 

   ```
   {
        "Effect": "Allow",
        "Action": [
           "events:PutRule",
           "events:PutEvents",
           "events:PutTargets",
           "events:DeleteRule",
           "events:RemoveTargets",
           "events:DescribeRule"
        ],
        "Resource": "resource_ARN"
   }
   ```

1. 在堆疊**的資源**索引標籤 CloudFormation中，檢視為堆疊建立的資源。
**注意**  
若要檢視已建立的管道，請在堆疊**的資源**索引標籤下尋找**邏輯 ID** 欄 CloudFormation。在管道的**實體 ID** 欄中記下名稱。在 CodePipeline 中，您可以在建立堆疊的區域中檢視具有相同實體 ID （管道名稱） 的管道。

   選擇名稱中包含 `sourcebucket` 標籤的 S3 儲存貯體，例如 `s3-cfn-codepipeline-sourcebucket-y04EXAMPLE.`。請不要選擇管道成品儲存貯體。

   來源儲存貯體是空白的，因為 CloudFormation才剛建立資源。開啟 Amazon S3 主控台並找到您的儲存`sourcebucket`貯體。選擇 **Upload (上傳)** 並遵循說明，來上傳您的 `SampleApp_Linux.zip` .zip 檔案。
**注意**  
當 Amazon S3 是管道的來源提供者時，您必須將所有封裝為單一 .zip 檔案的來源檔案上傳至儲存貯體。否則，來源動作會失敗。

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

   在 **Pipelines (管道)** 下，選擇您的管道，然後選擇 **View (檢視)**。本圖顯示您的管道來源和部署階段。

1. 完成下列程序中的步驟來建立 AWS CloudTrail 資源。

**在 中建立您的 AWS CloudTrail 資源 AWS CloudFormation**

1. 開啟 AWS CloudFormation 主控台，然後選擇**建立堆疊**。

1. 在 **Choose a template (選擇範本)** 中，請選擇 **Upload a template to Amazon S3 (上傳範本至 Amazon S3)**。選擇**瀏覽**，然後從本機電腦選取 AWS CloudTrail 資源的範本檔案。選擇**下一步**。

1. 在 **Stack name (堆疊名稱)** 中，輸入資源堆疊的名稱。即會顯示範例範本指定的參數。輸入下列參數：

   1. 在 **SourceObjectKey (SourceObjectKey)** 中，接受範例應用程式的壓縮檔預設值。

1. 選擇**下一步**。接受以下頁面上的預設值，然後選擇 **Next (下一步)**。

1. 在**功能**中，選取**我確認 AWS CloudFormation 可能會建立 IAM 資源**，然後選擇**建立**。

1. 在完成您的堆疊建立之後，請檢視事件清單以檢查是否有任何錯誤。

   政策需要下列許可 AWS CloudFormation ，以允許 為 Amazon S3 管道建立所需的 CloudTrail 資源：

   ```
   {
        "Effect": "Allow",
        "Action": [
           "cloudtrail:CreateTrail",
           "cloudtrail:DeleteTrail",
           "cloudtrail:StartLogging",
           "cloudtrail:StopLogging",
           "cloudtrail:PutEventSelectors"
        ],
        "Resource": "resource_ARN"
   }
   ```

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

   在 **Pipelines (管道)** 下，選擇您的管道，然後選擇 **View (檢視)**。本圖顯示您的管道來源和部署階段。

1. 在來源儲存貯體中遞交並推送變更。您的變更偵測資源會套用該變更，然後您的管道便會啟動。