aws-proxy

command module
v0.0.0-...-1167ab2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 27, 2016 License: Apache-2.0 Imports: 10 Imported by: 0

README

AWS Proxy

This app reverse proxies entry points for Amazon web services. Proxied requests are signed using the v4 signature which allows direct access to the endpoint with tools such as curl without having to sign the requests.

The primary use case for this app is proxying Amazon Elasticsearch Service domains so that developers can more easily use existing tools and libraries that integrate with Elasticsearch, although other AWS services can be proxied as well.

This project is inspired by the https://github.com/cllunsford/aws-signing-proxy library and borrows some core techniques.

Installation

Either download the latest binary for your platform, or assuming a correctly configured Go toolchain:

go get github.com/acquia/aws-proxy

Usage

This app reads configuration from environment variables, the AWS credentials file, the CLI configuration file, and instance profile credentials. See http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-metadata for more details.

Run the proxy, replacing my-domain and us-west-2 according to your environment.

aws-proxy --port 9200 --endpoint=https://my-domain.us-west-2.es.amazonaws.com

Consume the service with tools like curl:

curl http://localhost:9200
Proxying Kibana from the document root

If you just want to proxy Kibana and serve it from the document root, add the Kibana plugin's path to the endpoint:

aws-proxy --port 5601 --endpoint=https://my-domain.us-west-2.es.amazonaws.com/_plugin/kibana

Be aware that there is some magic behind the scenes to make this possible. Participate in https://github.com/acquia/aws-proxy/issues/6, pull back the curtain, and make things less magical.

Securing Kibana

You probably don't want to expose Kibana to the world, so check out Bitly's Oauth2 Proxy and set the AWS Proxy as its upstream endpoint.

If you do put AWS Proxy behind another reverse proxy, make sure to pass the --behind-reverse-proxy option so that the IP of the host that made the original request is logged.

Running With Upstart

Use Upstart to start aws-proxy during boot and supervise it while the system is running. Add a file to /etc/init with the following contents, replacing /path/to and my-domain according to your environment.

description "AWS Proxy"
start on runlevel [2345]

respawn
respawn limit 10 5

exec /path/to/aws-proxy --port 9200 --endpoint=https://my-domain.us-west-2.es.amazonaws.com

Development

AWS Proxy uses Glide to manage dependencies.

Release builds

Run the following command to build release binaries:

bin/build.sh

Alternate projects

We aren't in the business of pushing tools, so you should also look at the projects below so that you can make the best decision for your use case.

License

Except as otherwise noted this software is licensed under the Apache License, Version 2.0

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL