-
Notifications
You must be signed in to change notification settings - Fork 450
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Expected Behaviour
Model validates without error.
Current Behaviour
[ERROR] ValidationError: 1 validation error for APIGatewayProxyEventV2Model
requestContext.http.sourceIp
value is not a valid IPv4 or IPv6 network [type=ip_any_network, input_value='10.1.15.242:39870', input_type=str]
Traceback (most recent call last):
File "/var/task/main.py", line 63, in lambda_main
return apigateway_main(event, context)
File "/opt/python/aws_lambda_powertools/middleware_factory/factory.py", line 140, in wrapper
response = middleware()
File "/opt/python/aws_lambda_powertools/utilities/parser/parser.py", line 116, in event_parser
parsed_event = parse(event=event, model=model)
File "/opt/python/aws_lambda_powertools/utilities/parser/parser.py", line 200, in parse
return _parse_and_validate_event(data=event, adapter=adapter)
File "/opt/python/aws_lambda_powertools/utilities/parser/functions.py", line 84, in _parse_and_validate_event
return adapter.validate_python(data)
File "/opt/python/pydantic/type_adapter.py", line 421, in validate_python
return self.validator.validate_python(
To point out: sourceIp
is expecting an IP or CIDR, not an IP-with-port.
Code snippet
from aws_lambda_powertools.utilities.parser import event_parser
from aws_lambda_powertools.utilities.parser.models import APIGatewayProxyEventV2Model
from aws_lambda_powertools.utilities.typing import LambdaContext
@event_parser
def lambda_main(event: APIGatewayProxyEventV2Model, context: LambdaContext):
return {
'statusCode': 200,
'headers': {
'Content-Type': "application/json",
},
'body': "OK",
'isBase64Encoded': False,
}
Possible Solution
No response
Steps to Reproduce
-
Add layer
arn:aws:lambda:us-east-1:017000801446:layer:AWSLambdaPowertoolsPythonV3-python312-x86_64:22
and invoke this function through API Gateway. -
Get a custom domain onto Cloudflare and construct a routing chain like this:
graph LR; A(["client"]); B(Cloudflare); C(CloudFront); D(API Gateway); E(Lambda); A --> B; B -- "mTLS" --> C; C --> D; D --> E;
where "mTLS" represents Cloudflare's "Authenticated Origin Pull" option. Cloudflare's Origin CA needs to be uploaded to CloudFront.
Powertools for AWS Lambda (Python) version
latest
AWS Lambda function runtime
3.12
Packaging format used
Lambda Layers
Debugging logs
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working
Type
Projects
Status
Backlog