3 ポイント 投稿者 GN⁺ 2024-10-21 | 2件のコメント | WhatsAppで共有
  • Amazon S3をgitリモートおよびLFSサーバーとして使えるようにするawslabsのライブラリ
  • S3をサーバーレスGitサーバーとして利用するためのgit remote helper実装
  • さらに、同じS3バケットにLFS管理ファイルをpushできるgit-lfs custom transfer実装も含む
  • Pythonスクリプト。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がある。

2件のコメント

 
ganadist 2024-10-22

Git に加えて LFS にも別個の認証を付けて使うと、意外と面倒なことがたくさん起きそうですね。

 
GN⁺ 2024-10-21
Hacker Newsの意見
  • S3をgit remoteとして使いたいがプライバシーが心配なら、Resticを使ってS3を信頼できないgit remoteとして使うツールを作った

  • AWS S3の最小課金単位は128KBであることを覚えておくべき。ソースツリーが小さなファイルだらけなら、Gitリポジトリのコストは予想以上に高くなる可能性がある

  • S3バケットだけで実装できる点に驚いた。S3バケットを支えるためにAPI Gateway、Lambda関数、DynamoDBテーブルを使おうとしていた。クライアント側で実装する発想はなかった

  • 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ではトランザクション性と一貫性を保ったpushができないため、間違ったツールのように見える

  • Gitリポジトリをホスティングするには不適切なツールのように見える