Skip to content

Commit 914c83e

Browse files
author
Michael Brewer
committed
docs: add docs for amazon mq
1 parent 30b5e31 commit 914c83e

File tree

3 files changed

+56
-0
lines changed

3 files changed

+56
-0
lines changed

aws_lambda_powertools/utilities/data_classes/active_mq_event.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ def event_source(self) -> str:
112112

113113
@property
114114
def event_source_arn(self) -> str:
115+
"""The Amazon Resource Name (ARN) of the event source"""
115116
return self["eventSourceArn"]
116117

117118
@property

aws_lambda_powertools/utilities/data_classes/rabbit_mq_event.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ def event_source(self) -> str:
113113

114114
@property
115115
def event_source_arn(self) -> str:
116+
"""The Amazon Resource Name (ARN) of the event source"""
116117
return self["eventSourceArn"]
117118

118119
@property

docs/utilities/data_classes.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ Same example as above, but using the `event_source` decorator
5858

5959
Event Source | Data_class
6060
------------------------------------------------- | ---------------------------------------------------------------------------------
61+
[Active MQ](#active-mq) | `ActiveMQEvent`
6162
[API Gateway Authorizer](#api-gateway-authorizer) | `APIGatewayAuthorizerRequestEvent`
6263
[API Gateway Authorizer V2](#api-gateway-authorizer-v2) | `APIGatewayAuthorizerEventV2`
6364
[API Gateway Proxy](#api-gateway-proxy) | `APIGatewayProxyEvent`
@@ -72,6 +73,7 @@ Event Source | Data_class
7273
[DynamoDB streams](#dynamodb-streams) | `DynamoDBStreamEvent`, `DynamoDBRecordEventName`
7374
[EventBridge](#eventbridge) | `EventBridgeEvent`
7475
[Kinesis Data Stream](#kinesis-streams) | `KinesisStreamEvent`
76+
[Rabbit MQ](#rabbit-mq) | `RabbitMQEvent`
7577
[S3](#s3) | `S3Event`
7678
[S3 Object Lambda](#s3-object-lambda) | `S3ObjectLambdaEvent`
7779
[SES](#ses) | `SESEvent`
@@ -82,6 +84,31 @@ Event Source | Data_class
8284
The examples provided below are far from exhaustive - the data classes themselves are designed to provide a form of
8385
documentation inherently (via autocompletion, types and docstrings).
8486

87+
### Active MQ
88+
89+
It is used for [Active MQ payloads](https://docs.aws.amazon.com/lambda/latest/dg/with-mq.html){target="_blank"}, also see
90+
the [AWS blog post](https://aws.amazon.com/blogs/compute/using-amazon-mq-as-an-event-source-for-aws-lambda/){target="_blank"}
91+
for more details.
92+
93+
=== "app.py"
94+
95+
```python
96+
from typing import Dict
97+
98+
from aws_lambda_powertools import Logger
99+
from aws_lambda_powertools.utilities.data_classes import event_source
100+
from aws_lambda_powertools.utilities.data_classes.active_mq_event import ActiveMQEvent
101+
102+
logger = Logger()
103+
104+
@event_source(data_class=ActiveMQEvent)
105+
def lambda_handle(event: ActiveMQEvent, context):
106+
for message in event.messages:
107+
logger.debug(f"MessageID: {message.message_id}")
108+
data: Dict = message.json_data
109+
logger.debug("Process json in base64 encoded data str", data)
110+
```
111+
85112
### API Gateway Authorizer
86113

87114
> New in 1.20.0
@@ -810,6 +837,33 @@ or plain text, depending on the original payload.
810837
do_something_with(data)
811838
```
812839

840+
### Rabbit MQ
841+
842+
It is used for [Rabbit MQ payloads](https://docs.aws.amazon.com/lambda/latest/dg/with-mq.html){target="_blank"}, also see
843+
the [blog post](https://aws.amazon.com/blogs/compute/using-amazon-mq-for-rabbitmq-as-an-event-source-for-lambda/){target="_blank"}
844+
for more details.
845+
846+
=== "app.py"
847+
848+
```python
849+
from typing import Dict
850+
851+
from aws_lambda_powertools import Logger
852+
from aws_lambda_powertools.utilities.data_classes import event_source
853+
from aws_lambda_powertools.utilities.data_classes.rabbit_mq_event import RabbitMQEvent
854+
855+
logger = Logger()
856+
857+
@event_source(data_class=RabbitMQEvent)
858+
def lambda_handle(event: RabbitMQEvent, context):
859+
for queue_name, messages in event.rmq_messages_by_queue.items():
860+
logger.debug(f"Messages for queue: {queue_name}")
861+
for message in messages:
862+
logger.debug(f"MessageID: {message.basic_properties.message_id}")
863+
data: Dict = message.json_data
864+
logger.debug("Process json in base64 encoded data str", data)
865+
```
866+
813867
### S3
814868

815869
=== "app.py"

0 commit comments

Comments
 (0)