aws-lambda - 如何在内部 lambda 调用中绕过授权

标签 aws-lambda lambda-authorizer

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

最佳答案

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

将调用更改为 lambda:Invoke

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

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

创建一个镜像的 VPC 私有(private) API

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

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

您可以找到更多相关信息,here .作为一项福利,您在与 API 网关通信时可能会获得更低的延迟,因为通过 VPC 端点的流量只会流经 AWS 网络,而不是在互联网上流出并返回。

将您的工作负载转移到 ECS

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

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

  • 有一个 VPC 内部 Route53 托管区域(更多信息 here)。查看有关 ECS 服务发现的更多信息 here
  • 在您的 VPC 的私有(private)子网中创建网络负载均衡器,并将它们的端点传递给您的服务。

关于aws-lambda - 如何在内部 lambda 调用中绕过授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70823528/

相关文章:

amazon-web-services - 由于配置错误,执行失败:API Gateway 无权承担提供的角色 arn:aws:iam::XXXXXXXXXXXX:role/auth

amazon-web-services - 401 的自定义响应 Lambda 授权器

amazon-web-services - AWS Lambda 函数调用 aws 服务超时

node.js - 使用 Node Js 的 AWS Lambda 在 http.request() 上给出 "connect ETIMEDOUT"

amazon-web-services - 如何统计CloudFormation模板生成的资源数量?

amazon-web-services - 无法制作 S3 对象,使用 Lambda 从另一个账户上的 S3 存储桶复制,公共(public)

node.js - Node ImageMagick 在本地成功,但在 AWS Lambda 中失败

aws-api-gateway - 带有 Lambda 授权程序的 AWS API 网关