【问题标题】:Invoke a AWS Lambda function by a http request通过 http 请求调用 AWS Lambda 函数
【发布时间】:2015-07-04 19:30:30
【问题描述】:

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

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

【问题讨论】:

  • 您能多解释一下您的用例吗?从哪里调用? curl?浏览器?默认情况下,invoke 的调用类型为RequestResponse,它本质上是一个 HTTP 请求。您甚至可以通过链接查看请求语法。
  • 我们为此构建了一些工具。都是公开的。随意分叉它。 github.com/bespoken/bstpygithub.com/bespoken/bst.

标签: amazon-web-services aws-lambda


【解决方案1】:

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

我使用 POSTMAN 对此进行了测试:

curl -X POST https://lambda.us-west-2.amazonaws.com/2015-03-31/functions/Function_NAME/invocations

链接: Invoke Syntax

【讨论】:

  • 您能分享一下如何对请求进行 sigv4 签名吗?您是如何生成授权标头的?
  • @BinodKarunanayake 这很复杂。如果可以,最好使用 AWS 开发工具包。但无论如何,这里的细节:docs.aws.amazon.com/general/latest/gr/…
  • 我认为你可以添加 X-Amz-Invocation-Type: <InvocationType> 标头以使用特定的调用类型进行调用,如果你这样做的话,就像一个附录一样。
【解决方案2】:

从 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/

【讨论】:

    【解决方案3】:

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

    或者您可以从以下屏幕进行设置

    或者从 AWS API Gateway Web 控制台创建它。


    您还可以探索在客户端、移动或网络应用程序中使用 SDK 按需调用它。更多信息here

    【讨论】:

    • 但是一旦你设置了这个 API 网关,你是怎么做到的呢?在 stage/prod 下,我得到了所有可能的 HTTP METHOD 和它们的通用 URL。点击 URL 会得到{"message":"Missing Authentication Token"}
    • 新的应用负载均衡器现在可以调用 Lambda 函数
    • 您可以使用 Amazon 开发工具包调用 Lambda 函数,该函数在后台使用 HTTP 访问 AWS Lambda API。这样的请求需要安全凭证才能正确签名。
    • 小心“X 是做 Y 的唯一方法”之类的陈述。即使发布了答案,您也可以从 SNS 触发 lambda,而后者又可以从 HTTP 触发
    【解决方案4】:

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

    Go to your lambda function and click the trigger section

    【讨论】:

      【解决方案5】:

      是的,你可以。有一个 API:Invoke

      【讨论】:

      • 你可以用“但你需要sign it”来澄清。
      猜你喜欢
      • 2017-04-24
      • 1970-01-01
      • 2015-10-27
      • 2018-05-04
      • 2019-02-11
      • 1970-01-01
      • 2019-01-09
      • 1970-01-01
      • 2018-02-03
      相关资源
      最近更新 更多