Reads AWS SSM Parameters and exports them as environment variables
100K+
Forked from Droplr/aws-env
Published as a docker image
Searches for SSM Parameters in your AWS account based on the variables provided and places them in a .env file
SSM_PATH [Required] - Complete path structure created in SSM Parameter storeAWS_REGION [Required] - Region in which the SSM Parameters are storedDIRECTORY [Optional] - Directory path of the .env file. Can contain child directories. Default is /ssm. NOTE: The default cannot be changed if used in a side car configuration.LOG_LEVEL [Optional] - Levels such as fatal, error, warn, info, debug, or disable. Default is infoTO_STDOUT [Optional] - (boolean) prints the parameters to stdout to be evaled. NOTE: LOG_LEVEL needs to be set to warn or above.FORMAT [Optional] - Format of the .env file.
export DB_HOST=$'mysql'
export DB_USERNAME=$'Username'
export DB_PASSWORD=$'SecretPassword'
shellDB_HOST='mysql'
DB_USERNAME='Username'
DB_PASSWORD='SecretPassword'
unquoted-shellDB_HOST=mysql
DB_USERNAME=Username
DB_PASSWORD=SecretPassword
-v [Optional] - Show version and exit 0Provide the hierachy structure using the SSM_PATH environment variable
SSM_PATH: /my-app/production/prod1
This path can be completely dynamic and the hierarchy can have a maximum depth of five levels. You can define a parameter at any level of the hierarchy.
Both of the following examples are valid:
/Level-1/Level-2/Level-3/Level-4/Level-5/parameter-name
/Level-1/parameter-name
Higher levels of the hierarchy will override the lower levels if the same parameter name is found.
Example:
/my-app/production/prod1/EMAIL would override the value of /my-app/EMAIL for the prod1 environment
/my-app/production/API_KEY would override the value of /my-app/API_KEY for the environment type production
/my-app/develop/test/API_KEY would override the value of /my-app/develop/API_KEY for the test environment
Add parameters to Parameter Store using hierarchy structure:
$ aws ssm put-parameter --name /my-app/DB_HOST --value "mysql" --type SecureString --key-id "alias/aws/ssm" --region ap-southeast-2
$ aws ssm put-parameter --name /my-app/production/DB_USERNAME --value "Username" --type SecureString --key-id "alias/aws/ssm" --region ap-southeast-2
$ aws ssm put-parameter --name /my-app/production/prod1/DB_PASSWORD --value "SecretPassword" --type SecureString --key-id "alias/aws/ssm" --region ap-southeast-2
awsenv can output the parameters in different ways
FORMAT to shell, unquoted-shellDIRECTORY/ssm/.env file. eval $(cat /ssm/.env)TO_STDOUT to true and eval awsenv. eval $(awsenv)LOG_LEVEL to warn or above to stop log outputs from being evaled.Include base2/awsenv as a side car container
/ssm directory/ssm/.env file to export the environment parametersawsenv:
image: base2/awsenv
environment:
SSM_PATH: /my-app/production/prod1
AWS_REGION: ap-southeast-2
test:
image: my-app
volumes_from:
- awsenv
entrypoint: eval $(cat /ssm/.env)
Build FROM base2/awsenv as awsenv and extract the binary
base2/awsenv image to your PATHFROM base2/awsenv as awsenv
FROM debian:jessie
COPY --from=awsenv /awsenv /bin/awsenv
ENTRYPOINT awsenv && eval $(cat /ssm/.env)
Content type
Image
Digest
Size
4.7 MB
Last updated
over 7 years ago
docker pull base2/awsenv