![Olawale Olaleye Olawale Olaleye](https://d1.awsstatic.com/xuefezha-jennie/%e7%ba%a7%e5%88%ab_level%201.01c35fea97656a6beac50b0c8ae81e8afc1eedef.png)
![](https://d1.awsstatic.com/xuefezha-jennie/Group%20281.67a8494bd80a4bd979e37efcb490ada486dd72ae.png)
企业在部署由 Amazon Web Services (AWS) 提供的 Landing Zone Accelerator (LZA) 时,经常面临配置文件管理和版本控制方面的挑战。在本文中,我们将探索如何将 GitHub 用作 AWS LZA 解决方案的配置文件存储库,从而在 LZA 部署中实现更好的版本控制、协作和自动化。
你可能会有疑问:LZA 解决方案与 GitHub 存储库的集成如何实现?
将 GitHub 存储库用作存储和管理 LZA 配置文件的集中存储库。LZA 解决方案与 GitHub 集成后,你的团队可以使用 Git 的版本控制功能来跟踪配置更改、协作配置以及维护 LZA 配置修改历史记录。
GitHub 存储库作为 LZA 配置的唯一可信数据源,可以在 LZA 部署或更新过程中被拉取和应用到你的 AWS 环境。
使用 GitHub 作为 LZA 配置文件存储库这种方法具有以下优势:
- 版本控制 – 跟踪配置更改并维护配置修改历史记录。
- 协作 – 允许团队成员审阅和参与 LZA 配置。
- 自动化 – 与持续集成和持续交付或部署 (CI/CD) 管道集成,实现 LZA 部署自动化。
- 备份和恢复 – 必要时,轻松恢复历史配置。
- 审计 – 维护清晰的审计记录,跟踪所有更改的执行时间和操作者。
前提条件
在将 GitHub 存储库集成为 LZA 配置文件存储库之前,请确保已满足以下条件:
- 已有一个有权部署和管理 LZA 的有效 AWS 账户
- 已有 LZA 配置文件,且这些文件存储在 Amazon Simple Storage Service (Amazon S3) 存储桶或 AWS CodeCommit 存储库
- 已有一个能够创建和管理存储库的 GitHub 账户
- 已准备好部署在你的 AWS 环境中的 AWS Landing Zone Accelerator 解决方案
- 已在本地计算机上安装 AWS CLI
- 对 Git 和 GitHub 操作有基本的了解
- 了解企业在管理配置文件方面的安全性和合规性要求
解决方案概述
LZA 是一种解决方案。使用 LZA 解决方案,企业可基于 AWS 最佳实践架构快速建立安全的多账户 AWS 环境。LZA 解决方案提供一个用来跨多个 AWS 账户实施治理、安全和合规管理控制的框架。但是,随着环境体量的增长,LZA 配置文件管理可能会变得越来越复杂。
我们的解决方案是将 GitHub 作为集中存储库来存储和管理 LZA 配置文件。通过将 LZA 与 GitHub 集成,可以创建一个将 Git 的强大版本控制功能与 LZA 的灵活性结合起来的工作流。将 LZA 与 GitHub 存储库集成后,你的团队可以将其 LZA 配置文件存储在 GitHub 存储库中、跟踪配置文件更改、协作配置,以及实现部署自动化。
该解决方案主要由三个组件组成:
- 存储 LZA 配置文件的 GitHub 存储库
- LZA 部署管道
- 将以上二者连接起来的 AWS CodePipeline
在配置更改推送到 GitHub 存储库后,CodePipeline 会自动触发新的 LZA 部署,确保你的 AWS 环境中应用的始终是最新的且已通过审批的配置。
完成以下步骤,创建用来存储和管理 LZA 配置文件的 GitHub 存储库:
- 新建一个私有 GitHub 存储库。
- 从 Amazon S3 存储桶或 AWS CodeCommit 存储库导出现有配置文件。
- 将导出的配置文件导入你新建的 GitHub 存储库。
- 创建代码连接。
- 配置用来存储配置文件的私有存储库。
- 在 AWS CloudFormation 中更新 LZA 安装程序堆栈。
![](https://d1.awsstatic.com/meixuadu/landing-zone-accelerator-on-aws/cc_s3_lza_figure1.4b7886c1f2778fe74f271fa5cbfd2f72a98206cf.png)
图 1:将 GitHub 存储库用作 AWS Landing Zone Accelerator 配置文件存储库的实施过程
解决方案演示:将 AWS Landing Zone Accelerator 配置文件从 AWS CodeCommit 或 Amazon S3 迁移到外部配置文件库
将 GitHub 存储库配置为 LZA 配置存储库的操作步骤如下:
步骤 1:新建一个私有 GitHub 存储库,如图 2 所示。
- 登录你的 GitHub 账户,然后导航到 Repositories(存储库)。
- 单击 New(新建)按钮,创建新存储库。
- 为你的存储库设置一个描述性名称,如 landing-zone-accelerator-config。
- 对于存储库可视性,选择 Private(私有)。
- 添加 README 文件,初始化存储库。
- 单击 Create repository(创建存储库)。
- 通过运行 git pull 命令,将存储库内容拉取到本地计算机。
![](https://d1.awsstatic.com/meixuadu/landing-zone-accelerator-on-aws/cc_s3_lza_figure2.a9b1a20ce924b612cf6fe73073bf7c8d3af7c227.png)
图 2:新建存储库
步骤 2:导出 Amazon S3 存储桶或 AWS CodeCommit 存储库中的现有配置。
如果文件存储在 Amazon S3 存储桶中,执行以下操作步骤从 Amazon S3 存储桶导出文件:
1.登录 AWS 管理控制台,然后进入 Amazon S3 控制台。
2.找到存储 Landing Zone Accelerator 配置文件的 Amazon S3 存储桶。
![](https://d1.awsstatic.com/meixuadu/landing-zone-accelerator-on-aws/cc_s3_lza_figure3.4011f5143907b03ef15ed8c009e4c8f1ce47ec66.png)
图 3:导出 Amazon S3 中的现有配置文件
3. 将存储桶中的内容下载为 .zip 文件。
![](https://d1.awsstatic.com/meixuadu/landing-zone-accelerator-on-aws/cc_s3_lza_figure4.6d320e29991b25c17075b5daa55ea537361334a3.png)
图 4:将存储桶中的内容下载为 .zip 文件
如果文件存储在 CodeCommit 存储库中,执行以下操作步骤从 CodeCommit 存储库导出文件:
1.登录 AWS 管理控制台,然后进入 AWS CodeCommit 控制台。
2.找到存储 Landing Zone Accelerator 配置文件的 AWS CodeCommit 存储库。
![](https://d1.awsstatic.com/meixuadu/landing-zone-accelerator-on-aws/cc_s3_lza_figure5.e8f0e166eaf1893e88887c3d7a346e572df8684d.png)
图 5:找到存储 LZA 配置文件的 AWS CodeCommit 存储库
3. 按照连接到 AWS CodeCommit 存储库中介绍的步骤操作,导出 LZA 配置文件。
步骤 3:将导出的配置文件导入新建的 GitHub 存储库。
- 解压缩从 Amazon S3 存储桶中导出的内容。CodeCommit 存储库中的文件和文件夹结构与 S3 存储桶的文件和文件结构相同,因此你可以直接使用这些文件。
- 打开你的终端或命令行程序,然后进入已解压缩的文件夹。
- 通过执行 git init 命令来初始化 Git 存储库。
- 执行 git add 命令将这些配置文件添加到存储库中。文件结构应与解压缩后的文件目录结构一致。没有顶层文件夹,只有配置文件。
- 执行 git commit -m Initial commit 命令提交 Landing Zone Accelerator 配置更改。
- 执行 git remote add origin 命令将这个 GitHub 存储库添加为远程存储库。
- 执行 git push -u origin main 命令将本地存储库中的内容推送到 GitHub 存储库。
步骤 4:创建代码连接。
1.进入 CodePipeline 控制台,然后选择左侧导航栏中 Settings(设置)下的 Connections(连接)。
![](https://d1.awsstatic.com/meixuadu/landing-zone-accelerator-on-aws/cc_s3_lza_figure6.8a502a6885c9ac41fda5b896e3e3ca5f14036b29.png)
图 6:访问 Connections(连接)选项卡
2. 在 Connections(连接)选项卡页面中,单击 Create connection(创建连接),然后选择 GitHub 选项。设置一个有助于你识别的连接名称(如 LZA),然后单击 Connect to GitHub(连接到 GitHub)。
![](https://d1.awsstatic.com/meixuadu/landing-zone-accelerator-on-aws/cc_s3_lza_figure7.8fc070dcf4bc088e0231abdc07cb8d3c6590f1c7.png)
图 7:创建连接
3. 按图 8 所示,选择 Install a new app(安装新应用程序)。外部存储库登录页面将打开。
![](https://d1.awsstatic.com/meixuadu/landing-zone-accelerator-on-aws/cc_s3_lza_figure8.d2c66b3c93b0c50753da1814bd27796e69c7be3c.png)
图 8:安装新应用程序
4. 登录 GitHub。
![](https://d1.awsstatic.com/meixuadu/landing-zone-accelerator-on-aws/cc_s3_lza_figure9.59e82dd89a0b71ff5c0e5d10c730ee56ee62f2d2.png)
图 9:登录 GitHub
5. 为 AWS Connector 连接 GitHub 授权。
![](https://d1.awsstatic.com/meixuadu/landing-zone-accelerator-on-aws/cc_s3_lza_figure10.6d19550924e50effaf8c4ba262104f1cb00559c8.png)
图 10.授权 AWS Connector 连接 GitHub
步骤 5:配置用来存储配置文件的私有存储库。
1.连接授权后,生成一个 App ID,该 ID 将自动填充在 App Installation(应用程序安装)下的输入框中。
![](https://d1.awsstatic.com/meixuadu/landing-zone-accelerator-on-aws/cc_s3_lza_figure11.7334a31321c99a74d909edfe9b369794aa739f23.png)
图 11:安装后收到应用程序 ID
2. 务必选择 Install a new app(安装新应用程序),否则将不能成功连接到 GitHub 中的配置文件存储库。
3. 单击 Connect(连接),创建连接。
4. 你应当会看到一个提示已成功创建连接的页面,如图 12 所示。
![](https://d1.awsstatic.com/meixuadu/landing-zone-accelerator-on-aws/cc_s3_lza_figure12.46af8c05e1ee390bfe8a0542ea46f0ad8dbb4114.png)
图 12:连接创建成功提示页面
步骤 6:在 AWS CloudFormation 中更新 LZA 安装程序堆栈。
1.跳转到 CloudFormation 控制台,找到 AWSAccelerator-InstallerStack。
2.选择 Update(更新)并选择使用现有模板。
![](https://d1.awsstatic.com/meixuadu/landing-zone-accelerator-on-aws/cc_s3_lza_figure13.6b570bd96214d133dab474e8ff072935a32fba5f.png)
图 13:更新堆栈
3. 按如下方式设置安装程序堆栈中的参数:
- Configuration repository location(配置存储库位置):codeconnection
- UseExistingConfigRepo:Yes(是)
- ExistingConfigRepositoryName:LZA
- Existing config repository branch name(现有配置存储库分支名称):main(主)
- Existing Config Repository Owner(现有配置存储库所有者):bullittbirant
- URL 为 https://github.com/bullittbirant
- Existing Config Repository CodeConnection ARN(现有配置存储库 CodeConnection ARN):从 Settings(设置)和 Connections(连接)菜单获取此 ARN。
![](https://d1.awsstatic.com/meixuadu/landing-zone-accelerator-on-aws/cc_s3_lza_figure14.9d17592b43ad6e23648c98ee02e169dfac359a73.png)
图 14:配置存储库
4. 选择 Next(下一步)并检查是否生成了图 15 所示的更改集。
5. 选择 Submit(提交)。
![](https://d1.awsstatic.com/meixuadu/landing-zone-accelerator-on-aws/cc_s3_lza_figure15.16481012f5c6f3cde577132f2fddd7fca9a0b11c.png)
图 15:预览更改集
6. 堆栈更新成功后,将更新发布到安装程序管道。
![](https://d1.awsstatic.com/meixuadu/landing-zone-accelerator-on-aws/cc_s3_lza_figure16.1f9b673d07ade6f7e9c3e5e00753f4fd397eefb9.png)
图 16:将更新发布到安装程序管道
7. 安装程序管道成功运行后,AWSAccelerator-Pipeline 应当会运行整个管道。
8. 执行以下操作步骤来测试集成:
- 对 GitHub 存储库中的配置文件进行更改。
- 提交并推送更改,以触发 AWS CodePipeline。
- 监控管道执行情况,验证配置更改是否已应用于你的 AWS 环境。
现在,你已经建立了一个可靠的系统。通过该系统,可以使用 GitHub 来管理 LZA 配置,并启用版本控制、协作和自动化部署。
清理资源
实验完成后,为了避免实验过程中创建的资源持续产生费用,可以通过完成以下步骤来删除这些资源:
- 在 CodeCommit 存储库中,删除旧配置文件。
- 在 Amazon S3 控制台中,删除包含旧配置文件的存储桶。
总结
在本文中,我们探索了企业如何将 GitHub 用作 AWS Landing Zone Accelerator 解决方案的配置文件存储库。我们讨论了这种方法的好处,其中包括提高了 LZA 部署中的版本控制、协作和自动化能力。
通过将 GitHub 用作 LZA 配置存储库,企业可以实现一致的配置管理、降低操作复杂性并增强可扩展性。这种方法符合云配置管理和 DevOps 原则的最佳实践,在管理不同环境方面提供了灵活性,同时保持了强大的治理态势。
更多教程
快速搭建容量高达 35GB 的免费个人网盘
本教程将介绍如何搭建一个没有使用限制的免费私人网盘。
构建企业专属智能客服机器人
本文将演示如何结合多种服务,打造企业专属的智能客服。
使用生成式 AI 构建多语言问答知识库
使用多种服务,构建可汇总搜索结果的多语言知识库。
免费套餐
AWS 海外区域
拓展海外业务或个人体验
免费使用 100 余种云产品或服务, 长达 12 个月
AWS 中国区域
发展中国业务
免费使用 40 余种核心云服务产品,长达 12 个月