aws-powertools/powertools-lambda-python

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.