从 Lambda@Edge 触发另一个 Lambda 函数

nar*_*ibo 5 amazon-sqs amazon-web-services amazon-sns aws-lambda aws-lambda-edge

我想从 Lambda@Edge 卸载一些功能以加快响应时间。这意味着在我的 Lambda@Edge 中触发另一个 Lambda 函数。

Lambda@Edge 将应用程序分布在所有区域,因此当发出请求时,它将在距离请求者最近的区域执行应用程序。

我当前的解决方案是在所有区域创建一个具有相同主题名称的 SNS,让 us-east-1 中的 SQS 监听所有这些 SNS 主题,并使用 Lambda 函数监听 SQS。

然而,在每个地区创建一个SNS 维护起来相当麻烦。

关于如何在 Lambda@Edge 中触发另一个 Lambda 函数,还有其他建议吗?

谢谢!

Sha*_*awn 1

在 lambda 中,您可以简单地调用另一个 lambda。我不知道您使用的是哪种语言,但这里有一个 Python 和 boto3 库中的示例,其中包含您可能想要传递给正在调用的 lambda 的示例信息负载(我使用区域和详细类型作为示例信息传递):

payload = {'region': <the region>, 'detail-type': 'some other detail you care about'}
lambda_client = boto3.client('lambda', account_id=<your account ID>)
lambda_client.invoke(FunctionName=<ARN of the function you want to invoke>, InvocationType='Event', Payload=json.dumps(payload))
Run Code Online (Sandbox Code Playgroud)

其他语言中也有类似的选项。有关 Python 中此调用的更多详细信息,请访问https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lambda.html#Lambda.Client.invoke