GithubHelp home page GithubHelp logo

solidsnack / sssp Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mesosphere-backup/sssp

1.0 3.0 0.0 291 KB

The S3 Proxy

License: Other

Shell 11.09% Haskell 83.24% Makefile 5.68%
haskell s3 aws proxy

sssp's Introduction

SYNOPSIS
       sssp

DESCRIPTION
       SSSP is an HTTP proxy for S3 that can generate short-lived, signed URLs
       for stored objects. By providing a server separate from S3 that can  be
       placed  behind an authenticating proxy or firewall, SSSP allows a vari-
       ety of common security mechanisms to be used  to  limit  access  to  S3
       objects over HTTP while taking advantage of S3's considerable bandwidth
       and parallelism.

       Use-cases for SSSP include:

          o sharing of large files within an organization,

          o media service for public facing web applications,

          o distribution of internal software.

       SSSP supports configuration via environment variables or STDIN.

CONFIGURATION
       These settings can be passed as environment variables  or  fed  to  the
       server  on  STDIN in colon separated format. Both the new and old forms
       of  the  AWS  credential  environment  variables  are  supported.   The
       AWS_DEFAULT_REGION  variable, shared with AWS Python CLI tools, is sup-
       ported as well. The AWS_REGION is an old, SSSP specific version of  the
       same functionality.

       # AWS Settings
       AWS_ACCESS_KEY              = account access key
       AWS_ACCESS_KEY_ID           = account access key
       AWS_SECRET_KEY              = secret
       AWS_SECRET_ACCESS_KEY       = secret
       AWS_DEFAULT_REGION          = eu-west-1, classic, us-east-1, ...
       AWS_REGION                  = eu-west-1, classic, us-east-1, ...

       # Storage settings
       SSSP_BUCKET                 = DNS friendly bucket name

       # Server settings
       SSSP_CONN                   = <ip>:<port> pair
       PORT                        = port to connect to, on localhost

       SSSP  is  fairly  liberal when parsing STDIN. In fact, Bourne shell .rc
       files, like the follow example, are parsed without error:

       export SSSP_BUCKET=dist
       export SSSP_CONN=*:6000

       However, SSSP skips over lines that contain quotes ("') or that  appear
       to  require  shell interpolation for their correct interpolation (lines
       containing $`{}).

REST INTERFACE
       URLs in SSSP point to one of two objects: an item or a  listing.  Items
       correspond  to  S3  objects;  a  GET retrieves a signed redirect to the
       object.  Listings are a sequence of URLs, in  ascending  order;  a  GET
       retrieves the listing as a plaintext document, one URL per line.

       GET http://sssp.io/p/a/t/h         # Signed for the default time (10s).
       GET http://sssp.io/p/a/t/h?t=n     # Signed for n seconds.

       A  PUT  to  an item sets the item's content. DELETEs can be singular or
       plural. A plural DELETE removes only the objects generated by  a  list-
       ing.

       URLs  are  divided syntactically in to listings and items. A URL ending
       with a slash is always a listing.

       GET http://sssp.io/dist   # Signed redirect to an object called dist.
       GET http://sssp.io/dist/  # Listing of items below the key `dist'.

       To make it easier to work with versioned or  timestamped  assets,  SSSP
       supports the @hi and @lo meta-paths. These correspond to the names that
       sort highest and lowest  according  to  semantic  version  sort,  where
       non-digit chars serve to delimit arrays of numbers. For common forms of
       dates, these have the same effect as ASCII sort. (ASCII sort may speci-
       fied, as well; please the section WILDCARDS, below.)

       GET http://sssp.io/dist/x/x-0.1.1.tgz
       GET http://sssp.io/dist/x/x-0.1.4.tgz
       GET http://sssp.io/dist/x/x-0.2.11.tgz
       GET http://sssp.io/dist/x/x-0.2.9.tgz

       # Retrieval with @hi and @lo.
       GET http://sssp.io/dist/x/@hi  -307->  http://sssp.io/dist/x/x-0.2.11.tgz
       GET http://sssp.io/dist/x/@lo  -307->  http://sssp.io/dist/x/x-0.1.1.tgz

       Wildcards  @hi  and  @lo used together with a count specify a set wild-
       card; the result is a listing:

       GET http://sssp.io/dist/x/@lo2  -200->  dist/x/x-0.1.1.tgz
                                               dist/x/x-0.1.4.tgz

       Counts are the natural numbers starting at 0. The wildcard @* refers to
       "all the items".

       A counted wildcard, like @hi2, can be suffixed with a tilde to form its
       complement -- so @hi2~ is everything but the highest  two  items.  This
       can be useful for bulk deletion of old/new things.

WILDCARDS
          @hi.semver, @lo.semver
                 Key  with  highest or lowest version, according to a liberal-
                 ized form of "semantic versioning", where version  components
                 are delimited by any non-digit characters.

          @hi.ascii, @lo.ascii
                 Keys sorted ASCIIbetically, in the C locale (sorted purely by
                 byte value).

          @hi, @lo
                 The default sort, which is semantic version sort.

          @*, @*.semver, @*.ascii
                 All the items, in the default order (semantic version) or  in
                 a specified order.

       ASCII  sort  can be substantially more performant than semantic version
       sort, because S3 returns data in ASCII order and thus no  real  sorting
       is necessary.

EXAMPLES
       # Start web application.
       sssp < conf

       # Start web application with configuration provided by the environment.
       export AWS_ACCESS_KEY_ID=...
       export AWS_SECRET_ACCESS_KEY=...
       sssp <<CONF
       SSSP_BUCKET: dist
       CONF

BUGS
       Listing  results  should really be URLs. The time to sign should really
       be configurable; or at least settable with a query parameter.

sssp's People

Contributors

solidsnack avatar

Stargazers

 avatar

Watchers

 avatar James Cloos avatar  avatar

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.