- 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
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.
Ý kiến trên Hacker News
Nếu muốn dùng S3 làm
git remotenhư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ộtgit remotekhông đáng tin cậyCầ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ể
pushtheo cách có giao dịch và nhất quánCó vẻ đây không phải là công cụ phù hợp để lưu trữ kho Git