我正在使用CloudFront、S3、API Gateway和Lambda构建动态图像优化器,但现在我仍在让我的CloudFront源回退到我的 s3 自定义错误路径。
这是我正在寻找的流程:
- 从CloudFront请求图像
- 不存在/不存在?检查S3来源。
- 不存在/不存在?重定向到 hellorld.html
- 做任何事情(这里的目标,甚至是第三步,是让重定向触发一个Lambda,它会调整图像的大小并将其返回到S3、CF和浏览器)
如果我尝试通过CloudFront访问不存在的对象,它会正确地遵循提供的来源,但如果该对象在S3中不存在,则会给出Access Denied
如下所示的经典XML 响应。My Bucket 绝对具有正确的写入权限,并且具有公共读取权限(目前)
这是我的CF起源/行为。最初我只有默认来源和一个默认行为,这正是我所需要的,在我摆弄的过程中,我添加了一个顶层和一个深层resizer/*
。
这是我的 s3 静态网站托管部分和重定向规则
我觉得我什至不需要重定向规则,因为出错时应该重定向到hellowrld.html
(不是拼写错误),这目前只是一个相当空白的测试 html 页面。
任何帮助将不胜感激!我知道这个 otf 图像调整器是一个非常常见的用例,用于在找不到对象时触发Lambda,但我找不到任何将CloudFront放在API Gateway / Lambda前面的S3前面的示例