GitLab 镜像到 CodeCommit 接流水线:七步实操,两个真正卡人的点

我做过一个项目,GitLab 是团队的主代码仓库,但客户侧的部署流水线跑在 AWS 上,中间必须把代码同步到 CodeCommit 才能接 CodePipeline。当时我花了大半天才把整条链路跑通,踩了几个坑,所以把流程整理出来,后面再遇到直接照着走就行。
我的整体思路
整条链路七步:建 IAM 用户、配策略、生成 HTTPS 凭证、建 CodeCommit 仓库、GitLab 设镜像、锁保护分支、验证。步骤看着不少,但真正容易卡住的地方就两处——IAM 权限的 ARN 写对,以及 GitLab 镜像 URL 的格式。我按顺序过一遍。
具体操作
1. 建 IAM 用户
AWS IAM 控制台新建一个用户,名字随意,但我建议带上用途标识,比如 `gitlab-mirror-bot`,后面审计的时候一眼就能认出来。
2. 配策略
挂一条内联策略,只授 `codecommit:GitPull` 和 `codecommit:GitPush` 两个 action。我踩过一次坑:资源 ARN 里区域和账户 ID 写错,GitLab 那边一直报 403,排查了快二十分钟才发现是 ARN 的问题。ARN 里必须带正确的区域与账户信息,别偷懒用通配。
3. 生成 HTTPS Git 凭证
切到该 IAM 用户的"安全凭证"选项卡,生成 AWS CodeCommit 对应的 HTTPS Git 凭证。AWS 会给你一对用户名和密码,后面 GitLab 镜像时要用。
4. 建 CodeCommit 仓库
CodeCommit 控制台新建一个仓库,用来接收来自 GitLab 的镜像,名字跟 GitLab 那边对齐比较省事。
5. 配置 GitLab 镜像
进 GitLab 项目 → 设置 → 存储库,拉到"镜像存储库"那一块。Git 存储库 URL 格式为:
`https://git-codecommit..amazonaws.com/v1/repos/`
用户名填第 3 步生成的专用 HTTPS Git 用户 ID,密码填对应密码。
6. 保护分支
勾上"仅镜像受保护的分支"。我的判断是这一步别省——镜像是单向推送,一旦把 main 之外的实验分支也同步过去,CodeCommit 那边的仓库会很乱,回滚也麻烦。
7. 验证
点"立即更新",GitLab 会触发一次手动同步。去 CodeCommit 控制台刷新,看到 commit 进来就通了。
收尾
跑通之后我日常维护成本很低,GitLab 那边正常 push,CodeCommit 自动跟。后面如果要接 CodePipeline,直接从 CodeCommit 建触发器就行,不用再折腾 webhook。
References
- 统一DevOps流程:供应商协作的关键
- AWS DevOps CodePipeline体系建设:构建高效、自动化的部署流程
关于作者 · Alex
我是 Alex,12 年+ 软件架构经验,专注 AI 私有化部署、DevOps 与云原生架构。这里持续分享一线技术实践与职业成长。


