如何在带URL签名的AWS Serverless Image Handler中使用图片优化功能?
以下是针对性的排查和解决步骤:
确保签名覆盖完整请求路径
生成CloudFront签名URL时,必须将包含Thumbor滤镜的完整路径(/<THUMBORFILTERCODE>/<YOUR_PATH>)作为签名的资源对象,而不是仅签名原始图片路径。如果签名只基于/<YOUR_PATH>生成,CloudFront会判定请求路径与签名校验的路径不匹配,直接返回403。检查CloudFront行为配置
确认CloudFront分发中,针对带Thumbor路径的请求(可配置/*通用行为或/<THUMBORFILTERCODE>/*专属行为),已正确关联Serverless Image Handler的Lambda@Edge Origin Request触发器,且该行为的签名验证配置与无滤镜图片的访问行为保持一致(启用签名校验、使用相同的密钥组)。验证Lambda@Edge的路径解析逻辑
检查Serverless Image Handler的Lambda@Edge函数代码,确认它能正确解析路径中的Thumbor滤镜参数,并提取出原始S3图片路径。如果函数无法识别带滤镜的路径格式,可能会错误地返回403。测试签名生成的正确性
使用CloudFront签名工具(如aws cloudfront sign命令)重新生成包含完整Thumbor路径的签名URL,对比之前的签名参数,确保资源路径、过期时间等参数完全匹配请求路径。同时注意S3路径的大小写敏感性,避免因大小写不一致导致的权限校验失败。排查权限配置
确认生成签名的服务具备Secrets Manager中签名密钥的读取权限,同时Lambda@Edge函数拥有访问目标S3桶及相关配置的权限,避免因权限不足触发403错误。
内容的提问来源于stack exchange,提问作者andrewlaycock

