dherault / serverless-offline

Emulate AWS λ and API Gateway locally when developing your Serverless project
MIT License
5.19k stars 795 forks source link

Inconsistency in `authorizer` Model When Using `serverless-offline` with AWS PowerTools for Lambda #1746

Open DamianCzajkowski opened 10 months ago

DamianCzajkowski commented 10 months ago

Bug Report

Current Behavior

In my project, I am utilizing AWS PowerTools for Lambda to validate APIGatewayProxyEventV2. In this model, there's an assumption that the authorizer in RequestContext is optional, and likewise, jwt within authorizer is optional. However, when I invoke Lambda using serverless-offline through sls offline, I receive a model like this: 'authorizer': {'lambda': {}, 'jwt': {}}, which contradicts the APIGatewayProxyEventV2 model from aws-powertools.

Expected behavior/code

Alignment with AWS typing.

Environment

Possible Solution

ntroduce an option to customize what is included in authorizer, or if no custom authorizer is provided, simply send 'authorizer': None.

Additional context/Screenshots

'requestContext': {'accountId': 'offlineContext_accountId', 'apiId': 'offlineContext_apiId', 'authorizer': {'lambda': {}, 'jwt': {}}, 'domainName': 'offlineContext_domainName', 'domainPrefix': 'offlineContext_domainPrefix', 'http': {'method': 'GET', 'path': '/saleor/app', 'protocol': 'HTTP/1.1', 'sourceIp': '192.168.65.1', 'userAgent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'}

IcArtur commented 9 months ago

OT: How are you running serverless-oflline with python3.11? Sorry, hope you can help me!

DamianCzajkowski commented 8 months ago

Sorry for the late response, but you just need to specify python version in serverless.yml, and just try to run serverless-offline with your lambda. Like this: serverless.yml provider: runtime: python3.11

and then: serverless offline in the shell