3 คะแนน โดย GN⁺ 2024-10-21 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • ไลบรารีจาก awslabs ที่ช่วยให้สามารถใช้ Amazon S3 เป็น Git remote และเซิร์ฟเวอร์ LFS ได้
  • เป็น implementation ของ git remote helper สำหรับใช้ S3 เป็นเซิร์ฟเวอร์ Git แบบ serverless
  • รวมถึง implementation ของ git-lfs custom transfer ที่สามารถ push ไฟล์จัดการ LFS ไปยัง S3 bucket เดียวกันได้ด้วย
  • เป็นสคริปต์ Python ทำงานได้บนเวอร์ชัน 3.9 ขึ้นไป
  • ข้อมูลทั้งหมดถูกเข้ารหัสโดยค่าเริ่มต้นทั้งขณะจัดเก็บและระหว่างส่งข้อมูล และเพื่อเพิ่มชั้นความปลอดภัยสามารถใช้คีย์ KMS ที่ลูกค้าจัดการเองเพื่อเข้ารหัสข้อมูลใน S3 bucket ได้ โดยแนะนำให้ใช้ bucket key เพื่อลดค่าใช้จ่าย
  • การควบคุมสิทธิ์เข้าถึง remote รับประกันได้ผ่านสิทธิ์ของ IAM โดยควบคุมได้ในระดับ bucket, prefix และคีย์ KMS
  • ด้วยคุณสมบัติแบบกระจายของ git แม้จะเกิดไม่บ่อย แต่ผู้ใช้หลายคนอาจรัน git push พร้อมกันบน branch เดียวกันได้ ในกรณีนี้ bundle หลายชุดจะถูกเก็บใน S3 และ git push ครั้งถัดไปอาจล้มเหลว หากต้องการแก้ปัญหานี้ต้องรันคำสั่ง git-remote-s3 doctor

สรุปโดย GN⁺

  • git-remote-s3 เป็นเครื่องมือที่มีประโยชน์ซึ่งช่วยให้ใช้ Amazon S3 เป็น Git remote และเซิร์ฟเวอร์ LFS แบบ serverless ได้
  • สามารถเสริมความปลอดภัยได้ด้วยการเข้ารหัสข้อมูลและการควบคุมสิทธิ์การเข้าถึง
  • ยังมีเครื่องมือสำหรับแก้ปัญหาการเขียนพร้อมกันเพื่อเพิ่มความเสถียร
  • โปรเจ็กต์อื่นที่มีความสามารถคล้ายกันคือ lfs-s3

2 ความคิดเห็น

 
ganadist 2024-10-22

ถ้าต้องแยกใส่การยืนยันตัวตนสำหรับ LFS นอกเหนือจาก git ด้วย ก็น่าจะมีเรื่องจุกจิกที่น่ารำคาญเกิดขึ้นเยอะกว่าที่คิดนะครับ

 
GN⁺ 2024-10-21
ความคิดเห็นจาก Hacker News
  • ถ้าอยากใช้ S3 เป็น git remote แต่กังวลเรื่องความเป็นส่วนตัว ก็มีคนสร้างเครื่องมือที่ใช้ Restic เพื่อใช้ S3 เป็น git remote ที่ไม่ต้องเชื่อถือได้

  • ควรจำไว้ว่า หน่วยคิดค่าบริการขั้นต่ำของ AWS S3 คือ 128KB ถ้าซอร์สทรีของคุณเต็มไปด้วยไฟล์เล็ก ๆ ค่าใช้จ่ายของ Git repository อาจสูงกว่าที่คาดไว้

  • น่าแปลกใจที่ทำได้ด้วยแค่ S3 bucket อย่างเดียว เดิมทีคิดว่าจะต้องใช้ API Gateway, Lambda function และ DynamoDB table เพื่อรองรับ S3 bucket ไม่ได้นึกถึงการไปทำฝั่งไคลเอนต์เลย

  • น่าเสียดายที่ยัง mock ทุกอย่างทั้งที่มี moto อยู่แล้ว

  • วิธีหนึ่งในการแก้ปัญหาคือใช้ moto แต่ก็มี implementation ของ S3 storage อยู่มากมาย รวมถึง minio เวอร์ชัน Apache 2 ด้วย และสำหรับสิ่งที่เสถียรอย่าง S3 API ก็ไม่จำเป็นต้องใช้เวอร์ชันล่าสุด

  • กำลังใช้ rudolfs ที่เขียนด้วย Rust ประสิทธิภาพยอดเยี่ยม แต่ยังไม่มีฟีเจอร์ทั้งหมดที่ต้องการ (authentication)

  • ใช้ CloudFormation template สำหรับ LFS บน S3 มานานแล้ว

  • GitHub ควรลดราคา LFS

  • สามารถใช้ Cloudflare Workers เพื่อลดขั้นตอนการตั้งค่า/ชิ้นส่วนที่ต้องดูแลได้

  • ในส่วน LFS นั้น dvc ทำงานได้ดีกว่า git-lfs และรองรับ S3 ในตัว

  • git-annex ก็รองรับ S3 ในตัวเช่นกัน

  • บน S3 ไม่สามารถ push แบบมีทรานแซกชันและคงความสอดคล้องได้ จึงดูเหมือนเป็นเครื่องมือที่ไม่เหมาะ

  • ดูเหมือนจะเป็นเครื่องมือที่ไม่เหมาะสำหรับโฮสต์ Git repository