- 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件のコメント
Git に加えて LFS にも別個の認証を付けて使うと、意外と面倒なことがたくさん起きそうですね。
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リポジトリをホスティングするには不適切なツールのように見える