我有一个CloudFront发行版,其来源设置为s3网站终结点(在s3上提供静态Web应用程序)
现在,我在s3上的Web应用程序需要一些用户信息,这些信息仅通过iframe的POST请求提供。
我认为可以在ViewerRequest阶段使用Lambda @ edge函数来捕获用户信息,然后将请求修改为GET并将令牌附加到源,然后再请求源,从而使s3能够服务。
但是我似乎无法使其正常工作。这有可能吗?
答案 0 :(得分:1)
您无法在Lambda @ Edge触发函数中更改HTTP方法,因为它是只读的。
方法(只读)
查看器请求的HTTP方法。
您可以 要做的是使用AWS开发工具包从触发函数中向S3发送请求,然后使用检索到的对象内容到generate a response directly from the trigger function。
请注意,您可以生成limits的响应大小-对于“查看器请求”,该大小为40KB。对于原始请求,它是1MB。
当然,您不一定需要从S3获取内容。您可以从任何地方获取它,也可以将其嵌入到函数本身中。
使用此设置,由于该函数正在生成响应,因此CloudFront永远不会将实际的POST
请求转发到S3。