amazon-web-services - 从 Lambda@Edge 触发另一个 Lambda 函数

标签 amazon-web-services aws-lambda amazon-sqs amazon-sns aws-lambda-edge

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

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

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

但是,在每个区域上创建 SNS 维护起来非常麻烦。

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

谢谢!

最佳答案

在 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

关于amazon-web-services - 从 Lambda@Edge 触发另一个 Lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59422893/

相关文章:

amazon-web-services - AWS QuickSight 看不到 Athena DB

amazon-web-services - 使用 aws-cdk 的 token 更新 Assets 文件

java - Jenkins java.net.UnknownHostException 错误

python - 如何将 X-Ray 与 SNS 一起使用以获得一个大链而不是许多小链?

amazon-web-services - 如何在aws gateway lambda集成中获取查询字符串

ubuntu - 具有多个 aws 帐户的 Eb 工具

python - 无法导入模块 'app' : No module named 'app' in Aws Lambda using Chalice

redis - 如何设计来自 SQS 的自动分配内容?

Laravel 多个服务器与 AWS 队列一起使用

amazon-web-services - 强制AWS SQS一条一条地处理消息