diff --git a/README.rst b/README.rst index 1615d76..31cfede 100644 --- a/README.rst +++ b/README.rst @@ -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 diff --git a/src/param_store/stores.py b/src/param_store/stores.py index b9cbabe..e3ee1bc 100644 --- a/src/param_store/stores.py +++ b/src/param_store/stores.py @@ -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. diff --git a/tests/test_stores.py b/tests/test_stores.py index 5bb3268..f8f188c 100644 --- a/tests/test_stores.py +++ b/tests/test_stores.py @@ -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")