【问题标题】:How to call a AWS Lambda outside of AWS如何在 AWS 之外调用 AWS Lambda
【发布时间】:2022-04-15 04:23:31
【问题描述】:

这是一个非常基本的问题,但我无法找到它:如何在不使用 EC2 实例或必须 24/7 运行的类似东西的情况下通过 https 调用 lambda。这样我就可以通过 CURL 或每个支持 http 的工具从应用程序调用我的方法。

我发现了一些对一些网关 API 的引用,但我不知道如何调用它们。我还需要设置一些访问权限吗?我可以设置访问控制,还是需要在 lambda 中实现?

【问题讨论】:

  • 通常您希望从 API Gateway 调用您的 Lambda 函数。因此,您希望在 API Gateway 中创建一个 API 并将其连接到您的 Lambda 函数。详情请见here
  • @tesseract 那是我要找的参考资料!

标签: http amazon-web-services aws-lambda


【解决方案1】:

您可以使用APICLI 进行操作 API 方式会比较耗时,但通常更健壮且可维护。

【讨论】:

  • 这个答案有点短,而参考文献很好。 CLI 通常是一个不错的选择,但不是我的用例(我的错)。关于 API 现在我知道 url 的本地部分以及可能的标头和响应,但是域在哪里?我无法发现我需要的所有部分,例如卷曲电话。
  • 在这种情况下,this document 将完成答案。您将能够使用第 8 步中提到的 CURL。
【解决方案2】:

当您访问其 API 时,AWS 并不关心您的代码在哪里运行。

服务端点都可以通过 Internet 访问。

从“内部”访问 API 并没有什么神奇之处,因为从最合乎逻辑的意义上说,当您在 EC2 上运行代码时,这并不是您正在做的事情。

从技术上讲,API 请求总是发送到 Internet。如果您在同一 AWS 区域内访问 AWS 服务,即使您的应用程序和 API 端点之间的流量实际上从未离开 AWS IP 基础设施,您的请求仍会在逻辑上发送到 Internet……但如果您有一个 EC2无法访问 Internet 的实例,那么它也无法访问服务 API 端点。

(如果您配置了 S3 VPC 终端节点,则存在一个例外,但这是您必须配置的,并且它只允许访问同一区域内的 S3 存储桶)。

相同的代码,无需修改,应该可以从内部和外部工作。

【讨论】:

  • 如何找到我的 lambda 的 URL,例如我的浏览器?
  • 您没有提到您是从浏览器调用它。 “您的” Lambda 函数没有自己的 URL,尽管 Lambda 服务端点(发送请求的位置)有……但与其在这里玩 20 个问题,我恭敬地建议您将原始问题编辑为准确地描述你想做什么,谁来做(你?网站的访问者?),以及该功能的实际目的是什么。正如我相信@DamienM 所做的那样,我假设您正在谈论从本地服务器、桌面或其他工作站(不使用浏览器)调用函数。
  • 我修改了我的问题。因为我要求通过 https 调用它,所以我认为它已经足够清楚了。在我看来,我的确切用例并不重要,因为我只想执行我的 cloud 代码。它是否打开一盏灯、进行一些网上银行或开始购买新电视的流程都没有关系。基于此,浏览器应该是最简单的 http 客户端。但是连接可能不可靠,所以我需要确保没有人会每天购买 1k 台电视 :-)
  • 我的意思不是确切地它可以做什么。我只是想尝试获得足够的信息来澄清。来自@tesseract 的评论是正确的——您使用Amazon API Gateway为您的特定功能构建一个自定义HTTPS API 端点。 “通过 HTTPS 调用它”并不意味着它是浏览器或不受信任的,因为与所有 AWS 服务的所有交互are done over http(s) 我以为你在问如何使用在 EC2 以外的地方运行的代码来调用这些。跨度>
【解决方案3】:

我假设您已将 API 网关与 Lambda 连接,并且测试调用按预期工作。您缺少的最后一步是部署。您必须部署 API 网关才能从外部调用它。在 API Gateway 部分中,单击“操作”按钮,然后单击“部署 API”。部署后,您将收到一个 URL,您可以通过 CURL 调用该 URL 来调用您的 Lambda。 我希望这对你有进一步的帮助。

【讨论】:

  • 认证/授权呢?端点应该受到保护。这意味着传入的 HTTP 请求应该包含一些令牌。谁将负责生成此令牌?
【解决方案4】:

您还可以直接为您的 Lambda 分配一个专用 URL,而无需使用 API 网关。

https://docs.aws.amazon.com/lambda/latest/dg/urls-invocation.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 2017-12-07
    相关资源
    最近更新 更多