跨区域调用AWS lambda

编程入门 行业动态 更新时间:2024-10-27 21:16:57
本文介绍了跨区域调用AWS lambda的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有三个lambda函数:oss、worker1、worker2。在使用boto3.client.voke时,我可以从BOSS调用worker1。这两者位于同一地区。 Worker2位于单独的区域。尝试从BOSS调用worker2时,返回以下错误: "调用调用操作时出现错误(ResourceNotFoundException):在此区域(‘us-West-2’)中无法访问来自‘us-East-1’的函数"。 BOSS具有执行角色,权限如下:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Effect": "Allow", "Resource": "arn:aws:lambda:*:*:*" } ] }

请帮助澄清如何传递权限才能起作用。 谢谢

编辑: Master和Worker 1位于US-West-2,而Worker 1位于US-East-1。 下面是用于从master调用Worker的代码:

def lambda_handler(event, context): function_name = "arn:aws:lambda:us-east-1-...:function:worker_2" lambda_client = boto3.client('lambda') payload = json.dumps({"body-json": "payload string") response = lambda_client.invoke( FunctionName = function_name, Payload = payload ) response_payload = response['Payload'].read() response_arr = json.loads(response_payload) return response_arr['answer'] 推荐答案

感谢大家的投入。@Michael-sqlbot关于AWS客户端库默认将请求发送到本地区域的评论帮助我找到了解决方案。对于Python,库就是boto3。阅读docs后,不清楚如何设置区域。正是这个blog post提供了(简单的)答案:

client = boto3.client('lambda', region_name='us-west-2') 您是对的,Michael,区域之间从一个lambda到另一个lambda的用例是错综复杂的。我把这个答案留在这里,以防其他刚接触boto3的人在尝试让其他资源(lambda到EC2、lambda到S3等)跨区域工作时遇到相同的错误。 谢谢

更多推荐

跨区域调用AWS lambda

本文发布于:2023-11-06 14:53:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1563994.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:AWS   lambda

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!