【问题标题】:How do I sync changes on AWS S3 (ultimately on AWS EFS) back into a Github repository?如何将 AWS S3(最终在 AWS EFS)上的更改同步回 Github 存储库?
【发布时间】:2021-01-16 20:55:15
【问题描述】:
我使用 Github Actions 将我的 git repo 的一个子文件夹(包括
如何将 S3(甚至更好 - EFS)存储桶与添加/更改/删除的文件同步回我在 Github 上的 git 存储库?
- 我找不到任何可以提供此功能的 Github Actions
- 当我使用 EC2 挂载我的 EFS 时,我想我可能会 git clone 并创建一个指向 EFS 的符号链接。然后我可以跳过 S3 侧步骤并调用 git pull/push。
- 我想我可以构建一个 Lambda 来启动一个 EC2 实例,该实例会自动从 S3 中提取这些文件并将提交推送到我的 git 存储库。
- 我可以尝试弄清楚如何使用 Lambda 和 /tmp 来制定提交
我一直无法思考实现这一目标的最佳方法。
你能把我推向正确的方向吗?
附:我对 git 不是很精通,这整个实现有点超出我的范围。 :-)
【问题讨论】:
标签:
git
amazon-s3
aws-lambda
github-actions
amazon-efs
【解决方案1】:
@vonc,谢谢你的提示,它让我朝着正确的方向前进。
我最终这样做了,这解决了我的最终目标,即通过 GIT 管理 EFS。我可以完全跳过 S3 / Lambda。
第一步:sudo mount -t efs -o tls MYFILESYSTEMID:/ efs
第二步:cd efs
第三步:git clone --depth 1 --no-checkout --filter=blob:none git@github.com:user/repo
第四步:cd repo
第 5 步:git sparse-checkout set subdirectory
第 6 步:git read-tree -mu HEAD
从这里开始,我可以在这个特定的子目录中推送/拉取更改。
【解决方案2】:
如果您可以在挂载 AWS EFS 后将 Git 存储库克隆到同一 EC2 实例上,则可以:
cd /path/to/cloned/git/repository
git --work-tree=/path/to/mounted/EFS add .
这将检测 EFS 中添加/修改/删除的更改,并将这些更改导入到克隆的 Git 存储库。
从那里,您可以提交和推送。