@@ -49,6 +49,13 @@ class DynamoDBProvider(BaseProvider):
49
49
>>>
50
50
>>> ddb_provider.get("my-parameter")
51
51
52
+ **Retrieves a parameter value from a DynamoDB table passing options to the SDK call**
53
+
54
+ >>> from aws_lambda_powertools.utilities.parameters import DynamoDBProvider
55
+ >>> ddb_provider = DynamoDBProvider("ParametersTable")
56
+ >>>
57
+ >>> ddb_provider.get("my-parameter", ConsistentRead=True)
58
+
52
59
**Retrieves multiple values from a DynamoDB table**
53
60
54
61
In this case, the provider will use a sort key to retrieve multiple values using a query under
@@ -69,6 +76,12 @@ class DynamoDBProvider(BaseProvider):
69
76
>>>
70
77
>>> ddb_provider.get_multiple("my-parameters", sort_attr="my-sort-attr")
71
78
79
+ **Retrieves multiple values from a DynamoDB table passing options to the SDK calls**
80
+
81
+ >>> from aws_lambda_powertools.utilities.parameters import DynamoDBProvider
82
+ >>> ddb_provider = DynamoDBProvider("ParametersTable")
83
+ >>>
84
+ >>> ddb_provider.get("my-parameter", ConsistentRead=True)
72
85
"""
73
86
74
87
table = None
@@ -90,14 +103,24 @@ def __init__(
90
103
91
104
super ().__init__ ()
92
105
93
- def _get (self , name : str , ** kwargs ) -> str :
106
+ def _get (self , name : str , ** sdk_options ) -> str :
94
107
"""
95
108
Retrieve a parameter value from Amazon DynamoDB
109
+
110
+ Parameters
111
+ ----------
112
+ name: str
113
+ Name of the parameter
114
+ sdk_options: dict
115
+ Dictionary of options that will be passed to the get_item call
96
116
"""
97
117
98
- return self .table .get_item (Key = {self .key_attr : name })["Item" ][self .value_attr ]
118
+ # Explicit arguments will take precedence over keyword arguments
119
+ sdk_options ["Key" ] = {self .key_attr : name }
120
+
121
+ return self .table .get_item (** sdk_options )["Item" ][self .value_attr ]
99
122
100
- def _get_multiple (self , path : str , sort_attr : str = "sk" , ** kwargs ) -> Dict [str , str ]:
123
+ def _get_multiple (self , path : str , sort_attr : str = "sk" , ** sdk_options ) -> Dict [str , str ]:
101
124
"""
102
125
Retrieve multiple parameter values from Amazon DynamoDB
103
126
@@ -107,16 +130,20 @@ def _get_multiple(self, path: str, sort_attr: str = "sk", **kwargs) -> Dict[str,
107
130
Path to retrieve the parameters
108
131
sort_attr: str
109
132
Name of the DynamoDB table sort key (defaults to 'sk')
133
+ sdk_options: dict
134
+ Dictionary of options that will be passed to the query call
110
135
"""
111
136
112
- response = self .table .query (KeyConditionExpression = Key (self .key_attr ).eq (path ))
137
+ # Explicit arguments will take precedence over keyword arguments
138
+ sdk_options ["KeyConditionExpression" ] = Key (self .key_attr ).eq (path )
139
+
140
+ response = self .table .query (** sdk_options )
113
141
items = response .get ("Items" , [])
114
142
115
143
# Keep querying while there are more items matching the partition key
116
144
while "LastEvaluatedKey" in response :
117
- response = self .table .query (
118
- KeyConditionExpression = Key (self .key_attr ).eq (path ), ExclusiveStartKey = response ["LastEvaluatedKey" ],
119
- )
145
+ sdk_options ["ExclusiveStartKey" ] = response ["LastEvaluatedKey" ]
146
+ response = self .table .query (** sdk_options )
120
147
items .extend (response .get ("Items" , []))
121
148
122
149
retval = {}
0 commit comments