我正在使用CloudFront、 s3 、API网关和Lambda构建一个正在运行的映像优化器,但现在我仍在将CloudFront原点返回到s3自定义错误路径。
下面是我要找的流程:
如果我试图通过CloudFront访问一个不存在的对象,它将正确地遵循所提供的原点,但如果该对象不存在于S3中,则会给出如下所示的经典Access Denied XML响应。我的桶绝对有正确的写权限,并且有公共读取权限(暂时)。

这是我的CF起源/行为。最初,我只有一个默认的起源,一个默认的行为,这是我真正需要的,在我的摆弄中,我添加了一个顶层和一个深度的resizer/*级别。


下面是我的s3静态网站托管部分和重定向规则

我觉得我甚至不应该需要重定向规则,因为错误时应该重定向到hellowrld.html (而不是错误),这只是目前相当空白的测试html页面。
任何帮助都将不胜感激!我知道这个otf图像调整器是一个非常常见的用例,用于在没有找到对象的情况下触发Lambda,但是我找不到任何示例,它们将CloudFront放在S3前面的API 前面。
发布于 2018-04-05 11:05:30
似乎您在上述重定向规则中添加了错误的http错误代码。应该是403和307。我添加了完全重定向规则,您可以使用:
<RoutingRules>
<RoutingRule>
<Condition>
<KeyPrefixEquals/>
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<Protocol>https</Protocol>
<HostName>'your_api_gateway_url'</HostName>
<ReplaceKeyPrefixWith>prefix_name'?key=</ReplaceKeyPrefixWith>
<HttpRedirectCode>307</HttpRedirectCode>
</Redirect>
</RoutingRule>
</RoutingRules>https://stackoverflow.com/questions/49661533
复制相似问题