dherault / dherault/serverless-offline
Inconsistency in `authorizer` Model When Using `serverless-offline` with AWS PowerTools for Lambda
- Dominant language
- JavaScript
- Stars
- 5.3k
- Forks
- 811
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 3
Description
## Bug Report
**Current Behavior**
In my project, I am utilizing [AWS PowerTools for Lambda](https://docs.powertools.aws.dev/lambda/python/latest/) 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**
- `serverless` version: 3.36.0
- `serverless-offline` version: 13.3.0
- `node.js` version: 21.1.0
- `OS`: macOS 13.2.1
- `python` version: 3.11
**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'}
Contributor guide
Research direction
Start at the code path exercised by `sls offline` that builds the APIGatewayProxyEventV2 `requestContext.authorizer`; compare its output with the AWS PowerTools model shown in the report. Confirm the intended no-custom-authorizer shape and add a regression test. Done means offline events align with the AWS typing when no custom authorizer is configured.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws, javascript, node.js, python
- Domain
- api, devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100