我在Cloudfront中使用lambda @ edge完成了重定向。
如何在lambda @ edge的某些条件下击回原点?
这可能吗?
答案 0 :(得分:1)
在请求触发器中,如果要将控制权返回给CloudFront并允许它继续正常处理请求,则使用原始请求调用回调并返回。
return callback(null, event.Records[0].cf.request);
如果您在处理程序中先前捕获了请求对象...
const request = event.Records[0].cf.request;
...然后你可以退回那份副本:
return callback(null, request);
请注意,您可以在不使用callback()
的情况下调用return
,但使用上面显示的样式可确保处理程序函数立即退出,并且不会执行此点以下的代码。
如果您处于请求触发器中,并且回调的第二个参数看起来像请求(而不是响应),则CloudFront将继续处理并假设您不想生成响应。请求将被发送到原点。
如果您在原始请求触发器中修改请求对象,然后如上所示返回它,则会修改CloudFront发送到源的内容,或者在某些情况下甚至可以更改请求将发送到哪个源,如果您的分配有多种来源。