Bug: get_parameters_by_name method should work with transform
Closed this issue · 2 comments
Expected Behaviour
When using get_parameters_by_name method, customers can set different configurations per parameters fetched and it should work.
Current Behaviour
get_parameters_by_name fails when used with transform
Example:
parameters = get_parameters_by_name(
{"/dev/param1": {}, "/dev/param2": {}}, transform="json",
)Fails with:
aws_lambda_powertools.utilities.parameters.exceptions.TransformParameterError: Unable to transform value using '"the value of /dev/param1"' transform: 'NoneType' object is not callable
### Code snippet
```python
parameters = get_parameters_by_name(
{"/dev/param1": {}, "/dev/param2": {}}, transform="json",
)
Possible Solution
No response
Steps to Reproduce
Use the code snippet to reproduce.
Powertools for AWS Lambda (Python) version
latest
AWS Lambda function runtime
3.13
Packaging format used
PyPi, Lambda Layers
Debugging logs
Oi @leandrodamascena. I'd say the issue is "Bug: get_parameters_by_name method should work with transform".
Current Behaviour
get_parameters_by_name fails when used with transform
Example:
parameters = get_parameters_by_name(
{"/dev/param1": {}, "/dev/param2": {}}, transform="json"
)or
parameters = get_parameters_by_name(
{"/dev/param1": {"transform": "json"}, "/dev/param2": {"transform": "json"}}
)Fails with:
aws_lambda_powertools.utilities.parameters.exceptions.TransformParameterError: Unable to transform value using '"value of /dev/param2"' transform: 'NoneType' object is not callable
The issue is that
Possible Solution
The issue is that _transform_and_cache_get_parameters_response calls transform_value(name, value, transform, raise_on_error), but transform_value expects value, transform, raise_on_transform_error as arguments, so name ends up being the value, value ends up being the transform (that's why the exception above), and so on...
Fix is in PR #7083
Powertools for AWS Lambda (Python) version
3.18.0
Warning
This issue is now closed. Please be mindful that future comments are hard for our team to see.
If you need more assistance, please either reopen the issue, or open a new issue referencing this one.
If you wish to keep having a conversation with other community members under this issue feel free to do so.