Skip to content

feat(trigger): data class and helper functions for lambda trigger events #159

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 30 commits into from
Sep 18, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
a3e3019
feat(trigger): class wrapper for events
michaelbrewer Sep 7, 2020
2c50acb
build: fix build for python 3.6
michaelbrewer Sep 7, 2020
bdf4385
fix(linters): make the python linters happy
michaelbrewer Sep 7, 2020
112635d
tests: add missing test cases
michaelbrewer Sep 7, 2020
d9253f5
docs: Include some docstrings
michaelbrewer Sep 7, 2020
057c947
feat(trigger): initial cognito triggers
michaelbrewer Sep 8, 2020
84b63a3
feat(trigger): add event_bridge_event
michaelbrewer Sep 8, 2020
c1d516b
feat(trigger): use consistent getter name
michaelbrewer Sep 8, 2020
2aea86c
refactor: less copies passed around
michaelbrewer Sep 8, 2020
17906ab
feat(trigger): add UserMigrationTriggerEvent
michaelbrewer Sep 8, 2020
1c69762
feat(trigger): cognito custom message and pre-auth
michaelbrewer Sep 9, 2020
b9cdd66
feat(trigger): cognito pre token and post auth
michaelbrewer Sep 9, 2020
87277ba
tests(trigger): some extra checks
michaelbrewer Sep 9, 2020
92a3ca7
chore(trigger): clean up and docs
michaelbrewer Sep 9, 2020
f391461
chore: consistent naming
michaelbrewer Sep 10, 2020
b396e8c
feat(trigger): Add api gateway proxy events
michaelbrewer Sep 10, 2020
553c48a
chore: Add more docs
michaelbrewer Sep 10, 2020
7e6a3e5
fix(trigger): better type hinting
michaelbrewer Sep 12, 2020
7a7e862
feat(trigger): Add conveince methods
michaelbrewer Sep 12, 2020
379b11f
feat(trigger): Create DictWrapper
michaelbrewer Sep 13, 2020
cc180d3
feat(trigger): API gateway helper methods
michaelbrewer Sep 13, 2020
3811356
feat(trigger): Kinesis stream event
michaelbrewer Sep 13, 2020
3c41f36
feat(trigger): Application load balancer event
michaelbrewer Sep 14, 2020
35358ed
refactor(trigger): Split decompress and parse
michaelbrewer Sep 14, 2020
a746ddc
feat(trigger): Some attribte caching
michaelbrewer Sep 14, 2020
7b4ec44
fix(trigger): Init with __init__
michaelbrewer Sep 14, 2020
6306436
fix(trigger): Add missing __eq__
michaelbrewer Sep 14, 2020
0ffb1be
feat(trigger): unquote_plus s3 object key
michaelbrewer Sep 14, 2020
d0c9e5b
refactor(data_classes): rename package from trigger
michaelbrewer Sep 17, 2020
e860731
refactor(data_classes): Use DictWrapper consistently
michaelbrewer Sep 17, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions aws_lambda_powertools/utilities/data_classes/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from .alb_event import ALBEvent
from .api_gateway_proxy_event import APIGatewayProxyEvent, APIGatewayProxyEventV2
from .cloud_watch_logs_event import CloudWatchLogsEvent
from .dynamo_db_stream_event import DynamoDBStreamEvent
from .event_bridge_event import EventBridgeEvent
from .kinesis_stream_event import KinesisStreamEvent
from .s3_event import S3Event
from .ses_event import SESEvent
from .sns_event import SNSEvent
from .sqs_event import SQSEvent

__all__ = [
"APIGatewayProxyEvent",
"APIGatewayProxyEventV2",
"ALBEvent",
"CloudWatchLogsEvent",
"DynamoDBStreamEvent",
"EventBridgeEvent",
"KinesisStreamEvent",
"S3Event",
"SESEvent",
"SNSEvent",
"SQSEvent",
]
38 changes: 38 additions & 0 deletions aws_lambda_powertools/utilities/data_classes/alb_event.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
from typing import Dict, List, Optional

from aws_lambda_powertools.utilities.data_classes.common import BaseProxyEvent, DictWrapper


class ALBEventRequestContext(DictWrapper):
@property
def elb_target_group_arn(self) -> str:
return self["requestContext"]["elb"]["targetGroupArn"]


class ALBEvent(BaseProxyEvent):
"""Application load balancer event

Documentation:
--------------
- https://docs.aws.amazon.com/lambda/latest/dg/services-alb.html
"""

@property
def request_context(self) -> ALBEventRequestContext:
return ALBEventRequestContext(self)

@property
def http_method(self) -> str:
return self["httpMethod"]

@property
def path(self) -> str:
return self["path"]

@property
def multi_value_query_string_parameters(self) -> Optional[Dict[str, List[str]]]:
return self.get("multiValueQueryStringParameters")

@property
def multi_value_headers(self) -> Optional[Dict[str, List[str]]]:
return self.get("multiValueHeaders")
Loading