从 AWS Lambda 调用 AWS API Gateway

Yus*_*suf 6 aws-lambda aws-api-gateway aws-sdk-nodejs

场景是:

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

现在的查询:

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

谢谢

Ngh*_* Do 5

嗯,问题相当广泛。我正在尝试尽可能多地回答。

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

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

通过阅读该文档,我相信您会了解该模型的进出。在较高级别上,此模型 API 网关正在传递请求和响应,您(Lambda)将处理所有事情。

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

问题1: 我像任何其他api一样直接调用api的invoke url。那么这是正确的做法吗?

【答】这个模型没有什么问题。是的,您可以将此 API(Lambda 代理)作为任何 Rest API 调用。

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

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

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

在此输入图像描述

问题3: 如何实际调用lambda中的url,我的意思是如何传递tokens;在 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

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

谢谢,