ActiveMQ tutorials
The following tutorials show how you can create and connect to your ActiveMQ brokers. To use the ActiveMQ Java example code, you must install the
Java Standard Edition Development Kit
Step 3: (Optional) Connect to an Amazon Lambda function
Amazon Lambda can connect to and consume messages from your Amazon MQ broker. When you connect a broker to Lambda, you create an event source mapping that reads messages from a queue and invokes the function synchronously. The event source mapping you create reads messages from your broker in batches and converts them into a Lambda payload in the form of a JSON object.
To connect your broker to a Lambda function
-
Add the following IAM role permissions to your Lambda function execution role.
Note
Without the necessary IAM permissions, your function will not be able to successfully read records from Amazon MQ resources.
-
(Optional) If you have created a broker without public accessibility, you must do one of the following to allow Lambda to connect to your broker:
-
Configure one NAT gateway per public subnet. For more information, see Internet and service access for VPC-connected functions in the Amazon Lambda Developer Guide.
-
Create a connection between your Amazon Virtual Private Cloud (Amazon VPC) and Lambda using a VPC endpoint. Your Amazon VPC must also connect to Amazon Security Token Service (Amazon STS) and Secrets Manager endpoints. For more information, see Configuring interface VPC endpoints for Lambda in the Amazon Lambda Developer Guide.
-
-
Configure your broker as an event source for a Lambda function using the Amazon Web Services Management Console. You can also use the
create-event-source-mapping
Amazon Command Line Interface command. -
Write some code for your Lambda function to process the messages consumed from your broker. The Lambda payload that retrieved by your event source mapping depends on the engine type of the broker. The following is an example of a Lambda payload for an Amazon MQ for ActiveMQ queue.
Note
In the example,
testQueue
is the name of the queue.{ "eventSource": "aws:amq", "eventSourceArn": "arn:aws:mq:us-west-2:112556298976:broker:test:b-9bcfa592-423a-4942-879d-eb284b418fc8", "messages": { [ { "messageID": "ID:b-9bcfa592-423a-4942-879d-eb284b418fc8-1.mq.us-west-2.amazonaws.com-37557-1234520418293-4:1:1:1:1", "messageType": "jms/text-message", "data": "QUJDOkFBQUE=", "connectionId": "myJMSCoID", "redelivered": false, "destination": { "physicalname": "testQueue" }, "timestamp": 1598827811958, "brokerInTime": 1598827811958, "brokerOutTime": 1598827811959 }, { "messageID": "ID:b-9bcfa592-423a-4942-879d-eb284b418fc8-1.mq.us-west-2.amazonaws.com-37557-1234520418293-4:1:1:1:1", "messageType":"jms/bytes-message", "data": "3DTOOW7crj51prgVLQaGQ82S48k=", "connectionId": "myJMSCoID1", "persistent": false, "destination": { "physicalname": "testQueue" }, "timestamp": 1598827811958, "brokerInTime": 1598827811958, "brokerOutTime": 1598827811959 } ] } }
For more information about connecting Amazon MQ to Lambda, the options Lambda supports for an Amazon MQ event source, and event source mapping errors, see Using Lambda with Amazon MQ in the Amazon Lambda Developer Guide.