[Python / Lambda] 用boto3 sqs客户端时遇到botocore.exception.ClientError(Access Denied)错误。

0

【以下的问题经过翻译处理】 [ENV] 触发 Lambda -> ap-northeast-2 SQS 队列 -> ap-northeast-1 爬虫 EC2 -> ap-northeast-1

[流水线] 触发 Lambda -> 发送消息 -> SQS 队列 -> 爬虫 EC2

[权限] 触发 Lambda -> 队列授予发送消息权限(trigger_lambda) 爬虫 EC2 -> 队列授予消费消息权限(crawler_cluster_worker)

[所有者] 所有 -> 根帐户

[触发 Lambda 中的 Python 代码] sqs_client.send_message( QueueUrl=CRAWLER_SQS_MESSAGE_QUEUE_URL, MessageBody=json.dumps(sqs_message) )

[触发 Lambda 的错误详情] [ERROR] ClientError: An error occurred (AccessDenied) when calling the SendMessage operation: Access to the resource https://sqs.ap-northeast-1.amazonaws.com/ is denied. Traceback (most recent call last): File "/var/task/main.py", line 136, in lambda_handler raise e File "/var/task/main.py", line 116, in lambda_handler sqs_client.send_message( File "/var/task/botocore/client.py", line 530, in _api_call return self._make_api_call(operation_name, kwargs) File "/var/task/botocore/client.py", line 960, in _make_api_call raise error_class(parsed_response, operation_name)

[问题] 触发 Lambda 失败,但发送 SQS 消息总是成功的。权限和区域都没有问题。判断这是暂时性错误。能告诉我暂时性错误可能的原因吗?

profile picture
专家
已提问 6 个月前37 查看次数
1 回答
0

【以下的回答经过翻译处理】 如果您一直看到这个错误,则Lambda函数没有权限发送到该SQS队列。检查IAM权限和分配给Lambda函数的角色。

如果您间歇性地看到此错误,则可能有问题,请联系我们的支持团队以进行调查。在re:Post这边,我们无法访问您的详细信息、账户和您正在使用的服务。这是提供一般建议的论坛;支持团队可以帮助解决这些问题。

profile picture
专家
已回答 6 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则