https://github.com/vitalibo/git-lfs
A set of modules for deploying custom Git LFS servers on different infrastructure providers
https://github.com/vitalibo/git-lfs
aws aws-s3 azure azure-blob-storage gcp git-lfs google-cloud-storage self-hosted terraform
Last synced: about 1 year ago
JSON representation
A set of modules for deploying custom Git LFS servers on different infrastructure providers
- Host: GitHub
- URL: https://github.com/vitalibo/git-lfs
- Owner: vitalibo
- Created: 2020-05-09T14:45:44.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2025-01-02T01:27:13.000Z (over 1 year ago)
- Last Synced: 2025-03-25T22:21:19.916Z (over 1 year ago)
- Topics: aws, aws-s3, azure, azure-blob-storage, gcp, git-lfs, google-cloud-storage, self-hosted, terraform
- Language: Python
- Homepage:
- Size: 189 KB
- Stars: 17
- Watchers: 3
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# Git LFS
[Git Large File Storage](https://git-lfs.github.com) (Git LFS) is an extension to Git that allows you to work with large files the same way as other text files but store it on separate remote servers.
This project contains a set of modules for deploying custom Git LFS servers on different infrastructure providers.
Implemented [Batch API](https://github.com/git-lfs/git-lfs/blob/master/docs/api/batch.md) to request the ability to transfer LFS objects with the LFS server.
Inspired by [Serverless Git LFS for Game Development - Alan Edwardes](https://alanedwardes.com/blog/posts/serverless-git-lfs-for-game-dev/).
### AWS
Module AWS allows you to use [Amazon S3](https://aws.amazon.com/s3/) as remote storage for large files.
Service is deployable on a serverless stack (API Gateway + Lambda) that allows you to use Pay-As-You-Go (PAYG) pricing model.
The high-level solution diagram you can find below.

SVG code
```
@aws.svg
AWS CloudAWS Cloud11AWS LambdaAWS LambdaAmazon S3Amazon S3Amazon API GatewayAmazon API GatewayGit LFS clientGit LFS clientUsersUsers223344556677Viewer does not support full SVG 1.1
@aws.svg
```
When user push/pull (1) changes Git LFS client make Batch API request (2) over HTTPS to Amazon API Gateway service which in turn proxies (3) request to AWS Lambda.
In lambda function for each LFS object generated presigned URL for temporary write/read access to S3.
After processing the result returned (4) to API Gateway that turn back (5) response to Git LFS client.
Now Git LFS client ready for uploading (6) / downloading (7) objects to/from S3 using presigned URL.
### Azure
Module Azure allows you to use [Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/) service as remote storage for large files.
Azure Functions serverless computing platform is taken as a basis for deploying Git LFS application.

SVG code
```
@azure.svg
11Git LFS clientGit LFS clientUsersUsersAzureAzureFunction AppsFunction AppsBlob StorageBlob Storage2255334466Viewer does not support full SVG 1.1
@azure.svg
```
When user push/pull (1) changes Git LFS client make Batch API request (2) over HTTPS and triggered Azure Function.
In function for each LFS object generated (3) shared access signature (SAS) URL for temporary write/read access to Azure Blob Storage.
After received (4) response Git LFS client make uploading (5) / downloading (6) objects to/from Azure Blob Storage using SAS URL.
### Google Cloud Platform (GCP)
Module GCP allow you to use [Cloud Storage](https://cloud.google.com/storage) service as remote storage for large files.
Application code is running on serverless stacks, namely use Cloud Functions computing engine.

SVG code
```
@gcp.svg
Cloud StorageCloud Storage11Git LFS clientGit LFS clientUsersUsersCloud FunctionsCloud Functions44