在AWS IoT中,可以使用AWS Lambda函数来重定向到Amazon Simple Queue Service (SQS)。以下是一个示例解决方案,展示了如何获取IoT主题和完整的JSON有效载荷。
import boto3
import json
def lambda_handler(event, context):
# 获取IoT主题和有效载荷
records = event['records']
for record in records:
# 获取IoT主题
topic = record['topic']
# 获取JSON有效载荷
payload = record['payload']
payload_json = json.loads(payload)
# 处理消息
process_message(topic, payload_json)
return {
'statusCode': 200,
'body': 'Success'
}
def process_message(topic, payload):
# 在这里执行您的逻辑
print('Received message from topic:', topic)
print('Payload:', payload)
# 将消息发送到SQS
sqs = boto3.client('sqs')
queue_url = 'YOUR_SQS_QUEUE_URL'
response = sqs.send_message(
QueueUrl=queue_url,
MessageBody=json.dumps(payload)
)
print('Message sent to SQS:', response['MessageId'])
在上面的示例中,lambda_handler
函数接收事件并迭代每条记录。对于每条记录,它获取IoT主题和有效载荷。然后,它将IoT主题和有效载荷传递给process_message
函数进行处理。
在process_message
函数中,您可以根据需要执行自定义逻辑。在这个示例中,我们只是打印了主题和有效载荷,并将有效载荷发送到SQS队列。
确保将YOUR_SQS_QUEUE_URL
替换为您的SQS队列的URL。
这是一个基本的示例,您可以根据自己的需求进行扩展和修改。