限制 Lambda 函数 URL 访问 CloudFront

问题描述 投票:0回答:4

AWS 最近发布了 Lambda 函数 URL 功能,该功能允许通过 URL 调用函数。

我希望允许通过 URL 调用我的函数,但只能通过 CloudFront。

我不希望人们能够绕过CloudFront并直接调用该函数。

有办法配置吗?我知道我可以通过将身份验证类型设置为

AWS_IAM
来限制函数 URL,但不清楚如何允许 CloudFront 调用它。

amazon-web-services aws-lambda amazon-iam amazon-cloudfront
4个回答
5
投票

目前,我看到的唯一选项与如何以仅限 CloudFront 访问的方式保护 ALB

  1. 配置 CloudFront 以将自定义 HTTP 标头添加到发送到 Application Load Balancerlambda 函数 URL的请求中。

  2. Application Load Balancer Lambda 配置为仅forward process 包含自定义 HTTP 标头的请求。

我对使用 lambda 函数 URL 时可能不起作用的方法的看法:

  • IAM
    auth
    (因为我看不出有什么办法可以签署这些来自 CloudFront 的请求,也许将来当 lambda 函数 URL 成为像 S3-origins 这样的一等公民时,情况会发生变化)
  • 通过安全组限制访问(因为 lambda func URL 没有 SG)

1
投票

与 AWS 支持人员确认,目前无法执行此操作:“[使用 CloudFront 的当前设计,CloudFront 无法将 IAM 身份验证的请求中继到 Lambda URL 源。”有一个针对此的功能请求(但他们没有提供实施和发布的时间表)但希望他们提供一个类似于 CloudFront 通过 Origin Access Identity 与 S3 集成的直接解决方案。


0
投票

对此有一个解决方案,但有点有趣的是,它使用边缘 lambda 来签署请求,然后再允许它传递到 lambda URL 源。以下是解决方案的两个链接:

  1. AWS官方解决方案
  2. 达里奥的博文

不过,我觉得很烦人的是,无法像为 S3 源那样简单地将源访问身份 (OAI) 添加到 CloudFront 的 lambda URL 源。我很想听听 AWS 人员的意见,了解他们为什么不直接将此解决方案从 S3 复制/粘贴到 Lambda...


-3
投票

这就是我为使其在我这边发挥作用所做的事情:

  1. 前往CloudFront页面

  2. 单击创建新发行版

  3. 源域部分,您必须粘贴您的 lambda 函数 URL

    Origin domain setting

  4. 确保根据您的 lambda 函数消耗的内容调整缓存策略

    Caching policy

您可能想要创建一个专用策略,希望缓存键依赖于查询字符串cookies等... 对于我的用例,我创建了一个新策略来考虑查询字符串

© www.soinside.com 2019 - 2024. All rights reserved.