go_aws_config

package module
v0.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 6, 2023 License: Apache-2.0 Imports: 10 Imported by: 0

README

GO AWS Config

GoDoc

go-aws-config is a very simple wrapper around the AWS SDK for Go. It provides a simple way to get configuration values from AWS App Config.

Jump to
Installation
go get github.com/stremovskyy/go-aws-config
Usage
With environment variables
package main

import (
	"fmt"
	"github.com/stremovskyy/go-aws-config"
)

type Configuration struct {
	// DB configuration
	DBHost string `yaml:"db_host" json:"db_host"`
	DBPort string `yaml:"db_port" json:"db_port"`
}

func main() {
	// Create new options for client
	opts := &go_aws_config.Options{
		Region:           "eu-central-1",
		ApplicationID:    "test",
		EnvironmentID:    "TestEnvironment",
		Profile:          "test-config",
		PollingInterval:  60,
		CredentialsInEnv: true,
	}

	// Create new client
	configurator := go_aws_config.NewClient(opts)

	// Prepare client
	err := configurator.Prepare()
	if err != nil {
		fmt.Printf("failed to prepare client, %v", err)
		return
	}

	// create a struct to load configuration into
	dbConfiguration := &Configuration{}

	// load configuration into struct
	err = configurator.LoadIntoYaml(dbConfiguration)
	if err != nil {
		fmt.Printf("failed to load configuration into struct, %v", err)
		return
	}

	// PROFIT!
	fmt.Printf("db host: %s", dbConfiguration.DBHost)
}
With credentials in code
package main

import (
    "fmt"
    "github.com/stremovskyy/go-aws-config"
)

type Configuration struct {
    // DB configuration
    DBHost string `yaml:"db_host" json:"db_host"`
    DBPort string `yaml:"db_port" json:"db_port"`
}

func main() {
	awsKey := "AKIAIOSFODNN7EXAMPLE"
	awsSecret := "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
	
    // Create new options for client
    opts := &go_aws_config.Options{
        Region:           "eu-central-1",
        ApplicationID:    "test",
        EnvironmentID:    "TestEnvironment",
        Profile:          "test-config",
        PollingInterval:  60,
        CredentialsInEnv: false,
        AccessKeyID:      awsKey,
        SecretAccessKey:  awsSecret,
    }

    // Create new client
    configurator := go_aws_config.NewClient(opts)

    // Prepare client
    err := configurator.Prepare()
    if err != nil {
        fmt.Printf("failed to prepare client, %v", err)
        return
    }

    // create a struct to load configuration into
    dbConfiguration := &Configuration{}

    // load configuration into struct
    err = configurator.LoadIntoYaml(dbConfiguration)
    if err != nil {
        fmt.Printf("failed to load configuration into struct, %v", err)
        return
    }

    // PROFIT!
    fmt.Printf("db host: %s", dbConfiguration.DBHost)
}
License

This library is licensed under the Apache 2.0 License.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. Please make sure to update tests as appropriate.

Authors
Acknowledgments
TODO
  • Add support for more configuration formats
  • Add support for subscribing to configuration changes

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AWSConfigurator

type AWSConfigurator interface {
	Prepare(ctx context.Context) error
	LoadConfigBytes() ([]byte, error)
	LoadIntoYaml(dest interface{}) error
	LoadIntoJson(dest interface{}) error
	Reader() (io.Reader, error)
}

func NewClient

func NewClient(options *Options) (AWSConfigurator, error)

NewClient creates a new AWSConfigurator

type Options

type Options struct {
	// AWS region
	Region string
	// AWS AppConfig application ID
	ApplicationID string
	// AWS AppConfig environment ID
	EnvironmentID string
	// AWS AppConfig configuration profile
	Profile string
	// AWS AppConfig poling interval in seconds
	PollingInterval int64
	// AWS AppConfig credentials in environment variables
	CredentialsInEnv bool
	// AWS Access Key ID
	AccessKeyID string
	// AWS Secret Access Key
	SecretAccessKey string
	// AWS Token
	Token string
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL