4

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

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

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

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

关于如何在我的 Lambda@Edge 中触发另一个 Lambda 函数的任何其他建议?

谢谢!

4

1 回答 1

1

在 lambda 中,您可以简单地调用另一个 lambda。我不知道您使用的是哪种语言,但这是 Python 和 boto3 库中的一个示例,其中包含您可能希望传递给正在调用的 lambda 的信息的示例有效负载(我使用 region 和 detail-type 作为示例信息传递):

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))

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

于 2019-12-20T16:39:04.930 回答