aws lambda@edge + Cloudfront 错误 ()
aws lambda@edge + Cloudfront ERROR ()
我正在使用 lambda@edge + cloudfront 来调整图像大小等。我的来源是 S3 存储桶。
问题: 当我尝试通过浏览器上的云端调用 s3 中的对象时,出现上述错误(图片)。它甚至发生在我只使用测试函数时(如下)。
我如何 call/query 它:我的 s3 被设置为来源,所以我只使用我的云端域名 d5hbjkkm17mxgop.cloudfront.net 并添加 s3 路径 /my_folder/myimage.jpg
使用的浏览器url: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);
};
我很确定请求是一个对象 - 不知道为什么会这样。
如果在 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
有什么想法吗?
已编辑:分号
不要忘记发布 Lambda 的新版本。 保存 是不够的。最后发布的 Lambda 是实际部署的 Lambda,但是您在 aws 控制台中的代码可能不同 window.
编辑: 另一个问题 - 不要忘记在 CloudFront 设置中更改函数版本。您必须 select 绑定到您的 Lambda 的所需 CF 分发。选择该 CF 分布,然后转到 behaviors,选择 edit behaviors。向下滚动,最后一个条目是 Lambda Function Associations(见下图)
Lambda 函数 ARN 中的最后一个数字 是部署的 lambda 的版本号。
我正在使用 lambda@edge + cloudfront 来调整图像大小等。我的来源是 S3 存储桶。
问题: 当我尝试通过浏览器上的云端调用 s3 中的对象时,出现上述错误(图片)。它甚至发生在我只使用测试函数时(如下)。
我如何 call/query 它:我的 s3 被设置为来源,所以我只使用我的云端域名 d5hbjkkm17mxgop.cloudfront.net 并添加 s3 路径 /my_folder/myimage.jpg
使用的浏览器url: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);
};
我很确定请求是一个对象 - 不知道为什么会这样。 如果在 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
有什么想法吗?
已编辑:分号
不要忘记发布 Lambda 的新版本。 保存 是不够的。最后发布的 Lambda 是实际部署的 Lambda,但是您在 aws 控制台中的代码可能不同 window.
编辑: 另一个问题 - 不要忘记在 CloudFront 设置中更改函数版本。您必须 select 绑定到您的 Lambda 的所需 CF 分发。选择该 CF 分布,然后转到 behaviors,选择 edit behaviors。向下滚动,最后一个条目是 Lambda Function Associations(见下图)
Lambda 函数 ARN 中的最后一个数字 是部署的 lambda 的版本号。