ProductPromotion
Logo

Go.Lang

made by https://0x3d.site

GitHub - ianlopshire/go-ssm-config: Go utility for loading configuration parameters from AWS SSM (Parameter Store)
Go utility for loading configuration parameters from AWS SSM (Parameter Store) - ianlopshire/go-ssm-config
Visit Site

GitHub - ianlopshire/go-ssm-config: Go utility for loading configuration parameters from AWS SSM (Parameter Store)

GitHub - ianlopshire/go-ssm-config: Go utility for loading configuration parameters from AWS SSM (Parameter Store)

ssmconfig GoDoc Report card Go Cover

import "github.com/ianlopshire/go-ssm-config"

SSMConfig is a utility for loading configuration parameters from AWS SSM (Parameter Store) directly into a struct. This package is largely inspired by kelseyhightower/envconfig.

Motivation

This package was created to reduce the boilerplate code required when using Parameter Store to provide configuration to AWS Lambda functions. It should be suitable for additional applications.

Usage

Set some parameters in AWS Parameter Store:

Name Value Type Key ID
/exmaple_service/prod/debug false String -
/exmaple_service/prod/port 8080 String -
/exmaple_service/prod/user Ian String -
/exmaple_service/prod/rate 0.5 String -
/exmaple_service/prod/secret zOcZkAGB6aEjN7SAoVBT SecureString alias/aws/ssm

Write some code:

package main

import (
    "fmt"
    "log"
    "time"

    ssmconfig "github.com/ianlopshire/go-ssm-config"
)

type Config struct {
    Debug  bool    `ssm:"debug" default:"true"`
    Port   int     `ssm:"port"`
    User   string  `ssm:"user"`
    Rate   float32 `ssm:"rate"`
    Secret string  `ssm:"secret" required:"true"`
}

func main() {
    var c Config
    err := ssmconfig.Process("/example_service/prod/", &c)
    if err != nil {
        log.Fatal(err.Error())
    }
    
    format := "Debug: %v\nPort: %d\nUser: %s\nRate: %f\nSecret: %s\n"
    _, err = fmt.Printf(format, c.Debug, c.Port, c.User, c.Rate, c.Secret)
    if err != nil {
        log.Fatal(err.Error())
    }
}

Result:

Debug: false
Port: 8080
User: Ian
Rate: 0.500000
Secret: zOcZkAGB6aEjN7SAoVBT

Additional examples can be found in godoc.

Struct Tag Support

ssmconfig supports the use of struct tags to specify parameter name, default value, and required parameters.

type Config struct {
    Param         string `ssm:"param"`
    RequiredParam string `ssm:"required_param" required:"true"`
    DefaultParam  string `ssm:"default_param" default:"foobar"`
}

The ssm tag is used to lookup the parameter in Parameter Store. It is joined to the base path passed into Process(). If the ssm tag is missing ssmconfig will ignore the struct field.

The default tag is used to set the default value of a parameter. The default value will only be set if Parameter Store returns the parameter as invalid.

The required tag is used to mark a parameter as required. If Parameter Store returns a required parameter as invalid, ssmconfig will return an error.

The behavior of using the default and required tags on the same struct field is currently undefined.

Supported Struct Field Types

ssmconfig supports these struct field types:

  • string
  • int, int8, int16, int32, int64
  • bool
  • float32, float64

More supported types may be added in the future.

Licence

MIT

Articles
to learn more about the golang concepts.

Resources
which are currently available to browse on.

mail [email protected] to add your project or resources here ๐Ÿ”ฅ.

FAQ's
to know more about the topic.

mail [email protected] to add your project or resources here ๐Ÿ”ฅ.

Queries
or most google FAQ's about GoLang.

mail [email protected] to add more queries here ๐Ÿ”.

More Sites
to check out once you're finished browsing here.

0x3d
https://www.0x3d.site/
0x3d is designed for aggregating information.
NodeJS
https://nodejs.0x3d.site/
NodeJS Online Directory
Cross Platform
https://cross-platform.0x3d.site/
Cross Platform Online Directory
Open Source
https://open-source.0x3d.site/
Open Source Online Directory
Analytics
https://analytics.0x3d.site/
Analytics Online Directory
JavaScript
https://javascript.0x3d.site/
JavaScript Online Directory
GoLang
https://golang.0x3d.site/
GoLang Online Directory
Python
https://python.0x3d.site/
Python Online Directory
Swift
https://swift.0x3d.site/
Swift Online Directory
Rust
https://rust.0x3d.site/
Rust Online Directory
Scala
https://scala.0x3d.site/
Scala Online Directory
Ruby
https://ruby.0x3d.site/
Ruby Online Directory
Clojure
https://clojure.0x3d.site/
Clojure Online Directory
Elixir
https://elixir.0x3d.site/
Elixir Online Directory
Elm
https://elm.0x3d.site/
Elm Online Directory
Lua
https://lua.0x3d.site/
Lua Online Directory
C Programming
https://c-programming.0x3d.site/
C Programming Online Directory
C++ Programming
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
R Programming
https://r-programming.0x3d.site/
R Programming Online Directory
Perl
https://perl.0x3d.site/
Perl Online Directory
Java
https://java.0x3d.site/
Java Online Directory
Kotlin
https://kotlin.0x3d.site/
Kotlin Online Directory
PHP
https://php.0x3d.site/
PHP Online Directory
React JS
https://react.0x3d.site/
React JS Online Directory
Angular
https://angular.0x3d.site/
Angular JS Online Directory