Send and Receive Messages in SQS with lambda save to DynamoDB
codewithvinod codewithvinod
1.39K subscribers
131 views
5

 Published On Jan 30, 2024

#sqs
#cloudwatch
#simple
Create SQS queues
Create IAM Role for lambda with SQS instance accessibility
Create sender lambda function to send messages to SQS queue
Create Dynamo DB table
Create Receiver lambda function to send message to Dynamo DB table

#################sender lambda function ##################
import json
import boto3

from datetime import datetime


def lambda_handler(event, context):

now = datetime.now()
current_time = now.strftime("%H:%M:%S %p")

send_message()
return {
'statusCode': 200,
'body': json.dumps(current_time)
}

def send_message():
sqs_client = boto3.client("sqs", region_name="ap-southeast-2")

message = {"vinod": "123"}
response = sqs_client.send_message(
QueueUrl="Queue URL",
MessageBody=json.dumps(message)
)
print(response)


#############################receiver lambda function ############

#importing packages
import json
import boto3
#function definition
def lambda_handler(event,context):
dynamodb = boto3.resource('dynamodb')
#table name
table = dynamodb.Table('my_sqs_data')
#inserting values into table
data = receive_message()
for message in data.get("Messages", []):
message_body = message["Body"]
print(type(message_body))

Item2={
'id': 'bhagi'
}
Item2["sms"]=message_body
response = table.put_item(
Item=Item2
)
return response


def receive_message():
sqs_client = boto3.client("sqs", region_name="ap-southeast-2")
response = sqs_client.receive_message(
QueueUrl="Queue URL",
MaxNumberOfMessages=1,
WaitTimeSeconds=10,
)

print(f"Number of messages received: {len(response.get('Messages', []))}")
return response

show more

Share/Embed