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.
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-valueThen use env-aws-params to have bash display the env vars it was called with:
env-aws-params --prefix /service-prefix /bin/bash -c setIf you want to include common and service specific values, --prefix can be specified
multiple times:
env-aws-params --prefix /common /bin/bash -c setTo 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.shWhich will write your environment variables in plain text, for example:
# ~/some-file.sh Contents:
ENV_VAR1=example
ENV_VAR2=test-valueNAME:
   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]
   --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
This project uses go modules. To build the project:
go mod download
go mod verify
go buildBuilding 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]