Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,25 @@ As a standalone package
result = interpolate_dict(data, store)
assert result[key] == 'my-secret-password'

Using custom configuration parameters

.. code-block:: python

from param_store import EC2ParameterStore
from param_store import interpolate_dict

data = {
'key': 'my-secret-{{ parameter-1 }}'
}

aws_config = {
"region_name": "us-east-1",
"aws_access_key_id": "YOUR_NEW_ACCESS_KEY"
}

store = EC2ParameterStore(aws_config=aws_config)
result = interpolate_dict(data, store)
assert result[key] == 'my-secret-password'

In combination with django-environ

Expand Down
7 changes: 5 additions & 2 deletions src/param_store/stores.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,13 @@ def load_values(self, items):


class EC2ParameterStore(BaseStore):
def __init__(self):
def __init__(self, aws_config=None):
import boto3

self.client = boto3.client("ssm")
if isinstance(aws_config, dict):
self.client = boto3.client("ssm", **aws_config)
else:
self.client = boto3.client("ssm")

def load_values(self, items):
"""Load the parameters from the AWS Parameter Store.
Expand Down
17 changes: 17 additions & 0 deletions tests/test_stores.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,23 @@ def test_ec2_parameter_store_many():
assert result == data


@moto.mock_ssm
def test_ec2_parameter_store_different_parameters():
right_region_name = "eu-west-1"
key_wanted = "key-eu-weast-1"
ssm = boto3.client("ssm", region_name=right_region_name)
ssm.put_parameter(Name=key_wanted, Value="hoi", Type="SecureString")

store = EC2ParameterStore(aws_config={"region_name": "us-east-1"})
result = store.load_values([key_wanted])
assert key_wanted not in result

store = EC2ParameterStore(aws_config={"region_name": right_region_name})
result = store.load_values([key_wanted])
assert key_wanted in result
assert result == {key_wanted: "hoi"}


def test_file_parameter_store(tmpdir):
secret_path = tmpdir.mkdir("secrets")
secret_path.join("key").write("hoi")
Expand Down