env-aws-params

env-aws-params
is a tool that injects AWS EC2 Systems Manager (SSM)
Parameter Store
Key / Value pairs as Environment Variables
when executing an application. It is intended to be used as a Docker
Entrypoint,
but can really be used to launch applications outside of Docker as well.
The primary goal is to provide a way of injecting environment variables for
12 Factor applications that have their configuration defined
in the SSM Parameter store. It was directly inspired by
envconsul.
Example Usage
Create parameters in Parameter Store:
aws ssm put-parameter --name /service-prefix/ENV_VAR1 --value example
aws ssm put-parameter --name /service-prefix/ENV_VAR2 --value test-value
Then use env-aws-params
to have bash display the env vars it was called with:
env-aws-params --prefix /service-prefix /bin/bash -c set
If you want to include common and service specific values, --prefix
can be specified
multiple times:
env-aws-params --prefix /common /bin/bash -c set
To get a plaintext output of your environment variables to use with other utilities, we can use printenv
:
env-aws-params --pristine --silent --prefix /service-prefix /usr/bin/printenv > ~/some-file.sh
Which will write your environment variables in plain text, for example:
# ~/some-file.sh Contents:
ENV_VAR1=example
ENV_VAR2=test-value
CLI Options
NAME:
env-aws-params - Application entry-point that injects SSM Parameter Store values as Environment Variables
USAGE:
env-aws-params [global options] -p prefix command [command arguments]
COMMANDS:
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--aws-region value The AWS region to use for the Parameter Store API [$AWS_REGION]
--aws-profile value The AWS profile to use for the Parameter Store API [$AWS_PROFILE]
--prefix value, -p value Key prefix that is used to retrieve the environment variables - supports multiple use
--pristine Only use values retrieved from Parameter Store, do not inherit the existing environment variables
--sanitize Replace invalid characters in keys to underscores
--strip Strip invalid characters in keys
--upcase Force keys to uppercase
--debug Log additional debugging information [$PARAMS_DEBUG]
--silent Silence all logs [$PARAMS_SILENT]
--help, -h show help
--version, -v print the version
Building
This project uses dep. To build the project:
dep ensure
go build
Building an environment is also provided as a docker image based on Alpine Linux. See the Dockerfile for more information.
docker build -t env-aws-params; # Build the image
docker run --rm -it -v $HOME/.aws/:/root/.aws/ env-aws-params [your options]