通过http请求调用AWS Lambda函数

Mos*_*ham 27 amazon-web-services aws-lambda

是否可以通过http请求(GET或POST)直接调用AWS Lambda函数?如果没有,是否有解决方法通过SNS或S3?因为我想不到一个......

具体来说,我想使用JSON创建一个小API

use*_*526 31

AWS API Gateway是通过HTTP公开lambda函数的唯一方法.如果在创建新的lambda函数时使用microservice-http-endpoint蓝图,AWS lambda Web控制台应自动为您创建一个.

在此输入图像描述

或者您可以从以下屏幕进行设置 在此输入图像描述

或者从AWS API Gateway Web控制台创建它. 在此输入图像描述


您还可以使用客户端,移动或Web应用程序中的SDK按需调用它.更多信息在这里.

  • 新的 Application Load Balancer 现在可以调用 Lambda 函数 (3认同)
  • 您可以使用 Amazon 开发工具包调用 Lambda 函数,该函数在幕后使用 HTTP 访问 AWS Lambda API。此类请求需要安全凭证才能正确签名。 (3认同)
  • 小心“X 是做 Y 的唯一方法”之类的说法。即使答案已发布,您也可以从 SNS 触发 lambda,进而可以从 HTTP 触发 (3认同)
  • 但是一旦你设置了这个 API 网关,你如何实现它?在 stage/prod 下,我获得了所有可能的 HTTP 方法和它们的通用 URL。点击 URL 给出 `{"message":"Missing Authentication Token"}` (2认同)

小智 18

是的,您可以使用 HTTP POST 方法调用 AWS Lambda 函数,为此您需要使用有效的 AWS IAM 凭证发出 sigv4 签名请求。

我使用邮递员对此进行了测试:

curl -X POST https://lambda.us-west-2.amazonaws.com/2015-03-31/functions/Function_NAME/invocations
Run Code Online (Sandbox Code Playgroud)

链接: 调用语法

  • 您能分享一下如何对请求进行 sigv4 签名吗?您是如何生成授权标头的? (2认同)
  • @BinodKarunanayake 这非常复杂。如果可以的话,最好使用 AWS 开发工具包。但无论如何,这里是详细信息:https://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html (2认同)

Car*_*ela 10

只需在 lambda 函数中添加一个触发器,您就可以在将生成的链接中发送 GET 或 POST 请求

转到您的 lambda 函数并单击触发器部分

如果您希望它可公开访问,请创建触发器并将安全设置为“打开”。 否则,根据自己的需要配置


Unb*_*ess 8

Lambda 现在具有内置的 HTTPS 端点,您可以使用它们来调用 lambda。可以在高级设置窗格中使用启用功能 URL选项启用此功能:

在此输入图像描述

您可以在此处找到有关此功能的更多信息。


小智 7

自 2018 年 11 月 28 日起,您可以使用 HTTP 侦听器创建面向 Internet 的 LoadBalancer,然后将负载均衡器配置为将 Lambda 作为其目标组。

创建负载均衡器后,您可以使用其 DNS 名称作为 HTTP 端点向 Lambda 发送请求。

此处有更多详细信息:https : //aws.amazon.com/blogs/networking-and-content-delivery/lambda-functions-as-targets-for-application-load-balancers/