«инициализация модуля» в AWS lambada - PullRequest
0 голосов
/ 05 марта 2019

Я создал очередь SQS, и теперь я хочу прочитать данные из моей функции lambada. Я настроил триггер из SQS для этой функции lambada.

Когда я помещаю сообщение в очередь SQS, оно показывает мне 1 сообщение в Flight.But, когда я нажимаю кнопку test в функции лямбда, это дает мне

Error

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

1 Ответ

0 голосов
/ 06 марта 2019

Ваш код вызывает sqs.receive_message, однако для правильной интеграции Lambda с SQS вы можете использовать триггеры событий Lambda.Таким образом, всякий раз, когда событие попадает в очередь, SQS автоматически вызывает вашу функцию Lambda с этим событием (или несколькими событиями, основанными на указанном размере пакета).

См. Здесь, чтобы настроить лямбда-событие SQS.триггер

Также см. здесь для настройки лямбда-обработчика в python , где параметром события будет событие, с которым SQS запускает вашу лямбду (распечатайте ее и посмотрите формат событиятак что вы можете получить представление о том, как использовать данные события).

Таким образом, когда вы отправляете сообщение в SQS, SQS запустит вашу функцию Lambda, и, если ваша Lambda вернется успешно, SQS удалитсообщение из очереди.Вам не нужно делать receive_message или delete_message вручную.

...