

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

# Git 同步如何與 CloudFormation 搭配運作
<a name="git-sync-concepts-terms"></a>

本主題說明 Git 同步的運作方式，並介紹使用它所需的重要概念。

**Topics**
+ [Git 同步的運作方式](#git-sync-concepts-terms-how)
+ [提取請求的註解](#git-sync-comments-on-pull-requests)
+ [堆疊部署檔案](#git-sync-concepts-terms-depoyment-file)
+ [CloudFormation 範本檔案](#git-sync-concepts-terms-template-file)
+ [範本定義儲存庫](#git-sync-concepts-terms-template-definition-repository)

## Git 同步的運作方式
<a name="git-sync-concepts-terms-how"></a>

若要使用 Git 同步，必須先使用 [CodeConnections](https://docs.aws.amazon.com/codeconnections/latest/APIReference/Welcome.html) 服務將 Git 提供者連線至 CloudFormation。在本指南的程序中，透過 CodeConnections 主控台建立連線。或者，也可以使用 AWS CLI來建立連線。可以使用下列任何 Git 提供者：
+ [GitHub](https://github.com/)
+ [GitHub Enterprise](https://github.com/enterprise/)
+ [GitLab](https://about.gitlab.com/)
+ [Bitbucket](https://bitbucket.org)
+ [GitLab 自我管理](https://docs.gitlab.com/subscriptions/self_managed/)

接下來，建立一個可定義堆疊的 CloudFormation 範本，並將其新增至您的儲存庫。此範本檔案會受到監控。CloudFormation 會在堆疊遞交變更時自動更新堆疊。

在 CloudFormation 主控台中，您會建立新堆疊，然後選擇**從 Git 同步**，以指示 CloudFormation 使用 Git 同步。您將指定要 CloudFormation 監控的儲存庫和分支，並在定義堆疊的儲存庫中指定 CloudFormation 範本。

在設定過程中，您可以從儲存庫提供自己的堆疊部署檔案，也可以讓 Git 同步為您生成一個檔案。堆疊部署檔案包含設定堆疊中資源的參數和值。此堆疊部署檔案會受到監控。CloudFormation 會在堆疊遞交變更時自動更新堆疊。

Git 同步會在您的儲存庫中建立一個提取請求，以便將您的堆疊與 CloudFormation 範本檔案和堆疊部署檔案同步。如果 Git 同步為您生成堆疊部署檔案，則檔案會透過 Git 同步提交到您的儲存庫。

然後，將提取請求合併至儲存庫，讓 CloudFormation 佈建堆疊、使用您的部署參數設定堆疊，並開始監控儲存庫以瞭解是否有任何變更。

從那時起，每當變更範本檔案或堆疊部署檔案並將其遞交至儲存庫時，CloudFormation 都會自動偵測變更。如果您的團隊使用提取請求，則團隊成員就可以在部署變更之前檢閱和核准變更。接受提取請求後，CloudFormation 會部署變更。

在 CloudFormation 主控台中，您可監視堆疊的 Git 同步組態的狀態，並查看套用至堆疊的遞交歷史記錄。主控台也提供重新設定 Git 同步和疑難排解問題的工具。

## 提取請求的註解
<a name="git-sync-comments-on-pull-requests"></a>

您可以選擇讓 CloudFormation 透過 CodeConnections 服務在提取請求中建立程式碼變更的摘要，方法是在主控台中開啟**對提取請求啟用註解**選項。提供提取請求中的變更摘要意味著團隊成員可以在合併提取請求之前輕鬆檢閱和了解提議修改的影響。如需詳細資訊，請參閱[讓 CloudFormation 在提取請求中發佈堆疊變更的摘要](gitsync-enable-comments-on-pull-requests.md)。

## 堆疊部署檔案
<a name="git-sync-concepts-terms-depoyment-file"></a>

堆疊部署檔案是 JavaScript 物件標記法 (JSON) 或 YAML 標準格式檔案，其中包含管理 CloudFormation 堆疊的參數和值。它受到是否有任何變更的監控。當檔案的變更遞交至儲存庫時，關聯的堆疊會自動更新。

堆疊部署檔案包含鍵值組及兩部字典：
+ `template-file-path`

  這是 CloudFormation 範本檔案的完整儲存庫路徑。範本檔案會針對與此部署檔案關聯的 CloudFormation 堆疊宣告資源。
+ `parameters`

  參數字典包含堆疊中設定資源的鍵值組。堆疊部署檔案最多可以有 50 個參數。
+ `tags`

  標籤字典包含選用鍵值組，您可以用來識別和分類堆疊中的資源。堆疊部署檔案最多可以有 50 個標籤。

您可以提供自己的堆疊部署檔案，或讓 Git 同步為您建立一個檔案，然後自動將提取要求提交至您的儲存庫。您可以透過編輯堆疊部署檔案並將變更遞交至儲存庫的方式來管理參數和標籤。

以下是 Git 同步堆疊部署檔案的範例：

```
template-file-path: fargate-srvc/my-stack-template.yaml

parameters: 
    image: public.ecr.aws/lts/nginx:latest
    task_size: x-small
    max_capacity: 5
    port: 8080
    env: production
tags:
    cost-center: '123456'
    org: 'AWS'
```

## CloudFormation 範本檔案
<a name="git-sync-concepts-terms-template-file"></a>

範本檔案包含組成 CloudFormation 堆疊 AWS 的資源宣告。運用 Git 同步，範本檔案會儲存在 Git 儲存庫中，並由堆疊部署檔案參照。您可以透過編輯範本檔案並將變更遞交至儲存庫的方式來管理堆疊。

如需詳細資訊，請參閱[使用 CloudFormation 範本](template-guide.md)。

## 範本定義儲存庫
<a name="git-sync-concepts-terms-template-definition-repository"></a>

範本定義儲存庫是透過 Git 同步連結到 CloudFormation 的 Git 儲存庫。儲存庫會受到是否有對 CloudFormation 範本和堆疊部署檔案進行任何變更的監控。當您遞交對檔案的變更時，關聯的堆疊會自動更新。

**重要**  
當您在 Git 同步主控台中設定範本定義儲存庫時，請從 Git 連線選取正確的*儲存庫*和*分支*。Git 同步只會監控已設定的儲存庫和分支是否有對 CloudFormation 範本和堆疊部署檔案的變更。