An open API service indexing awesome lists of open source software.

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

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.

![architecture](https://markdown-inline-svg.vitalibo.click/svg?source=https://raw.githubusercontent.com/vitalibo/git-lfs/master/readme.md&name=aws.svg)


SVG code

```
@aws.svg

AWS Cloud
AWS Cloud
1
1
AWS Lambda
AWS Lambda
Amazon S3
Amazon S3
Amazon API Gateway
Amazon API Gateway
Git LFS client
Git LFS client
Users
Users
2
2
3
3
4
4
5
5
6
6
7
7Viewer 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.

![architecture](https://markdown-inline-svg.vitalibo.click/svg?source=https://raw.githubusercontent.com/vitalibo/git-lfs/master/readme.md&name=azure.svg)


SVG code

```
@azure.svg

1
1
Git LFS client
Git LFS client
Users
Users
Azure
Azure
Function Apps
Function Apps
Blob Storage
Blob Storage
2
2
5
5
3
3
4
4
6
6Viewer 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.

![architecture](https://markdown-inline-svg.vitalibo.click/svg?source=https://raw.githubusercontent.com/vitalibo/git-lfs/master/readme.md&name=gcp.svg)


SVG code

```
@gcp.svg

Cloud Storage
Cloud Storage
1
1
Git LFS client
Git LFS client
Users
Users
Cloud Functions
Cloud Functions
4
4