GN⁺: git-remote-s3 - S3를 원격 Git 및 LFS 서버로 사용하기
(github.com/awslabs)- Amazon S3를 git 원격 및 LFS 서버로 사용할 수 있게 해주는 awslabs의 라이브러리
- S3를 서버리스 Git 서버로 사용하기 위한 git remote helper 구현체
- 또한 동일한 S3 버킷에 LFS 관리 파일을 푸시할 수 있는 git-lfs custom transfer 구현체도 포함
- 파이썬 스크립트. 3.9 이상에서 동작
- 모든 데이터는 기본적으로 저장 및 전송 시 암호화됨. 추가적인 보안 계층을 위해 고객 관리 KMS 키를 사용하여 S3 버킷에 데이터를 암호화할 수 있음. 비용 절감을 위해 버킷 키 사용을 권장
- IAM 권한을 통해 원격에 대한 접근 제어가 보장됨. 버킷 수준, 접두사 수준, KMS 키 수준에서 제어 가능
-
git
의 분산 특성으로 인해 드물지만 여러 사용자가 동일한 브랜치에 대해 동시에git push
를 실행할 수 있음. 이 경우 여러 번들이 S3에 저장되고 이후의git push
는 실패할 수 있음. 이 문제를 해결하려면git-remote-s3 doctor
명령을 실행해야 함.
GN⁺의 정리
-
git-remote-s3
는 Amazon S3를 서버리스 Git 원격 및 LFS 서버로 사용할 수 있게 해주는 유용한 도구임. - 데이터 암호화 및 접근 제어를 통해 보안을 강화할 수 있음.
- 동시 쓰기 문제를 해결하기 위한 도구도 제공하여 안정성을 높임.
- 유사한 기능을 제공하는 다른 프로젝트로는
lfs-s3
가 있음.
Hacker News 의견
-
S3를 git remote로 사용하고 싶지만 개인정보 보호가 걱정된다면, Restic을 사용하여 S3를 신뢰할 수 없는 git remote로 사용하는 도구를 만들었음
-
AWS S3의 최소 청구 단위는 128KB임을 기억해야 함. 소스 트리가 작은 파일로 가득 차 있다면 Git 저장소 비용이 예상보다 많이 들 수 있음
-
S3 버킷만으로 구현할 수 있다는 점에 놀랐음. API Gateway, Lambda 함수, DynamoDB 테이블을 사용하여 S3 버킷을 지원하려고 했음. 클라이언트 측에서 구현할 생각은 하지 못했음
-
moto가 존재하는데도 모든 것을 모킹하는 것은 아쉬움
-
문제를 해결하기 위한 하나의 방법으로 moto가 있지만, S3 저장소 구현은 매우 많음. Apache 2 버전의 minio도 포함되어 있으며, S3 API처럼 안정적인 것에는 최신 버전을 사용할 필요가 없음
-
Rust로 작성된 rudolfs를 사용 중임. 성능은 뛰어나지만 필요한 모든 기능(인증)은 없음
-
S3에서 LFS를 위한 CloudFormation 템플릿을 오래 사용해 왔음
-
GitHub는 LFS 가격을 낮춰야 함
-
Cloudflare Workers를 사용하여 설정 단계/이동 부품을 줄일 수 있음
-
LFS 부분에서는 dvc가 git-lfs보다 더 잘 작동하며 S3를 기본적으로 지원함
-
git-annex도 S3에 대한 기본 지원을 제공함
-
S3에서는 트랜잭션 및 일관성 있게 푸시할 수 없기 때문에 잘못된 도구처럼 보임
-
Git 저장소를 호스팅하는 데는 잘못된 도구처럼 보임