Created by gh-md-toc
aws-secretsmanager: CONFIG_VAR=aws-secretsmanager:region:secret_name[:field_name]
aws-parameterstore: CONFIG_VAR=aws-parameterstore:region:parameter_name[:field_name]
aws-s3: CONFIG_VAR=aws-s3:region:bucket_name,object_name[:field_name]
aws-dynamodb: CONFIG_VAR=aws-dynamodb:region:table_name,key_name,key_value,value_attr[:field_name]
aws-lambda: CONFIG_VAR=aws-lambda:region:func_name,key_name,key_value,body_field[:field_name]
#http: CONFIG_VAR=#http::method,proto,host,path,body_base64,token[:field_name]
:field_name
is optional. If provided, the object will be decoded as JSON/YAML and the specified field name will be extracted.
Examples:
export DB_URI=aws-secretsmanager:us-east-1:database:uri
export DB_URI=aws-parameterstore:us-east-1:/microservice9/mongodb:uri
export DB_URI=aws-s3:us-east-1:bucketParameters,app7/mongodb.yaml:uri
export DB_URI=aws-dynamodb:us-east-1:parameters,parameter,mongodb,value:uri
export DB_URI=aws-lambda:us-east-1:parameters,parameter,mongodb,body:uri
echo -n '{"parameter":"mongodb"}' | base64
eyJwYXJhbWV0ZXIiOiJtb25nb2RiIn0=
export DB_URI=#http::GET,https,tttt.lambda-url.us-east-1.on.aws,/,eyJwYXJhbWV0ZXIiOiJtb25nb2RiIn0=,Bearer secret:uri
export DB_URI=aws-dynamodb:us-east-1:parameters,parameter,mongodb,value:uri
# Table: parameters
# Key: parameter=mongodb
# Attribute name: value
# Attribute value: {"uri":"mongodb://127.0.0.1:27001/?retryWrites=false"}
export DB_URI=aws-lambda:us-east-1:parameters,parameter,mongodb,body:uri
# Function: parameters
# Request: {"parameter":"mongodb"}
# Response field: body
# Response: {"statusCode": 200,"body": "{\"uri\": \"mongodb://localhost:27017/?retryWrites=false\"}"}
export DB_URI=#http::GET,https,tttt.lambda-url.us-east-1.on.aws,/,eyJwYXJhbWV0ZXIiOiJtb25nb2RiIn0=,Bearer secret:uri
# Method: GET
# Protocol: https
# Host: tttt.lambda-url.us-east-1.on.aws
# Path: /
# Body: {"parameter":"mongodb"} (base64 encoded as eyJwYXJhbWV0ZXIiOiJtb25nb2RiIn0=)
# Token: Bearer secret
# Response: {"uri":"mongodb://127.0.0.1:27001/?retryWrites=false"}
See example function newConfig()
below.
Or look at examples/envconfig-example/config.go.
import (
"github.com/udhos/boilerplate/envconfig"
)
type appConfig struct {
databaseURI string
databaseCode int
databaseTidy bool
}
func newConfig(env *envconfig.Env) appConfig {
return appConfig{
databaseURI: env.String("DB_URI", "http://test-db"),
databaseCode: env.Int("DB_CODE", 42),
databaseTidy: env.Bool("DB_TIDY", false),
}
}
export DB_URI=http://real-db
If you prefix env var value with aws-secretsmanager:
, the envconfig package will try to fetch it from AWS Secrets Manager.
Format:
export CONFIG_VAR=aws-secretsmanager:region:secret_name
Example:
export DB_URI=aws-secretsmanager::database_uri
# `database_uri` is the name of the secret stored in AWS Secrets Manager
# The secret `database_uri` could store any scalar value like: `http://real-db`
If you append ":<json_field>" to env var value, after the secret name, the package envconfig will retrieve the secret from AWS Secrets Manager and will attempt to extract that specific JSON field from the value.
Format:
export CONFIG_VAR=aws-secretsmanager:region:secret_name:json_field
Example:
export DB_URI=aws-secretsmanager::database:uri
# `database` is the name of the secret stored in AWS Secrets Manager
# `uri` is the name of the field to be retrieved from the JSON value
# The secret `database` should store a JSON value like: `{"uri":"http://real-db"}`
# In this example, the env var DB_URI will be assigned the value of the JSON field `uri`: `http://real-db`.