3P by neo 25일전 | favorite | 댓글 2개
  • 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가 있음.

git 이외에 lfs에도 별도의 인증을 붙여서 쓰면 의외로 귀찮은 일이 많이 생길듯하드라구요.

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 저장소를 호스팅하는 데는 잘못된 도구처럼 보임