Open
Description
Expected Behaviour
From the latest docs, given:
@app.get("/todos")
@tracer.capture_method
def get_todos(completed: Annotated[Optional[str], Query(min_length=4)] = None) -> Dict:
"""
"""
return {
"completed": completed
}
Calling /todos?completed=value1
should return
{
"completed": "value1"
}
Current Behaviour
Calling /todos?completed=value1
returns
{
"completed": null
}
Code snippet
from typing import Annotated, Dict, List, Optional
from aws_lambda_powertools import Logger, Tracer
from aws_lambda_powertools.event_handler import LambdaFunctionUrlResolver
from aws_lambda_powertools.event_handler.openapi.params import Path, Query
from aws_lambda_powertools.logging import correlation_paths
from aws_lambda_powertools.utilities.typing import LambdaContext
tracer = Tracer()
logger = Logger()
app = LambdaFunctionUrlResolver()
@app.get("/todos")
@tracer.capture_method
def get_todos(completed: Annotated[Optional[str], Query(min_length=4)] = None) -> Dict:
"""
"""
return {
"completed": completed,
}
@logger.inject_lambda_context(correlation_id_path=correlation_paths.LAMBDA_FUNCTION_URL, log_event=True)
@tracer.capture_lambda_handler(capture_response=False)
def lambda_handler(event: dict, context: LambdaContext) -> dict:
"""
Lambda entrypoint for Azure Function URL
"""
return app.resolve(event, context)
Possible Solution
No response
Steps to Reproduce
Please see full reproduction example with complete instruction here: https://github.com/jerevnp/sandbox/tree/aws-lambda-powertools-for-python-lambda-queryparams
Powertools for AWS Lambda (Python) version
latest
AWS Lambda function runtime
3.13
Packaging format used
PyPi
Debugging logs
27 May 2025 10:13:20,178 [INFO] (rapid) exec '/var/runtime/bootstrap' (cwd=/var/task, handler=)
27 May 2025 10:13:27,331 [INFO] (rapid) INIT START(type: on-demand, phase: init)
27 May 2025 10:13:27,331 [INFO] (rapid) The extension's directory "/opt/extensions" does not exist, assuming no extensions to be loaded.
START RequestId: 740881ee-7d4c-43c0-896d-2d2b2a7a62ec Version: $LATEST
27 May 2025 10:13:27,331 [INFO] (rapid) Starting runtime without AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN , Expected?: false
/var/task/aws_lambda_powertools/package_logger.py:20: UserWarning: POWERTOOLS_DEBUG environment variable is enabled. Setting logging level to DEBUG.
if powertools_debug_is_set():
2025-05-27 10:13:27,458 aws_lambda_powertools.tracing.tracer [DEBUG] Verifying whether Tracing has been disabled
[DEBUG] 2025-05-27T10:13:27.458Z Verifying whether Tracing has been disabled
2025-05-27 10:13:27,514 aws_lambda_powertools.logging.logger [DEBUG] Adding filter in root logger to suppress child logger records to bubble up
[DEBUG] 2025-05-27T10:13:27.514Z Adding filter in root logger to suppress child logger records to bubble up
2025-05-27 10:13:27,514 aws_lambda_powertools.logging.logger [DEBUG] Marking logger service_undefined as preconfigured
[DEBUG] 2025-05-27T10:13:27.514Z Marking logger service_undefined as preconfigured
2025-05-27 10:13:27,514 aws_lambda_powertools.event_handler.api_gateway [DEBUG] Adding route using rule /todos and methods: GET
[DEBUG] 2025-05-27T10:13:27.514Z Adding route using rule /todos and methods: GET
2025-05-27 10:13:27,514 aws_lambda_powertools.logging.logger [DEBUG] Decorator called with parameters
[DEBUG] 2025-05-27T10:13:27.514Z Decorator called with parameters
2025-05-27 10:13:27,514 aws_lambda_powertools.tracing.tracer [DEBUG] Decorator called with parameters
[DEBUG] 2025-05-27T10:13:27.514Z Decorator called with parameters
27 May 2025 10:13:27,515 [INFO] (rapid) INIT RTDONE(status: success)
27 May 2025 10:13:27,515 [INFO] (rapid) INIT REPORT(durationMs: 184.457000)
27 May 2025 10:13:27,515 [INFO] (rapid) INVOKE START(requestId: 9c3619b2-af72-4130-894f-e78937983e53)
2025-05-27 10:13:27,515 aws_lambda_powertools.utilities.jmespath_utils [DEBUG] Envelope detected: requestContext.requestId. JMESPath options: {'custom_functions': <aws_lambda_powertools.utilities.jmespath_utils.PowertoolsFunctions object at 0xfc5cf111de80>}
[DEBUG] 2025-05-27T10:13:27.515Z 9c3619b2-af72-4130-894f-e78937983e53 Envelope detected: requestContext.requestId. JMESPath options: {'custom_functions': <aws_lambda_powertools.utilities.jmespath_utils.PowertoolsFunctions object at 0xfc5cf111de80>}
2025-05-27 10:13:27,516 aws_lambda_powertools.logging.logger [DEBUG] Event received
[DEBUG] 2025-05-27T10:13:27.516Z 9c3619b2-af72-4130-894f-e78937983e53 Event received
{"level":"INFO","location":"decorate:535","message":{"version":"2.0","routeKey":"$default","rawPath":"/todos","rawQueryString":"completed=value1","cookies":["cookie1","cookie2"],"headers":{"request-id":"|f46f2ae8a26fe9c2d549a6e33e6e434b.4ee2108cfa78ff4b.","accept":"*/*","accept-encoding":"gzip,deflate,br","user-agent":"PostmanRuntime/7.44.0"},"queryStringParameters":{"completed":"value1"},"requestContext":{"accountId":"123456789012","apiId":"<urlid>","authentication":null,"authorizer":{"iam":{"accessKey":"AKIA...","accountId":"111122223333","callerId":"AIDA...","cognitoIdentity":null,"principalOrgId":null,"userArn":"arn:aws:iam::111122223333:user/example-user","userId":"AIDA..."}},"domainName":"<url-id>.lambda-url.us-west-2.on.aws","domainPrefix":"<url-id>","http":{"method":"GET","path":"/todos","protocol":"HTTP/1.1","sourceIp":"123.123.123.123","userAgent":"agent"},"requestId":"id","routeKey":"$default","stage":"$default","time":"12/Mar/2020:19:03:58 +0000","timeEpoch":1583348638390},"body":"Hello from client!","pathParameters":null,"isBase64Encoded":false,"stageVariables":null},"timestamp":"2025-05-27 10:13:27,516+0000","service":"service_undefined","cold_start":true,"function_name":"test_function","function_memory_size":"3008","function_arn":"arn:aws:lambda:us-east-1:012345678912:function:test_function","function_request_id":"9c3619b2-af72-4130-894f-e78937983e53","correlation_id":"id"}
[WARNING] 2025-05-27T10:13:27.516Z 9c3619b2-af72-4130-894f-e78937983e53 Subsegment ## lambda_handler discarded due to Lambda worker still initializing
2025-05-27 10:13:27,516 aws_lambda_powertools.tracing.tracer [DEBUG] Calling lambda handler
[DEBUG] 2025-05-27T10:13:27.516Z 9c3619b2-af72-4130-894f-e78937983e53 Calling lambda handler
2025-05-27 10:13:27,516 aws_lambda_powertools.event_handler.api_gateway [DEBUG] Converting event to Lambda Function URL contract
[DEBUG] 2025-05-27T10:13:27.516Z 9c3619b2-af72-4130-894f-e78937983e53 Converting event to Lambda Function URL contract
2025-05-27 10:13:27,516 aws_lambda_powertools.event_handler.api_gateway [DEBUG] Found a registered route. Calling function
[DEBUG] 2025-05-27T10:13:27.516Z 9c3619b2-af72-4130-894f-e78937983e53 Found a registered route. Calling function
2025-05-27 10:13:27,516 aws_lambda_powertools.event_handler.api_gateway [DEBUG] Building middleware stack: []
[DEBUG] 2025-05-27T10:13:27.516Z 9c3619b2-af72-4130-894f-e78937983e53 Building middleware stack: []
2025-05-27 10:13:27,516 aws_lambda_powertools.event_handler.api_gateway [DEBUG] MiddlewareFrame: [_registered_api_adapter] next call chain is _registered_api_adapter -> get_todos
[DEBUG] 2025-05-27T10:13:27.516Z 9c3619b2-af72-4130-894f-e78937983e53 MiddlewareFrame: [_registered_api_adapter] next call chain is _registered_api_adapter -> get_todos
2025-05-27 10:13:27,516 aws_lambda_powertools.event_handler.api_gateway [DEBUG] Calling API Route Handler: {}
[DEBUG] 2025-05-27T10:13:27.516Z 9c3619b2-af72-4130-894f-e78937983e53 Calling API Route Handler: {}
[WARNING] 2025-05-27T10:13:27.516Z 9c3619b2-af72-4130-894f-e78937983e53 Subsegment ## app.reproduce.get_todos discarded due to Lambda worker still initializing
2025-05-27 10:13:27,516 aws_lambda_powertools.tracing.tracer [DEBUG] Calling method: app.reproduce.get_todos
[DEBUG] 2025-05-27T10:13:27.516Z 9c3619b2-af72-4130-894f-e78937983e53 Calling method: app.reproduce.get_todos
2025-05-27 10:13:27,516 aws_lambda_powertools.event_handler.api_gateway [DEBUG] Simple response detected, serializing return before constructing final response
[DEBUG] 2025-05-27T10:13:27.516Z 9c3619b2-af72-4130-894f-e78937983e53 Simple response detected, serializing return before constructing final response
2025-05-27 10:13:27,516 aws_lambda_powertools.tracing.tracer [DEBUG] Received lambda handler response successfully
[DEBUG] 2025-05-27T10:13:27.516Z 9c3619b2-af72-4130-894f-e78937983e53 Received lambda handler response successfully
2025-05-27 10:13:27,516 aws_lambda_powertools.tracing.tracer [DEBUG] Annotating cold start
[DEBUG] 2025-05-27T10:13:27.516Z 9c3619b2-af72-4130-894f-e78937983e53 Annotating cold start
27 May 2025 10:13:27,517 [INFO] (rapid) INVOKE RTDONE(status: success, produced bytes: 0, duration: 2.150000ms)
END RequestId: 9c3619b2-af72-4130-894f-e78937983e53
REPORT RequestId: 9c3619b2-af72-4130-894f-e78937983e53 Init Duration: 0.03 ms Duration: 186.76 ms Billed Duration: 187 ms Memory Size: 3008 MB Max Memory Used: 3008 MB
Metadata
Metadata
Assignees
Type
Projects
Status
Backlog