

# 使用 Git 同步从存储库源代码创建堆栈
<a name="git-sync-create-stack-from-repository-source-code"></a>

本主题介绍如何创建使用 Git 同步与 Git 存储库同步的 CloudFormation 堆栈。

**重要**  
在继续之前，请完成上一节中的所有[先决条件](git-sync-prereq.md)。

## 从存储库源代码创建堆栈
<a name="create-stack-from-repository-source-code"></a>

1. 登录到 AWS 管理控制台 并打开 CloudFormation 控制台 [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)。

1. 在屏幕顶部的导航栏中，选择 AWS 区域以在其中创建堆栈。

1. 在**堆栈**页面上，选择**创建堆栈**，然后选择**使用新资源（标准）**。

1. 在**创建堆栈**页面上，执行以下操作：

   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. 对于**连接**，从列表中选择一个连接。如果**连接**列表中没有显示任何选项，请选择**添加新连接**以转到 [Connections 控制台](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 在堆栈更新的拉取请求中发布更改集信息，请将**启用拉取请求注释**开关保持开启状态。
   + 如果您关闭此开关，CloudFormation 将不会描述当前堆栈配置与更新存储库文件拉取请求中的建议更改之间的区别。

1. 对于**模板文件路径**，指定堆栈模板文件在存储库根目录下的完整路径。

1. （可选）要指定堆栈参数，请选择**添加参数**，为每个参数提供键和值，然后选择**下一步**。有关更多信息，请参阅 [堆栈部署文件](git-sync-concepts-terms.md#git-sync-concepts-terms-depoyment-file)。

   例如，要在堆栈部署文件中指定 **port=8080** 参数，请执行以下操作：

   1. 选择 **Add parameter (添加参数)**。

   1. 对于**键**，输入 **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 会自动更新堆栈。如果您使用拉取请求，则系统会在 Stack 更新之前在 Git 存储库中自动创建拉取请求。必须将此拉取请求合并到您的 Git 存储库中才能更新您的堆栈。

在 CloudFormation 控制台中，您可以选择堆栈，然后选择 **Git 同步**选项卡，以查看有关堆栈状态和同步事件的信息。有关更多信息，请参阅 [Git 同步状态控制面板](git-sync-status.md)。