Skip to content

Commit

Permalink
Added SQS lab
Browse files Browse the repository at this point in the history
  • Loading branch information
mrichman committed Jan 25, 2019
1 parent 54c1744 commit ab23608
Show file tree
Hide file tree
Showing 5 changed files with 113 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.vscode/*
1 change: 1 addition & 0 deletions Triggering-Lambda-from-SQS/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Triggering Lambda from SQS
21 changes: 21 additions & 0 deletions Triggering-Lambda-from-SQS/lambda_execution_role.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Action": [
"dynamodb:*",
"sqs:*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
41 changes: 41 additions & 0 deletions Triggering-Lambda-from-SQS/lambda_function.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
from datetime import datetime
import json
import os
import boto3

QUEUE_NAME = os.environ['QUEUE_NAME']
MAX_QUEUE_MESSAGES = os.environ['MAX_QUEUE_MESSAGES']
DYNAMODB_TABLE = os.environ['DYNAMODB_TABLE']

sqs = boto3.resource('sqs')
dynamodb = boto3.resource('dynamodb')


def lambda_handler(event, context):

# Receive messages from SQS queue
queue = sqs.get_queue_by_name(QueueName=QUEUE_NAME)

print("ApproximateNumberOfMessages:",
queue.attributes.get('ApproximateNumberOfMessages'))

for message in queue.receive_messages(
MaxNumberOfMessages=int(MAX_QUEUE_MESSAGES)):

print(message)

# Write message to DynamoDB
table = dynamodb.Table(DYNAMODB_TABLE)

response = table.put_item(
Item={
'MessageId': message.message_id,
'Body': message.body,
'Timestamp': datetime.now().isoformat()
}
)
print("Wrote message to DynamoDB:", json.dumps(response))

# Delete SQS message
message.delete()
print("Deleted message:", message.message_id)
49 changes: 49 additions & 0 deletions Triggering-Lambda-from-SQS/send_message.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#!/usr/bin/env python3.7
# -*- coding: utf-8 -*-
import argparse
import logging
import sys
from time import sleep
import boto3
from faker import Faker


if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--queue-name", "-q", required=True,
help="SQS queue URL")
parser.add_argument("--interval", "-i", required=True,
help="timer interval", type=float)
parser.add_argument("--message", "-m", help="message to send")
parser.add_argument("--log", "-l", default="INFO",
help="logging level")
args = parser.parse_args()

if args.log:
logging.basicConfig(
format='[%(levelname)s] %(message)s', level=args.log)

else:
parser.print_help(sys.stderr)

sqs = boto3.client('sqs')

response = sqs.get_queue_url(QueueName=args.queue_name)

queue_url = response['QueueUrl']

logging.info(queue_url)

while True:
message = args.message
if not args.message:
fake = Faker()
message = fake.text()

logging.info('Sending message: ' + message)

response = sqs.send_message(
QueueUrl=queue_url, MessageBody=message)

logging.info('MessageId: ' + response['MessageId'])
sleep(args.interval)

0 comments on commit ab23608

Please sign in to comment.