gpt4 book ai didi

python - 跨区域调用 AWS lambda

转载 作者:太空狗 更新时间:2023-10-30 02:25:41 27 4
gpt4 key购买 nike

我有三个 lambda 函数:boss、worker1、worker2。使用 boto3.client.invoke 时,我可以从老板那里调用 worker1。这两个在同一个区域。
worker2 在一个单独的区域中。当试图从 boss 调用 worker2 时,返回以下错误:
“调用 Invoke 操作时发生错误 (ResourceNotFoundException):在此区域 (‘us-west-2’) 中无法访问来自‘us-east-1’的函数”。boss 具有执行角色,具有以下权限:

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

请帮助阐明需要如何传达权限才能使其正常工作。谢谢

编辑:master 和 worker1 在 us-west-2,worker1 在 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')

迈克尔,您说得对,区域之间一个 lambda 到另一个 lambda 的用例很复杂。我会在这里留下这个答案,以防任何其他 boto3 新手在尝试让其他资源(lambda 到 ec2、lambda 到 s3 等)跨区域工作时遇到同样的错误。
谢谢

关于python - 跨区域调用 AWS lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48250426/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com