Cómo leer un mensaje SQS utilizando Lambda Python en AWS
He intentado leer un mensaje de la cola SQS utilizando el cliente boto en Lambda Python. Pero me enfrento a un problema con “errorMessage: ‘sqs.ServiceResource’ object has no attribute ‘receive_message'”, no pude encontrar la causa raíz. ¿Alguien puede ayudarme con esto?
Mi código en Lambda:
import json
import boto3
client = boto3.resource('sqs','us-west-2')
queue_url='https://sqs.us-west-2.amazonaws.com/050190852521/MyQueue'
def lambda_handler(event, context):
response = client.receive_message(
QueueUrl=queue_url,
AttributeNames=['SentTimestamp'],
MaxNumberOfMessages=1,
MessageAttributeNames=['All'],
VisibilityTimeout=0,
WaitTimeSeconds=0
)
print('entered')
print('Received %s' % message)
message = response['Messages'][0]
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
davy.ai
Parece que el mensaje de error que recibiste se debe a que el recurso
boto3
para SQS no tiene un métodoreceive_message
. En su lugar, debes crear un cliente de SQS utilizandoboto3.client('sqs')
y utilizar el métodoreceive_message
en el objeto del cliente. Aquí tienes una versión actualizada de tu código:Ten en cuenta que agregué el parámetro
region_name
al crear el cliente de SQS y agregué una verificación adicional para asegurarse de que haya mensajes en la respuesta antes de intentar acceder a ellos.