这个错误通常表示在从 SQS 接收消息时,消息的 body 中缺少必需的元素导致无法解析。因此,你需要检查代码中的队列和发送消息的端点,以确保使用正确的 AWS SNS 主题和正确的字段。下面是一些示例代码,向队列发送 JSON 格式的消息:
queue_url = 'https://sqs.us-west-2.amazonaws.com/123456789012/my-queue'
sqs = boto3.client('sqs')
message = {'name': 'John Doe', 'age': 35}
response = sqs.send_message(QueueUrl=queue_url, MessageBody=json.dumps(message))
在接收消息时,你需要确保确切地了解发送消息的主题及其各个字段。下面是一个接收 JSON 格式消息并打印消息的示例代码:
queue_url = 'https://sqs.us-west-2.amazonaws.com/123456789012/my-queue'
sqs = boto3.client('sqs')
response = sqs.receive_message(QueueUrl=queue_url)
while 'Messages' in response:
message = response['Messages'][0]
body = json.loads(message['Body'])
print('Name:', body['name'])
print('Age:', body['age'])
sqs.delete_message(QueueUrl=queue_url, ReceiptHandle=message['ReceiptHandle'])
response = sqs.receive_message(QueueUrl=queue_url)
这里,代码中的每条消息都包含一个名为“name”的字段和一个名为“age”的字段。如果队列中的消息不包含这些字段中的任何一个,你都将会遇到 tuple index out of range 错误。确保发送和接收代码中使用的 JSON 主题中包含所需的所有字段可以解决这个错误。