【问题标题】:How to hit the cloudfront origin from lambda@edge?如何从 lambda@edge 访问云端起源?
【发布时间】:2018-10-12 19:51:39
【问题描述】:

我已经在 Cloudfront 中使用 lambda@edge 完成了重定向。

如何在特定条件下从 lambda@edge 回击原点?

这可能吗??

【问题讨论】:

  • 当你说“如何回击原点”时,不清楚你的意思。请编辑问题以更清楚地描述你想要做什么。还显示您的代码。听起来您可能会问,在源请求触发器中,如何有时重定向,而其他时间允许 CloudFront 继续处理并将请求发送到源......但不清楚。
  • 是的,Michael ur rt,这就是我想要做的。我们能做到吗,有可能吗?
  • 毗湿奴,即使有答案,请编辑问题以更清楚地描述您要做什么。

标签: amazon-web-services aws-lambda amazon-cloudfront aws-lambda-edge


【解决方案1】:

在请求触发器中,如果您想将控制权返回给 CloudFront 并允许其继续正常处理请求,请使用原始请求调用回调并返回。

return callback(null, event.Records[0].cf.request);

如果您之前在处理程序中捕获了请求对象...

const request = event.Records[0].cf.request;

...那么您可以返回该副本:

return callback(null, request);

请注意,您可以在不使用return 的情况下调用callback(),但使用上面显示的样式可确保处理函数立即退出,并且不会执行低于此点的代码。

当您在请求触发器中并且回调的第二个参数看起来像请求(不是响应)时,CloudFront 会继续处理并假定您不想生成响应。请求将被发送到源。

如果您修改源请求触发器中的请求对象,然后如上所示将其返回,这会修改 CloudFront 发送到源的内容,或者在某些情况下甚至可以更改请求将发送到的源,如果您的分布有多个来源。

【讨论】:

    猜你喜欢
    • 2020-06-27
    • 2018-03-12
    • 2020-06-02
    • 2019-08-25
    • 1970-01-01
    • 2023-03-05
    • 2021-09-28
    • 2019-04-11
    • 2020-02-29
    相关资源
    最近更新 更多