我已经创建了一个SQS队列,现在我想从我的lambada函数读取数据。我已经将触发器从SQS配置到这个lambada函数。
当我将消息放入SQS队列时,当我单击Flight.But函数中的测试时,它会显示1条消息。
错误
{
"errorMessage": "module initialization error"
}我正在使用下面的boto3
import boto3
sqs = boto3.client('sqs')
queue_url = 'https://sqs.us-east-1.amazonaws.com/944198216610/My-Queue'
response = sqs.receive_message(
QueueUrl='https://sqs.us-east-1.amazonaws.com/944198216610/My-Queue',
AttributeNames=[
'SentTimestamp'],
MaxNumberOfMessages=1,
MessageAttributeNames=[
'All'
],
VisibilityTimeout=0,
WaitTimeSeconds=0
)
message = response['Messages'][0]
receipt_handle = message['ReceiptHandle']
# Delete received message from queue
sqs.delete_message(
QueueUrl='https://sqs.us-east-1.amazonaws.com/944198216610/My-Queue',
ReceiptHandle=receipt_handle
)
print('Received and deleted message: %s' % message)发布于 2019-03-06 05:30:20
您的代码调用sqs.receive_message,但是要正确地将Lambda与SQS集成,您可以使用Lambda事件触发器。这样,无论何时有事件进入队列,SQS都会自动调用包含该事件(或基于指定批处理大小的多个事件)的Lambda函数。
See here for setting up an SQS Lambda event trigger
Also see here for setting up a Lambda handler in python,其中的事件参数将是事件SQS触发您的lambda的事件(打印它并查看事件的格式,以便您可以了解如何使用事件数据)。
这样,当您向SQS发送消息时,SQS将触发您的Lambda函数,如果您的Lambda成功返回,SQS将从队列中删除该消息。您不需要手动执行receive_message或delete_message。
https://stackoverflow.com/questions/55009190
复制相似问题