Home

Awesome

Reverse proxy for AWS S3 w/ basic authentication

circleci status

pottava/s3-proxy

Supported tags and respective Dockerfile links:

・latest (docker/linux/2.0/Dockerfile)
・2.0 (docker/linux/2.0/Dockerfile)
・1.4 (docker/linux/1.4/Dockerfile)
・1.4-win (docker/windows/1.4/Dockerfile)
・1 (docker/linux/1.4/Dockerfile)

Description

This is a reverse proxy for AWS S3, which is able to provide basic authentication as well.
You don't need to configure a Bucket for Website Hosting.

http://this-proxy.com/access/ -> s3://bucket/access/index.html

(日本語はこちら)

Usage

1. Set environment variables

Environment VariablesDescriptionRequiredDefault
AWS_S3_BUCKETThe S3 bucket to be proxied with this app.*
AWS_S3_KEY_PREFIXYou can configure S3 object key prefix.-
AWS_REGIONThe AWS region where the S3 bucket exists.us-east-1
AWS_ACCESS_KEY_IDAWS access key for API access.EC2 Instance Role
AWS_SECRET_ACCESS_KEYAWS secret key for API access.EC2 Instance Role
AWS_API_ENDPOINTThe endpoint for AWS API for local development.-
INDEX_DOCUMENTName of your index document.index.html
DIRECTORY_LISTINGSList files when a specified URL ends with /.false
DIRECTORY_LISTINGS_FORMATConfigures directory listing to be html (spider parsable)-
HTTP_CACHE_CONTROLOverrides S3's HTTP Cache-Control header.S3 Object metadata
HTTP_EXPIRESOverrides S3's HTTP Expires header.S3 Object metadata
BASIC_AUTH_USERUser for basic authentication.-
BASIC_AUTH_PASSPassword for basic authentication.-
SSL_CERT_PATHTLS: cert.pem file path.-
SSL_KEY_PATHTLS: key.pem file path.-
CORS_ALLOW_ORIGINCORS: a URI that may access the resource.-
CORS_ALLOW_METHODSCORS: Comma-delimited list of the allowed HTTP request methods.-
CORS_ALLOW_HEADERSCORS: Comma-delimited list of the supported request headers.-
CORS_MAX_AGECORS: Maximum number of seconds the results of a preflight request can be cached.600
APP_PORTThe port number to be assigned for listening.80
APP_HOSTThe host name used to the listenerListens on all available unicast and anycast IP addresses of the local system.
ACCESS_LOGSend access logs to /dev/stdout.false
STRIP_PATHStrip path prefix.-
CONTENT_ENCODINGCompress response data if the request allows.true
HEALTHCHECK_PATHIf it's specified, the path always returns 200 OK-
GET_ALL_PAGES_IN_DIRIf true will make several calls to get all pages of destination directoryfalse
MAX_IDLE_CONNECTIONSAllowed number of idle connections to the S3 storage150
IDLE_CONNECTION_TIMEOUTAllowed timeout to the S3 storage.10
DISABLE_COMPRESSIONIf true will pass encoded content through as-is.true
INSECURE_TLSIf true it will skip cert checksfalse

2. Run the application

docker run -d -p 8080:80 -e AWS_REGION -e AWS_S3_BUCKET pottava/s3-proxy

docker run -d -p 8080:80 -e AWS_REGION -e AWS_S3_BUCKET -e BASIC_AUTH_USER -e BASIC_AUTH_PASS pottava/s3-proxy

docker run -d -p 8080:80 -e AWS_REGION -e AWS_S3_BUCKET -e SSL_CERT_PATH -e SSL_KEY_PATH pottava/s3-proxy

docker run -d -p 8080:80 -e CORS_ALLOW_ORIGIN -e CORS_ALLOW_METHODS -e CORS_ALLOW_HEADERS -e CORS_MAX_AGE pottava/s3-proxy

proxy:
  image: pottava/s3-proxy
  ports:
    - 8080:80
  environment:
    - AWS_REGION=ap-northeast-1
    - AWS_ACCESS_KEY_ID
    - AWS_SECRET_ACCESS_KEY
    - AWS_S3_BUCKET
    - BASIC_AUTH_USER=admin
    - BASIC_AUTH_PASS=password
    - ACCESS_LOG=true
  container_name: proxy

Copyright and license

Code released under the MIT license.