Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fsouza/s3-upload-proxy
Tool for proxying HTTP uploads to S3 and Elemental MediaStore, designed for video live streaming.
https://github.com/fsouza/s3-upload-proxy
aws-s3 go golang hacktoberfest livestream mediastore proxy s3
Last synced: 3 months ago
JSON representation
Tool for proxying HTTP uploads to S3 and Elemental MediaStore, designed for video live streaming.
- Host: GitHub
- URL: https://github.com/fsouza/s3-upload-proxy
- Owner: fsouza
- License: bsd-2-clause
- Created: 2017-05-13T04:45:25.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2024-04-22T12:45:15.000Z (9 months ago)
- Last Synced: 2024-04-22T13:28:09.299Z (9 months ago)
- Topics: aws-s3, go, golang, hacktoberfest, livestream, mediastore, proxy, s3
- Language: Go
- Homepage:
- Size: 2.83 MB
- Stars: 28
- Watchers: 5
- Forks: 8
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# s3-upload-proxy
[![Build Status](https://github.com/fsouza/s3-upload-proxy/workflows/Build/badge.svg)](https://github.com/fsouza/s3-upload-proxy/actions?query=branch:main+workflow:Build)
Tool for proxying HTTP uploads to S3 buckets and Elemental MediaStore
Containers (added later, bad naming :D). Useful for private network protected environments.## Running locally
Make sure you have [latest Go](https://golang.org/doc/install), then make sure
you have AWS credentials properly configured (s3-upload-proxy uses the [default
credential provider
chain](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-default),
so you can use environment variables or file-based configuration).Having Go and AWS credentials, just set the environment variable
`BUCKET_NAME`, build and start the process:```
% export BUCKET_NAME=some-bucket
% go build -o s3-upload-proxy
% ./s3-upload-proxy
```If you want to use MediaStore, the environment variable `UPLOAD_DRIVER`
should be set to "mediastore" and `BUCKET_NAME` must be set to the container
name on mediastore:```
% export UPLOAD_DRIVER=mediastore BUCKET_NAME=mediastoretest
% go build -o s3-upload-proxy
% ./s3-upload-proxy
```## Environment variables
s3-upload-proxy configuration's is defined using the following environment
variables:| Variable | Default value | Required | Description |
| --------------------------- | ------------- | -------- | -------------------------------------------------------------------------------- |
| UPLOAD_DRIVER | s3 | No | Upload driver to use (options are "mediastore" or "s3") |
| BUCKET_NAME | | Yes | Name of the S3 bucket or the mediastore container (depends on the upload driver) |
| HEALTHCHECK_PATH | /healthcheck | No | Path for healthcheck |
| HTTP_PORT | 80 | No | Port to bind (unsigned int) |
| LOG_LEVEL | debug | No | Logging level |
| CACHE_CONTROL_RULES | | No | JSON array with cache control rules (see below) |
| MEDIASTORE_CHUNKED_TRANSFER | false | No | Whether to enable chunked transfer with MediaStore for lower latency |## Defining cache-control rules
The tool also allow configuration for cache-control rules. The value of the
environment variable `CACHE_CONTROL_RULES` is a JSON array with the rules. An
example:```
% export CACHE_CONTROL_RULES='[{"regexp":".mp4$","value":"public, max-age=3600"},{"regexp":".ts$","value":"public, max-age=2, s-maxage=999999"},{"regexp":".m3u8$","value":"private"}]'
```Notice that the extension must include the dot.
Also available on Docker Hub: https://hub.docker.com/r/fsouza/s3-upload-proxy/.