使用lambda函数将CodeCommit存储库克隆到另一个AWS帐户



我有两个AWS帐户。我在一个CodeCommit存储库中开发代码。完成后,我需要将该代码克隆到另一个帐户CodeCommit存储库中。有没有一种方法可以使用lambda函数或任何其他方法来实现这一过程的自动化。

请帮帮我,一个多月来真的很头疼

有几种方法可以做到这一点。从本质上讲,您需要的是一个触发器,然后在每次提交后将复制过程踢入另一个帐户。以下是两种可能的方法。

Lambda+Fargate

第一个使用Lambda的组合,您可以选择CodeCommit作为其触发器。Lambda函数然后运行一个Fargate任务,该任务又使用git clone --mirror复制存储库。此处使用Fargate是因为较大存储库的复制可能超过Lambda可以分配的临时存储。

https://aws.amazon.com/blogs/devops/replicate-aws-codecommit-repository-between-regions-using-aws-fargate/

代码管道+代码构建

这可能是";"清洁剂";变体,因为它在AWS中使用本地CI/CD工具,与ECS/Fargate相比,设置起来更容易,还有其他优势。

在这里,您正在设置AWS CodePipeline,它将监控CodeCommit存储库中的任何更改。当检测到提交时,它将触发CodeBuild,CodeBuild反过来运行前面概述的相同git命令。

https://medium.com/geekculture/replicate-aws-codecommit-repositories-between-regions-using-codebuild-and-codepipeline-39f6b8fcefd2

假设您在账户A上有回购1,在账户B上有回购2,则您希望同步回购1->回购2

最简单的方法是执行以下操作:

  1. 在帐户A上创建SNS主题
  2. 为repo 1启用通知,并将所有事件发送到SNS主题
  3. 创建一个lambda函数以订阅SNS主题
  4. 请务必遵循本指南https://docs.aws.amazon.com/codecommit/latest/userguide/cross-account.html授予lambda函数跨帐户CodeCommit权限
  5. 编写一个python函数来决定要复制哪些git事件。如果您只想同步main分支并忽略所有其他分支,您可以说:if event["source_ref"].endswith("main"),然后使用boto3 CodeCommit APIhttps://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/codecommit.html,(查看batch_get_commits(将更改提交到远程CodeCommit repo

然而,我真的怀疑你真的需要这样做吗?不如将所有git历史记录作为zip到S3转储到您的远程帐户?如果你看到任何变化,每次都导入?我相信你的远程帐户大部分是只读的,只是作为备份。如果您只需要备份,您可以直接转储到S3,甚至不需要导入。

相关内容

最新更新