Git Product home page Git Product logo

s3-upload-proxy's Introduction

s3-upload-proxy

Build Status

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, then make sure you have AWS credentials properly configured (s3-upload-proxy uses the default credential provider chain, 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/.

s3-upload-proxy's People

Contributors

dependabot-preview[bot] avatar dependabot[bot] avatar fsouza avatar mwiesenbauer avatar renovate-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

s3-upload-proxy's Issues

ValidationException: Invalid request.\n\tstatus code: 400,

I just have to say again, thank you SO MUCH for fixing DASH and for adding in HTTP DELETE.

I'm testing it out and it's just what I needed. However, the most recent build seems to crash after a period of time.

Here is an example crash below. Interestingly it seems to happen after segment 176... to 179... every time.

Screen Shot 2019-07-13 at 2 16 00 PM

Screen Shot 2019-07-13 at 2 28 51 PM

Does this work with mediastore?

Hey. When I try using this for s3, it works fine. When I try mediastore, the objects get created in the bucket, but they are zero bytes in size.

Is it working for others?

api error InvalidSignatureException: Credential should be scoped to a valid region, not ''. "

Hi,

When I run s3-upload-proxy with MediaStore from the main branch or binary release, I receive the error:

api error InvalidSignatureException: Credential should be scoped to a valid region, not ''. "

If I revert to commit 793d1164921d6e42b4bec26686e76001995f218b, I can properly upload to my container.

I have tried setting environment variables from the command line and setting my ~.aws/config file, but nothing has helped. Do you have any suggestions?

My environment is:

  • amd64 Ubuntu 18.04 VM
  • go version go1.16.7 linux/amd64
  • ~/.aws/config
    image
  • AWS_REGION=us-west-2
  • AWS_DEFAULT_REGION=us-west-2

I am really excited to use the MEDIASTORE_CHUNKED_TRANSFER feature, which is unavailable on the working commit. I hope we can get this working! :)

HTTP DELETE

Hey! Thanks again for swiftly fixing the mediastore bug!

My http PUTs are working great to mediastore :). However, http DELETE seems to be ineffective. Is that something that I should expect to work, or, is that outside of the scope of what this shim does?

Thank you again! This is really helpful!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.