• Stars
    star
    54
  • Rank 525,866 (Top 11 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 5 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Go package that interfaces with AWS System Manager

codecov Go Report Card GoDoc

go-aws-ssm

Go package that interfaces with AWS System Manager.

Why to use go-aws-ssm and not the aws-sdk-go?

This package is wrapping the aws-sdk-go and hides the complexity dealing with the not so Go friendly AWS SDK. Perfect use case for this package is when secure parameters for an application are stored to AWS Parameter Store using a path hierarchy. During application startup you can use this package to fetch them and use them in your application.

Install

go get github.com/PaddleHQ/go-aws-ssm

Examples

Basic Usage

        //Assuming you have the parameters in the following format:
    	//my-service/dev/param-1  -> with value `a`
    	//my-service/dev/param-2  -> with value `b`
    	pmstore, err := awsssm.NewParameterStore()
    	if err != nil {
    		return err
    	}
    	//Requesting the base path
    	params, err := pmstore.GetAllParametersByPath("/my-service/dev/", true)
    	if err!=nil{
    		return err
    	}
    	
    	//And getting a specific value
    	value:=params.GetValueByName("param-1")
    	//value should be `a`
    	
    	

Integrates easily with viper

        //Assuming you have the parameters in the following format:
     	//my-service/dev/param-1  -> with value `a`
     	//my-service/dev/param-2  -> with value `b`
     	pmstore, err := awsssm.NewParameterStore()
     	if err != nil {
     		return err
     	}
     	//Requesting the base path
     	params, err := pmstore.GetAllParametersByPath("/my-service/dev/", true)
     	if err!=nil{
     		return err
     	}
    
    	//Configure viper to handle it as json document, nothing special here!
    	v := viper.New()
    	v.SetConfigType(`json`)
    	//params object implements the io.Reader interface that is required
    	err = v.ReadConfig(params)
    	if err != nil {
    		return err
    	}
    	value := v.Get(`param-1`)
    	//value should be `a`