SSM Parameter Store
Description
This is a simple Python wrapper for getting values from AWS Systems Manager Parameter Store.
The module supports getting a single parameter, multiple parameters or all parameters matching a particular path.
All parameters are returned as a Python dict.
Installation
Install with pip:
pip install ssm-parameter-store
Usage
Import the module and create a new instance of EC2ParameterStore.
from ssm_parameter_store import EC2ParameterStore
store = EC2ParameterStore()
AWS Credentials
ssm-parameter-store uses boto3 under the hood and therefore inherits
the same mechanism for looking up AWS credentials. See configuring
credentials
in the Boto 3 documentation for more information.
EC2ParameterStore accepts all boto3 client parameters as keyword arguments.
For example:
from ssm_parameter_store import EC2ParameterStore
store = EC2ParameterStore(
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,
aws_session_token=SESSION_TOKEN, # optional
region_name='us-west-2'
)
Examples
Given the following parameters:
# set default AWS region
AWS_DEFAULT_REGION=us-west-2
# add parameters
aws ssm put-parameter --name "param1" --value "value1" --type SecureString
aws ssm put-parameter --name "param2" --value "value2" --type SecureString
# add parameters organised by hierarchy
aws ssm put-parameter --name "/dev/app/secret" --value "dev_secret" --type SecureString
aws ssm put-parameter --name "/dev/db/postgres_username" --value "dev_username" --type SecureString
aws ssm put-parameter --name "/dev/db/postgres_password" --value "dev_password" --type SecureString
aws ssm put-parameter --name "/prod/app/secret" --value "prod_secret" --type SecureString
aws ssm put-parameter --name "/prod/db/postgres_username" --value "prod_username" --type SecureString
aws ssm put-parameter --name "/prod/db/postgres_password" --value "prod_password" --type SecureString
Get a single parameter
parameter = store.get_parameter('param1', decrypt=True)
assert parameter == {
'param1': 'value1'
}
Get multiple parameters
parameters = store.get_parameters(['param1', 'param2'])
assert parameters == {
'param1': 'value1',
'param2': 'value2',
}
Get parameters by path
parameters = store.get_parameters_by_path('/dev/', recursive=True)
assert parameters == {
'secret': 'dev_secret',
'postgres_username': 'dev_username',
'postgres_password': 'dev_password',
}
By default get_parameters_by_path strips the path from each parameter name. To return a parameter's full name, set strip_path to False.
parameters = store.get_parameters_by_path('/dev/', strip_path=False, recursive=True)
assert parameters == {
'/dev/app/secret': 'dev_secret',
'/dev/db/postgres_username': 'dev_username',
'/dev/db/postgres_password': 'dev_password'
}
Get parameters with original hierarchy
You can also get parameters by path, but in a nested structure that models the path hierarchy.
parameters = store.get_parameters_with_hierarchy('/dev/')
assert parameters == {
'app': {
'secret': 'dev_secret',
},
'db': {
'postgres_username': 'dev_username',
'postgres_password': 'dev_password',
},
}
By default get_parameters_with_hierarchy strips the leading path component. To return the selected parameters
with the full hierarchy, set strip_path to False.
parameters = store.get_parameters_with_hierarchy('/dev/', strip_path=False)
assert parameters == {
'dev': {
'app': {
'secret': 'dev_secret',
},
'db': {
'postgres_username': 'dev_username',
'postgres_password': 'dev_password',
},
},
}
Populating Environment Variables
The module includes a static method on EC2ParameterStore to help populate environment variables. This can be helpful when integrating with a library like django-environ.
Example
Given the following parameters:
aws ssm put-parameter --name "/prod/django/SECRET_KEY" --value "-$y_^@69bm69+z!fawbdf=h_10+zjzfwr8_c=$$&j@-%p$%ct^" --type SecureString
aws ssm put-parameter --name "/prod/django/DATABASE_URL" --value "psql://user:pass@db-prod.xyz123.us-west-2.rds.amazonaws.com:5432/db" --type SecureString
aws ssm put-parameter --name "/prod/django/REDIS_URL" --value "redis://redis-prod.edc1ba.0001.usw2.cache.amazonaws.com:6379" --type SecureString
import environ
from ssm_parameter_store import EC2ParameterStore
env = environ.Env(
DEBUG=(bool, False)
)
# Get parameters and populate os.environ (region not required if AWS_DEFAULT_REGION environment variable set)
parameter_store = EC2ParameterStore(region_name='us-west-2')
django_parameters = parameter_store.get_parameters_by_path('/prod/django/', strip_path=True)
EC2ParameterStore.set_env(django_parameters)
# False if not in os.environ
DEBUG = env('DEBUG')
# Raises django's ImproperlyConfigured exception if SECRET_KEY not in os.environ
SECRET_KEY = env('SECRET_KEY')
DATABASES = {
# read os.environ['DATABASE_URL'] and raises ImproperlyConfigured exception if not found
'default': env.db(),
}
CACHES = {
'default': env.cache('REDIS_URL'),
}
Related Projects
- param-store – Python module to store secrets in secret stores
- ssm-cache – AWS System Manager Parameter Store caching client for Python
Metadata
Release files for ssm-parameter-store 26.8.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ssm_parameter_store-26.8.4.tar.gz | 4.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ssm_parameter_store-26.8.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 9.8 kB
Release files / ssm_parameter_store-26.8.4.tar.gz
| Download URL | ssm_parameter_store-26.8.4.tar.gz |
|---|---|
| Size | 4.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6e17970c60b1cd80d50de9574e0d5ee1e00e88b92ab8a6d1aa5b1e7ad29e8279
|
|
BLAKE2b-256 checksum How to use checksums |
34e2ddc27b66dec5845bb108f2b60c86c6b64cc47391daaf7856b190523f6d36
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.
Transparency logRelease files / ssm_parameter_store-26.8.4-py3-none-any.whl
| Download URL | ssm_parameter_store-26.8.4-py3-none-any.whl |
|---|---|
| Size | 5.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
29a25d100bb54e94f040b31013abc51aa3a0c81ed197f18add7a79e98a3b64e1
|
|
BLAKE2b-256 checksum How to use checksums |
5e2cdfd572c8d7669f3996547fad82f462eb2827c3213bc8028899288a5ef6bb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.
Transparency log