"module initialization " 在 AWS 中没有

"module initialization " in AWS lambada

我已经创建了一个 SQS 队列,现在我想从我的 lambada 中读取数据 function.I 已经配置了从 SQS 到这个 lambada 函数的触发器。

当我将消息放入 SQS 队列时,它会在 Flight.But 中显示 1 条消息,当我在 lambda 函数中单击测试时,它会给我

错误

  {
       "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)

您的代码调用 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函数,如果你的Lambdareturns成功,SQS会从队列中删除消息。您不需要手动执行 receive_message 或 delete_message。