【发布时间】:2018-06-17 11:04:58
【问题描述】:
我正在使用 lambda@edge + cloudfront 来调整图像大小等。我的来源是 S3 存储桶。
问题:当我尝试通过浏览器通过云端调用 s3 内的对象时,我收到上述错误(图片)。当我只使用一个测试函数(如下)时,它甚至会发生。
我如何调用/查询它:我的 s3 设置为来源,所以我只使用我的云端域名 d5hbjkkm17mxgop.cloudfront.net 并添加 s3 路径 /my_folder/myimage.jpg
使用的浏览器网址:d5hbjkkm17mxgop.cloudfront.net/my_folder/myimage.jpg
exports.handler = (event, context, callback) => {
var request = event.Records[0].cf.request;
console.log(event);
console.log("\n\n\n");
console.log(request);
callback(null, request);
};
我很确定 request 是一个对象 - 不知道为什么会发生这种情况。 如果在 aws 控制台中测试一切正常 - 所以它必须是 cloudfront/lambda 接口错误 - 因为甚至没有调用 lambda(没有生成新的日志条目)。
我也有来自云端的访问错误:
2018-01-08 12:40:20 CDG50 855 62.65.189.38 GET d3h4fd56s4fs65d4f6somxgyh.cloudfront.net /nv1_andrej_fake_space/98f741e0b87877c607a6ad0d2b8af7f3ba2f949d7788b07a9e89453043369196 502 - Mozilla/5.0%2520(X11;%2520Ubuntu;%2520Linux%2520x86_64;%2520rv:57.0)%2520Gecko/20100101%2520Firefox/57.0 - - LambdaValidationError usnOquwt7A0R7JkFD3H6biZp21dqnWwC5szU6tHxKxcHv5ZAU_g6cg== d3hb8km1omxgyh.cloudfront.net https 260 0.346 - TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 LambdaValidationError HTTP/2.0
有什么想法吗?
已编辑:分号
【问题讨论】:
-
CDG50中的CDG表示您访问了巴黎附近的 CloudFront 边缘位置——日志中的 CDG 是对 Charles de Gaulle Airport 的引用——因此对于此事件,您的 Lambda 会登录 CloudWatch可能会在巴黎(或者伦敦或法兰克福),而不是在 us-east-1。日志通常被丢弃在距离为每个单独请求提供服务的边缘最近的区域中。 -
这是查看器请求、源请求、源响应还是查看器响应触发器?
-
抱歉我忘了指定origin request触发器
-
还找到了一些日志(在法兰克福),但它们并没有多大帮助。我只能看到request id、请求的开始、结束和持续时间。
-
console.log("\n\n\n") // missing semicolon here不是有语法错误吗?显示正在运行的实际代码非常重要。
标签: node.js amazon-web-services amazon-s3 aws-lambda aws-lambda-edge