AWS 最近发布了 Lambda 函数 URL 功能,该功能允许通过 URL 调用函数。
我希望允许通过 URL 调用我的函数,但只能通过 CloudFront。
我不希望人们能够绕过CloudFront并直接调用该函数。
有办法配置吗?我知道我可以通过将身份验证类型设置为
AWS_IAM
来限制函数 URL,但不清楚如何允许 CloudFront 调用它。
目前,我看到的唯一选项与如何以仅限 CloudFront 访问的方式保护 ALB:
配置 CloudFront 以将自定义 HTTP 标头添加到发送到 Application Load Balancerlambda 函数 URL的请求中。
将 Application Load Balancer Lambda 配置为仅forward process 包含自定义 HTTP 标头的请求。
我对使用 lambda 函数 URL 时可能不起作用的方法的看法:
与 AWS 支持人员确认,目前无法执行此操作:“[使用 CloudFront 的当前设计,CloudFront 无法将 IAM 身份验证的请求中继到 Lambda URL 源。”有一个针对此的功能请求(但他们没有提供实施和发布的时间表)但希望他们提供一个类似于 CloudFront 通过 Origin Access Identity 与 S3 集成的直接解决方案。
这就是我为使其在我这边发挥作用所做的事情:
前往CloudFront页面
单击创建新发行版
在源域部分,您必须粘贴您的 lambda 函数 URL
确保根据您的 lambda 函数消耗的内容调整缓存策略
您可能想要创建一个专用策略,希望缓存键依赖于查询字符串、cookies等... 对于我的用例,我创建了一个新策略来考虑查询字符串