SQS receive_message 的正确解析是什么?
What is the proper parsing for SQS receive_message?
几天来我一直在解决这个问题,但我似乎不知道该去哪里
解决这个错误。我已经根据 Boto3、SQS 文档和 Lambda 测试中记录的内容对 receive_message 响应语法进行了测试,但无济于事。
{
"errorMessage": "'Messages'",
"errorType": "KeyError",
"stackTrace": [
" File \"/var/task/lambda_function.py\", line 24, in lambda_handler\n message = response['Messages'][0]\n"
]
}
我直接从 Boto3 SDK documentation:
中截取了这个 Python 片段
import boto3
import os
# Create SQS client
sqs = boto3.client('sqs')
QUEUE_URL = os.environ['QUEUE_URL']
def lambda_handler(event, context):
# Receive message from SQS queue
response = sqs.receive_message(
QueueUrl=QUEUE_URL,
AttributeNames=[
'SentTimestamp'
],
MaxNumberOfMessages=10,
MessageAttributeNames=[
'All'
],
VisibilityTimeout=0,
WaitTimeSeconds=0
)
message = response['Messages'][0]
receipt_handle = message['ReceiptHandle']
# Delete received message from queue
sqs.delete_message(
QueueUrl=queue_url,
ReceiptHandle=receipt_handle
)
print('Received and deleted message: %s' % message)
如果您配置了 Amazon SQS 来触发 AWS Lambda 函数,那么您不需要调用任何 SQS 命令。相反,消息在传递给 Lambda 函数的 event
中提供:
for record in event['Records']:
payload = record['body']
print(payload)
如果 Lambda 函数成功退出,消息将自动从队列中删除。
几天来我一直在解决这个问题,但我似乎不知道该去哪里 解决这个错误。我已经根据 Boto3、SQS 文档和 Lambda 测试中记录的内容对 receive_message 响应语法进行了测试,但无济于事。
{
"errorMessage": "'Messages'",
"errorType": "KeyError",
"stackTrace": [
" File \"/var/task/lambda_function.py\", line 24, in lambda_handler\n message = response['Messages'][0]\n"
]
}
我直接从 Boto3 SDK documentation:
中截取了这个 Python 片段import boto3
import os
# Create SQS client
sqs = boto3.client('sqs')
QUEUE_URL = os.environ['QUEUE_URL']
def lambda_handler(event, context):
# Receive message from SQS queue
response = sqs.receive_message(
QueueUrl=QUEUE_URL,
AttributeNames=[
'SentTimestamp'
],
MaxNumberOfMessages=10,
MessageAttributeNames=[
'All'
],
VisibilityTimeout=0,
WaitTimeSeconds=0
)
message = response['Messages'][0]
receipt_handle = message['ReceiptHandle']
# Delete received message from queue
sqs.delete_message(
QueueUrl=queue_url,
ReceiptHandle=receipt_handle
)
print('Received and deleted message: %s' % message)
如果您配置了 Amazon SQS 来触发 AWS Lambda 函数,那么您不需要调用任何 SQS 命令。相反,消息在传递给 Lambda 函数的 event
中提供:
for record in event['Records']:
payload = record['body']
print(payload)
如果 Lambda 函数成功退出,消息将自动从队列中删除。