我想从Lambda @ Edge上卸载某些功能以加快响应时间。 这将意味着在我的Lambda @ Edge内部触发另一个Lambda函数。
Lambda @ Edge将应用程序分布在所有区域中,因此当发出请求时,它将在最靠近请求者的区域中执行应用程序。
我当前的解决方案是在所有区域创建一个具有相同主题名称的SNS,在us-east-1中拥有一个SQS来监听所有这些SNS主题,并使用Lambda函数来监听SQS。
但是,在每个地区创建SNS都很麻烦。
关于如何在Lambda @ Edge内部触发另一个Lambda函数的其他建议?
谢谢!
答案 0 :(得分: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