Giter Club home page Giter Club logo

envy-store's Introduction

envy store Build Status Coverage Status Software License crates.io Released API docs Master API docs

๐Ÿช deserialize AWS Parameter Store values into typesafe structs

๐Ÿ“ฆ Install

[dependencies]
envy-store = "0."

๐Ÿคธ Usage

Envy store assumes you are using the AWS best practice of storing related parameters under a prefixed hierarchy. This leads to better clarity on what application a set of parameters belong to as well as enables the paths based query API which has performance benefits and is the recommended best practice by AWS.

Envy store also assumes the use of the AWS default credential chain for authenticating requests with AWS. Don't worry, if you've used any AWS tooling in the past, you likely already have this configured. You will also need to ensure these credentials have the ssm:GetParametersByPath IAM permission.

See the demo example for an example application and documentation for more information

๐Ÿ‘ญ Consider this crate a cousin of envy, a crate for deserializing environment variables into typesafe structs.

๐Ÿค” Why AWS Parameter Store

Environment variables are a perfectly good and probably best solution for storing application configuration as they are more or less universally supported across runtimes and languages.

As an application grows additional factors need may come into consideration.

  1. Security. Environment variables alone are a poor transport for secret information as they can easily be leaked in their plain text format. AWS Parameter Store has built-in support for storing values in encrypted format preventing unwanted access from prying eyes.

  2. Management. The strategy for configuring environment variables for your application will likely vary and become less managable over time. The source of truth for their values may require some centralization in order to manage. Systems exist for helping you manage these. AWS Parameter Store is a self managed system as a service removing the need for you to operate one of these systems yourself.

  3. Access control. Related to encryption security, you may also want to limit who can access configuration. Identity access management is built into AWS Parameter Store so you don't have to implement this yourself.

๐Ÿ’ก Note that as AWS Parameter Store is a hosted service, it comes with limits to ensure quality of service for its users. You can review a list of these limits here

Doug Tangren (softprops) 2018

envy-store's People

Contributors

softprops avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

envy-store's Issues

Dependabot can't resolve your Rust dependency files

Dependabot can't resolve your Rust dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:

Updating crates.io index
error: failed to select a version for the requirement `crypto-mac = "^0.5"`
candidate versions found which didn't match: 0.11.1, 0.11.0, 0.10.1, ...
location searched: crates.io index
required by package `hmac v0.5.0`
    ... which is depended on by `rusoto_core v0.36.0`
    ... which is depended on by `rusoto_ssm v0.36.0`
    ... which is depended on by `envy-store v0.1.0 (/home/dependabot/dependabot-updater/dependabot_tmp_dir)`

If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

View the update logs.

consider reloadable interface

๐Ÿ’ก Feature description

Parameter store could potentially by useful for configuration that changes after an application process starts. It's possible to wrap envy-store in something that caches and requires but its also possible that could be provided. Let's see what the tradeoffs in complexity would be.

๐Ÿ’ป Basic example

a sketch

envy_store::with_cache(Options { ttl: Duration::from_secs(60) }).from_path("/demo")

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.