

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

# 程式碼管道概觀
<a name="cfct-codepipeline-overview"></a>

組態套件需要 Amazon Simple Storage Service (Amazon S3) 和 AWS CodePipeline。組態套件包含下列項目：
+ 資訊清單檔案
+ 隨附的範本集
+ 用於描述和實作 AWS Control Tower 環境自訂的其他 JSON 檔案

根據預設，`_custom-control-tower-configuration.zip`組態套件會以下列命名慣例載入 Amazon S3 儲存貯體：

`custom-control-tower-configuration-{{accountID}}-{{region}}`.

**注意**  
 根據預設，CfCT 會建立 Amazon S3 儲存貯體來存放管道來源。大多數客戶都會保留此預設值。如果您有現有的 AWS CodeCommit 儲存庫，您可以將來源位置變更為儲存 AWS CodeCommit 庫。如需詳細資訊，請參閱*AWS CodePipeline 《 使用者指南*[》中的在 CodePipeline 中編輯管道](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-edit.html)。

*資訊清單檔案*是一種文字檔案，描述您可以部署以自訂登陸區域 AWS 的資源。CodePipeline 會執行這些任務：
+ 會擷取資訊清單檔案、隨附的範本集，以及其他 JSON 檔案
+ 執行資訊清單和範本驗證
+ 調用 CfCT 資訊清單檔案中的區段，以執行特定的[管道階段](#code-pipeline-stages)。

當您透過自訂資訊清單檔案並從組態套件檔案名稱中移除底線 (\_) 來更新組態套件時，它會自動啟動 AWS CodePipeline。

**記住底線**  
範例組態套件檔案名稱以底線 (\_) 開頭，因此 AWS CodePipeline 不會自動觸發。當您完成組態套件的自訂時，請上傳`custom-control-tower-configuration.zip`不含底線 (\_) 的檔案，以觸發其中的部署 AWS CodePipeline。

## AWS CodePipeline 階段
<a name="code-pipeline-stages"></a>

CfCT 管道需要多個 AWS CodePipeline 階段來實作和更新 AWS Control Tower 環境。

1. **來源階段**

   來源階段是初始階段。您的自訂組態套件會啟動此管道階段。的來源 AWS CodePipeline 可以是 Amazon S3 儲存貯體或可託管組態套件的 AWS CodeCommit 儲存庫。

1. **建置階段**

   建置階段需要 AWS CodeBuild 驗證組態套件的內容。這些檢查包括使用 和 測試`manifest.yaml`檔案語法和結構描述，以及包含在套件中或遠端託管的所有 CloudFormation 範本 CloudFormation `validate-template``cfn_nag`。如果資訊清單檔案和 CloudFormation 範本通過測試，管道會繼續進入下一個階段。如果測試失敗，您可以檢閱 CodeBuild 日誌以識別問題，並視需要編輯組態來源檔案。

1. **手動核准階段 （選用）**

   手動核准階段是選用的。如果您啟用此階段，它會提供額外的組態管道控制。它會在部署期間暫停管道，直到獲得核准為止。您可以在啟動堆疊時，將**管道核准階段參數編輯為是，以選擇加入手動核准**。 ****

1. **政策階段**

   政策階段會呼叫服務控制政策 (SCP) 或資源控制政策 (RCP) 狀態機器，以呼叫建立 SCPs AWS Organizations APIs。 RCPs

1. **CloudFormation 資源階段**

    CloudFormation 資源階段會叫用堆疊集狀態機器，以部署您在資訊清單檔案中提供的帳戶或組織單位 (OUs) 清單中指定的資源。狀態機器會依資訊清單檔案中指定的順序建立 CloudFormation 資源。若要指定資源相依性，請排列清單檔案中指定資源的順序。資訊清單檔案中的資源順序是指定相依性的唯一方法。