dherault / dherault/serverless-offline

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

Open
#1,746 2 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.