首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS lambada中的“模块初始化”

AWS lambada中的“模块初始化”
EN

Stack Overflow用户
提问于 2019-03-06 02:20:02
回答 1查看 743关注 0票数 0

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

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

错误

代码语言:javascript
复制
  {
       "errorMessage": "module initialization error"
  }

我正在使用下面的boto3

代码语言:javascript
复制
  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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-06 05:30:20

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55009190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档