【问题标题】:How to read sqs message using lambda python in aws?如何在aws中使用lambda python读取sqs消息?
【发布时间】:2022-01-27 19:21:53
【问题描述】:

我尝试在 lambda python 中使用 boto 客户端从 sqs 队列中读取消息。 但我面临""errorMessage": "'sqs.ServiceResource' object has no attribute 'receive_message'"," . couldnt find the root cause 的问题。任何人都可以帮助解决这个问题

我在 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!')
        }

【问题讨论】:

  • 使用boto3.client而不是boto3.resourceclient = boto3.client('sqs', 'us-west-2')
  • 谢谢你..但我在 boto3.client ""errorMessage" 之后遇到了问题:"调用 ReceiveMessage 操作时发生错误 (AccessDenied):访问资源 us-west-2.queue.amazonaws.com 被拒绝。" , "errorType": "ClientError"," 在哪里授予权限。在平方?在 lamda 我拥有所有权限
  • 添加政策。它的工作。

标签: python amazon-web-services aws-lambda amazon-sqs


【解决方案1】:

sqs 的变量定义不正确 正确的应该是

sqs = boto3.client('sqs')

【讨论】:

  • 我已经将 lamda 写入 aws..为什么我们需要设置 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY?
  • 那就不用了,更新答案
  • 谢谢你..但我在 boto3.client ""errorMessage": "调用 ReceiveMessage 操作时发生错误 (AccessDenied):访问资源 us-west-2.queue .amazonaws.com 被拒绝。", "errorType": "ClientError"," 在哪里授予权限。在平方?在 lamda 我拥有所有权限
  • 这是一个不同的问题,您需要创建一个不同的问题,因为 cmets 应该与主要问题相关。谢谢
猜你喜欢
  • 1970-01-01
  • 2018-08-03
  • 2020-07-17
  • 1970-01-01
  • 2019-11-07
  • 2017-04-27
  • 2018-09-24
  • 2013-02-03
  • 2016-04-13
相关资源
最近更新 更多