3 điểm bởi GN⁺ 2024-10-21 | 2 bình luận | Chia sẻ qua WhatsApp
  • Thư viện của awslabs cho phép sử dụng Amazon S3 làm remote Git và máy chủ LFS
  • Triển khai git remote helper để sử dụng S3 làm máy chủ Git serverless
  • Đồng thời cũng bao gồm triển khai custom transfer của git-lfs để có thể push các tệp quản lý LFS vào cùng một bucket S3
  • Script Python. Hoạt động trên phiên bản 3.9 trở lên
  • Mọi dữ liệu mặc định đều được mã hóa khi lưu trữ và truyền tải. Có thể mã hóa dữ liệu trong bucket S3 bằng khóa KMS do khách hàng quản lý để tăng thêm lớp bảo mật. Khuyến nghị sử dụng bucket key để giảm chi phí
  • Kiểm soát truy cập vào remote được đảm bảo thông qua quyền IAM. Có thể kiểm soát ở cấp bucket, cấp tiền tố và cấp khóa KMS
  • Do đặc tính phân tán của git, tuy hiếm nhưng nhiều người dùng có thể đồng thời chạy git push trên cùng một nhánh. Trong trường hợp này, nhiều bundle sẽ được lưu vào S3 và các lần git push sau đó có thể thất bại. Để giải quyết vấn đề này, cần chạy lệnh git-remote-s3 doctor

Tóm tắt của GN⁺

  • git-remote-s3 là công cụ hữu ích giúp dùng Amazon S3 làm Git remote serverless và máy chủ LFS.
  • Có thể tăng cường bảo mật bằng mã hóa dữ liệu và kiểm soát truy cập.
  • Công cụ cũng cung cấp phương án xử lý vấn đề ghi đồng thời để nâng cao độ ổn định.
  • Một dự án khác cung cấp tính năng tương tự là lfs-s3.

2 bình luận

 
ganadist 2024-10-22

Ngoài git ra, nếu còn gắn thêm cơ chế xác thực riêng cho lfs để dùng thì có vẻ sẽ phát sinh khá nhiều việc phiền phức ngoài dự kiến.

 
GN⁺ 2024-10-21
Ý kiến trên Hacker News
  • Nếu muốn dùng S3 làm git remote nhưng lo ngại về quyền riêng tư, có người đã tạo một công cụ dùng Restic để sử dụng S3 như một git remote không đáng tin cậy

  • Cần nhớ rằng đơn vị tính phí tối thiểu của AWS S3 là 128KB. Nếu cây mã nguồn chứa đầy các tệp nhỏ, chi phí kho Git có thể cao hơn dự kiến

  • Khá ngạc nhiên khi có thể triển khai chỉ với bucket S3. Có người từng định hỗ trợ bucket S3 bằng API Gateway, hàm Lambda và bảng DynamoDB. Không nghĩ tới việc triển khai ở phía client

  • Thật đáng tiếc khi vẫn mock mọi thứ dù đã có moto

  • Một cách để giải quyết vấn đề là dùng moto, nhưng có rất nhiều triển khai lưu trữ S3. Bao gồm cả minio bản Apache 2, và với thứ ổn định như API S3 thì không cần dùng phiên bản mới nhất

  • Đang dùng rudolfs viết bằng Rust. Hiệu năng rất tốt nhưng thiếu mọi tính năng cần thiết (xác thực)

  • Đã dùng template CloudFormation cho LFS trên S3 từ khá lâu

  • GitHub nên giảm giá LFS

  • Có thể dùng Cloudflare Workers để giảm các bước thiết lập / số thành phần cần vận hành

  • Ở phần LFS, dvc hoạt động tốt hơn git-lfs và hỗ trợ S3 ngay từ đầu

  • git-annex cũng cung cấp hỗ trợ tích hợp cho S3

  • S3 có vẻ là công cụ không phù hợp vì không thể push theo cách có giao dịch và nhất quán

  • Có vẻ đây không phải là công cụ phù hợp để lưu trữ kho Git