1

我在 api 网关后面实现了两个 lambda(我们称之为 A 和 B)。假设 A 是从“外部”调用的,B 是从外部调用的,也是从 A 调用的。我还实现了 lambda Authorizer(基于令牌;认知)作为身份验证层。一切都按预期工作。有没有办法绕过 B 的授权程序,仅用于来自 A 的呼叫?
Tnx

4

1 回答 1

0

对于完全相同的问题,我过去曾探索过多种可能性。

将呼叫更改为lambda:Invoke

假设您正在为您的微服务生成一些客户端代码,您可以创建这些客户端的两个版本:

  • 外部通过 HTTP API 调用您的服务
  • 内部使用lambda:Invoke操作直接到您的微服务。

创建镜像 VPC 私有 API

如果您使用 CDK(或类似替代方案)部署基础架构,这可能是可行的。本质上,您将现有 API 保留在原处,并创建另一个没有授权者的内部版本。(请注意,根据项目的性质,您可能仍希望进行某种授权过程。)

从此时起,您可以将内部 HTTP API 的端点作为环境变量传递给 Lambda,并让它们调用它。

您可以在此处找到有关此的更多信息。作为一项额外福利,您在与 API Gateway 通信时可能会获得更低的延迟,因为通过 VPC 端点的流量只会流经 AWS 网络,而不是在互联网上流出然后再流入。

将您的工作负载迁移到 ECS

这可能是您项目的一个重大变化,但值得一提。

您可以使用 ECS 创建真正的微服务。您可以在 VPC 的私有子网中运行这些服务。为了不必自己处理 IP 地址,您可以探索多种选择:

  • 有一个 VPC 内部的 Route53 托管区域(更多信息请点击此处)。在此处查看有关 ECS 服务发现的更多信息
  • 在您的 VPC 的私有子网中创建网络负载均衡器并将其端点传递给您的服务。
于 2022-01-23T15:42:55.223 回答