首页 > 解决方案 > 从 AWS Lambda 调用 AWS API Gateway

问题描述

场景是:

  1. 我有一个 Rest api 网关,它在触发时会调用一个处理请求并返回响应的 lambda。
  2. 这个 api 端点是公共的。
  3. 我有另一个 lambda,它将调用此 API 网关/端点并从中获取响应。

现在查询:

  1. 我直接调用 api 的调用 url,就像任何其他 api 一样。那么这是正确的方法吗?
  2. 当我将调用 url 放在浏览器地址栏中时,它给出了缺少的身份验证令牌。
  3. 如何在调用 lambda 时实际调用 url,我的意思是如何传递令牌;在 Node.js 中?

谢谢

标签: aws-lambdaaws-api-gatewayaws-sdk-nodejs

解决方案


好吧,这些问题已经足够广泛了。我尽量回答。

首先,您所遵循的 Rest API -> Lambda 的设计,它被称为“集成类型”是“Lambda 函数”并使用“使用 Lambda 代理集成”。

请查看此处的文档此处的示例

通读文档相信你会理解这个模型的进出。在高层次上,这个模型 API 网关正在传递请求和响应,而您 (Lambda) 将处理一切。

在此处输入图像描述 在此处输入图像描述

问题1: 我是直接调用api的invoke url,和其他api一样。那么这是正确的方法吗?

[答]这个模型没有问题。是的,您可以将此 API(Lambda 代理)称为任何 Rest API。

问题 2: 当我将调用 url 放在浏览器地址栏中时,它给出了缺少身份验证令牌

[Answer]请检查您的API的设置。如下图所示,我的 api 使用 Cognito 作为授权方。这意味着消费者在调用 API 时需要提供“令牌”(例如 oAuth2)。您可以使用Lambda 授权者或Cognito授权者。由你决定。如果您不需要任何授权人,您可以将其设置为 NONE,这样您的 API 就不需要身份验证令牌。

简而言之,您现在收到的消息意味着您的 API 有一个“授权者”,并且您没有随请求一起发送令牌。

在此处输入图像描述

问题3: 调用lambda时如何实际调用url,我的意思是如何传递token;在 Node.js 中?

这很常见。您可以像“Node.js 中的 oAuth2”一样在 Google 上搜索它,它会为您提供大量示例

https://resources.infosecinstitute.com/securing-web-apis-part-ii-creating-an-api-authenticated-with-oauth-2-in-node-js/

https://stormpath.com/blog/talking-to-oauth2-services-with-nodejs

我希望它有所帮助。否则,请留下您的意见和问题。

谢谢,


推荐阅读