Skip to main content

A configuration client for AWS serverless Python systems

Project description

https://img.shields.io/pypi/status/serverless-config.svg https://travis-ci.org/oharaandrew314/serverless-config.svg?branch=master https://img.shields.io/pypi/v/serverless-config.svg https://img.shields.io/pypi/l/serverless-config.svg https://img.shields.io/pypi/pyversions/serverless-config.svg codecov.io

A simple configuration client for AWS serverless Python systems.

Installation

pip install serverless-config

Quickstart

from serverless_config import default_config
config = default_config()

string_prop = config.get_str('string_prop')
int_prop = config.get_int('missing_int_prop', default_value=123)
secret_prop = config.get_str('secret_prop', WithDecryption=True)

The default config will search for a parameter with the following order of precedence: System Environment, AWS SSM Parameter Store. You can learn more about them below.

Supported Config Sources

System Environment

The System environment is a good place to store microservice-specific parameters. They are set on the lambda function itself.

from serverless_config import env_config
config = env_config()
config.get_str('string_prop')

AWS SSM Parameter Store

SSM is perfect for storing parameters that are shared across microservices, and for storing encrypted secrets. It is fully managed, and does not require any configuration to get started.

Note: the IAM role requires the AmazonSSMReadOnlyAccess policy to get properties from SSM.

from serverless_config import ssm_config
config = ssm_config()
config.get_str('string_prop')

A secret can optionally be decrypted in transit. That way, you do not need to worry about configuring your IAM role for access to the KMS Key.

from serverless_config import ssm_config
config = ssm_config()
config.get_str('string_prop', WithDecryption=True)

Composite Configs

The default_config will first search in the system environment. If the parameter is not there, then it will search in AWS SSM.

from serverless_config import default_config
config = default_config()

Custom Configs

You can even implement your own custom configs and composite configs!

from serverless_config import ConfigBase, custom_composite_config, env_config

class DictConfig(ConfigBase):

    def __init__(self, prop_dict):
        self.prop_dict = prop_dict

    def get_str(prop_name, default_value=None):
        if prop_name in self.prop_dict:
            return self.prop_dict[prop_name]
        elif default_value:
            return default_value

        # You must raise a ValueError if the property is not found
        raise ValueError('Property not found: ' + prop_name)

# You can make a standalone custom config
props = dict(foo='bar', toll='troll')
map_config = DictConfig(props)

# And you can make a custom composite config with your new config
custom_config = custom_composite_config(map_config, env_config())

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for serverless-config, version 0.2.1
Filename, size File type Python version Upload date Hashes
Filename, size serverless-config-0.2.1.tar.gz (4.5 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page