- 
                Notifications
    You must be signed in to change notification settings 
- Fork 456
Description
I needed access to key operationName from requestContext from APIGatewayProxyEvent. The problem is that APIGatewayEventRequestContext doesn't have this property, forcing me to use either the get accessor or the raw_event property fallback. And the real problem is that when you use any of these to access the original data, but from the APIGatewayEventRequestContext, it does in fact give you the root APIGatewayProxyEvent event data. So I had lots of confusing behavior and lost time with debugging.
Eg.
def handler(event, context):
    print(event['requestContext']['operationName'])  # prints "some-openapi-operation-name"
    
    apigw_event = APIGatewayProxyEvent(event)
    print(apigw_event.request_context.get('operationName'))  # prints "None" from returned None from getter
    print(apigw_event.request_context.raw_event['operationName'])  # raises KeyErrorExpected Behavior
I expected both apigw_event.request_context.get('operationName') and print(apigw_event.request_context.raw_event['operationName']) to return "some-openapi-operation-name".
Current Behavior
Both give errors because they access root self._data: DictWrapper instead of self._data['requestContext'].
Environment
- Powertools version used:
- Packaging format (Layers, PyPi):
- AWS Lambda function runtime:
- Debugging logs
$ python3 --version
Python 3.8.6
$ pip list
Package                Version
---------------------- ---------------
apipkg                 1.5
appdirs                1.4.4
arrow                  0.17.0
astroid                2.4.2
atomicwrites           1.4.0
attrs                  20.3.0
autopep8               1.5.4
aws-lambda-builders    1.3.0
aws-lambda-powertools  1.13.0
aws-sam-cli            1.21.1
aws-sam-translator     1.35.0
aws-xray-sdk           2.7.0
Babel                  2.8.0
beautifulsoup4         4.9.1
binaryornot            0.4.4
black                  20.8b1
blinker                1.4
boto3                  1.14.63
botocore               1.17.63
breezy                 3.1.0
Brlapi                 0.7.0
certifi                2020.4.5.1
chardet                3.0.4
chevron                0.13.1
chrome-gnome-shell     0.0.0
click                  7.1.2
colorama               0.4.3
command-not-found      0.3
configobj              5.0.6
cookiecutter           1.7.2
coverage               5.3
cryptography           3.0
cupshelpers            1.0
dateparser             0.7.6
dbus-python            1.2.16
decorator              4.4.2
defer                  1.0.6
Deprecated             1.2.10
distro                 1.5.0
distro-info            0.23ubuntu1
dnspython              1.16.0
docker                 4.2.2
docopt                 0.6.2
docutils               0.15.2
dulwich                0.19.15
evdev                  1.3.0
execnet                1.7.1
fastimport             0.9.8
fastjsonschema         2.15.0
fett                   0.3.2
Flask                  1.1.2
future                 0.18.2
gpg                    1.14.0-unknown
gyp                    0.1
hidpidaemon            18.4.6
html5lib               1.1
httplib2               0.18.1
idna                   2.10
importlib-metadata     1.6.0
iniconfig              1.1.1
isort                  5.7.0
itsdangerous           1.1.0
jeepney                0.4.3
Jinja2                 2.11.2
jinja2-time            0.2.0
jmespath               0.10.0
jsonschema             3.2.0
kernelstub             3.1.4
keyring                21.3.0
language-selector      0.1
launchpadlib           1.10.13
lazr.restfulclient     0.14.2
lazr.uri               1.0.5
lazy-object-proxy      1.4.3
libvirt-python         6.1.0
louis                  3.14.0
lxml                   4.5.2
macaroonbakery         1.3.1
MarkupSafe             1.1.1
mccabe                 0.6.1
mercurial              5.5.1
more-itertools         4.2.0
mypy-extensions        0.4.3
netifaces              0.10.4
networkx               2.5
numpy                  1.18.4
oauthlib               3.1.0
olefile                0.46
packaging              20.4
parameterized          0.7.4
pathspec               0.8.1
pathtools              0.1.2
patiencediff           0.1.0
pep8                   1.7.1
Pillow                 7.2.0
pip                    21.0.1
pluggy                 0.13.0
pop-transition         1.1.2
poyo                   0.5.0
protobuf               3.12.3
py                     1.9.0
pycairo                1.16.2
pycodestyle            2.6.0
pycups                 2.0.1
pydbus                 0.6.0
PyGithub               1.43.7
PyGObject              3.38.0
PyJWT                  1.7.1
pylint                 2.6.0
pymacaroons            0.13.0
pymongo                3.11.2
PyNaCl                 1.4.0
pynamodb               5.0.3
pyparsing              2.4.7
pyRFC3339              1.1
pyrsistent             0.17.3
pytest                 6.1.1
pytest-cov             2.10.1
pytest-forked          1.3.0
pytest-rerunfailures   9.1.1
pytest-timeout         1.4.2
pytest-xdist           2.1.0
python-apt             2.1.3+ubuntu1.3
python-dateutil        2.8.0
python-debian          0.1.37
python-gitlab          2.4.0
python-jsonrpc-server  0.3.4
python-magic           0.4.16
python-slugify         4.0.1
python-xlib            0.27
pytz                   2020.1
pyxdg                  0.26
PyYAML                 5.3.1
regex                  2020.11.13
repolib                1.5.2
repoman                1.4.0
requests               2.23.0
requests-unixsocket    0.2.0
rstcheck               3.3.1
s3transfer             0.3.4
scour                  0.37
SecretStorage          3.1.2
serverlessrepo         0.1.10
sessioninstaller       0.0.0
setproctitle           1.1.10
setuptools             49.3.1
simplejson             3.17.0
six                    1.15.0
snooty-lextudio        1.8.6.dev0
soupsieve              2.0.1
SQLAlchemy             1.3.19
systemd-python         234
text-unidecode         1.3
toml                   0.10.1
tomlkit                0.7.0
typed-ast              1.4.2
typing-extensions      3.7.4.3
tzlocal                2.1
ubuntu-advantage-tools 24.4
ubuntu-drivers-common  0.0.0
ufw                    0.36
ujson                  1.35
urllib3                1.25.9
wadllib                1.3.4
watchdog               0.10.3
wcwidth                0.1.9
webencodings           0.5.1
websocket-client       0.57.0
Werkzeug               1.0.1
wheel                  0.34.2
wrapt                  1.11.2
xkit                   0.0.0
zipp                   1.0.0Metadata
Metadata
Assignees
Labels
Type
Projects
Status