

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

# 使用 Git 同步從儲存庫原始程式碼建立堆疊
<a name="git-sync-create-stack-from-repository-source-code"></a>

本主題說明如何建立 CloudFormation 堆疊，它透過 Git 同步功能同步至 Git 儲存庫。

**重要**  
繼續操作之前，請先完成上一節中的所有[先決條件](git-sync-prereq.md)。

## 從儲存庫原始程式碼建立堆疊
<a name="create-stack-from-repository-source-code"></a>

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) 開啟 CloudFormation 主控台。

1. 在畫面頂端的導覽列上，選擇要在其中 AWS 區域 建立堆疊的 。

1. 在**堆疊**頁面中，選擇**建立堆疊**，並選擇**使用新資源 (標準)**。

1. 在 **Create stack** (建立堆疊) 頁面上，執行下列動作：

   1. 對於**先決條件 - 準備範本**，保持選取**選擇現有範本**。

   1. 針對**指定範本**，選擇**從 Git 同步**，然後選擇**下一步**。

1. 在**指定堆疊詳細資訊**頁面的**堆疊名稱**中，輸入堆疊名稱。堆疊名稱可包含字母 (A-Z 和 a-z)、數字 (0-9) 和破折號 (-)。

1. 對於**堆疊部署檔案**，**部署檔案建立**：
   + 如果*尚未*建立堆疊部署檔案並將其新增至儲存庫，請選擇**使用下列參數建立檔案，並將其放在我的儲存庫中。**
   + 如果儲存庫中有堆疊部署檔案，請選擇**我在儲存庫中提供自己的檔案。**

1. 針對**範本定義儲存庫**，選取**選擇連結的 Git 儲存庫**以選擇已連結至 CloudFormation 的 Git 儲存庫，或選擇**連結 Git 儲存庫**以連結新的儲存庫。如果選擇**連結 Git 儲存庫**，請執行下列動作：

   1. 在**選取儲存庫提供者**中，選擇下列其中一項：
      + **GitHub**
      + **GitHub Enterprise Server**
      + **GitLab**
      + **Bitbucket**
      + **GitLab 自我管理**

   1. 在**連線**中，請從清單中選擇一個連線。如果**連線**清單中沒有出現任何選項，請選擇**新增一個新連線**，以轉至[連線主控台](https://console.aws.amazon.com/codesuite/settings/connections)並建立與儲存庫的連線。

1. 在**儲存庫**清單中，選取包含堆疊範本檔案的 Git 儲存庫。

1. 在**分支**清單中，選取您希望 Git 同步監視的分支。
**注意**  
Git 同步只會監控所選分支是否有對 CloudFormation 範本和堆疊部署檔案的變更。您想要套用至堆疊的任何變更，均必須遞交到此分支。

1. 若為**部署檔案路徑**，請指定完整路徑，包含儲存庫分支根目錄中的堆疊部署檔案名稱。

   如果 CloudFormation 正在為您產生檔案，這就是檔案將在您的儲存庫中遞交的位置。如果您要提供檔案，這是檔案在儲存庫中的位置。

1. 新增 **IAM 角色**。IAM 角色包含 CloudFormation 從 Git 儲存庫同步堆疊所需的許可。選擇**新的 IAM 角色**來產生新角色，或選擇**現有 IAM 角色**，從 AWS 帳戶中選取現有角色。如果您選擇產生新角色，所需的許可會包含在角色中。

1. 啟用或關閉提取請求的註解：
   + 若要讓 CloudFormation 在提取請求中發佈變更集資訊以進行堆疊更新，請保持**啟用提取請求的註解**開關開啟。
   + 如果關閉此開關，當 repo 檔案更新時，CloudFormation 不會說明目前堆疊組態與提取請求中所提議變更之間的差異。

1. 若為**範本檔案路徑**，請為堆疊範本檔案指定儲存庫根目錄的完整路徑。

1. (選用) 若要指定堆疊參數，請選擇**新增參數**，為每個參數提供索引鍵和值，然後選擇**下一步**。如需詳細資訊，請參閱[堆疊部署檔案](git-sync-concepts-terms.md#git-sync-concepts-terms-depoyment-file)。

   例如，若要在堆疊部署檔案中指定 **port=8080** 參數，請執行下列動作：

   1. 選擇 **Add parameter (新增參數)**。

   1. 在 **Key** (索引鍵) 欄位，輸入 **port**。

   1. 針對**數值**，輸入 **8080**。

1. (選用) 若要指定堆疊標籤，選取**新增新標籤**，提供每個標籤的標籤鍵和值，然後選擇**下一步**。如需詳細資訊，請參閱[堆疊部署檔案](git-sync-concepts-terms.md#git-sync-concepts-terms-depoyment-file)。

1. 選擇**下一步**繼續**設定堆疊選項**。如需組態堆疊選項的相關資訊，請參閱 [設定堆疊選項](cfn-console-create-stack.md#configure-stack-options)。

   完成堆疊組態後，請選擇**下一步**以繼續。

1. 檢閱堆疊設定並確認下列事項：
   + 堆疊範本已正確設定，並設為**從 Git 同步**。
   + 部署檔案設定正確。
   + 範本定義儲存庫已正確設定，尤其是選取了正確的**儲存庫**和**分支名稱**。
   + 部署檔案的預覽是正確的，且包含預期的參數與值。

1. 選擇**提交**以建立堆疊。

   選擇**提交**後，會在 Git 儲存庫中自動建立一個提取請求。必須將此提取請求合併到 Git 儲存庫中，才能建立堆疊。建立堆疊之後，CloudFormation 會監控 Git 儲存庫是否有變更。

## 從 Git 儲存庫中更新堆疊
<a name="update-stack-from-repository-source-code"></a>

若要更新堆疊，請直接變更範本檔案或 Git 儲存庫中的堆疊部署檔案。將變更遞交至受監控分支後，CloudFormation 會自動更新堆疊。如果使用提取請求，會在更新堆疊之前，在您的 Git 儲存庫中自動建立提取請求。必須將此提取請求合併到 Git 儲存庫中，才能更新堆疊。

在 CloudFormation 控制台中，可以選取堆疊並選擇 **Git 同步**索引標籤，以檢視堆疊狀態和同步事件的相關資訊。如需詳細資訊，請參閱[Git 同步狀態儀表板](git-sync-status.md)。