Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS S3静态网站托管的路由规则_Amazon Web Services_Amazon S3 - Fatal编程技术网

Amazon web services AWS S3静态网站托管的路由规则

Amazon web services AWS S3静态网站托管的路由规则,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我已经成功地将我的S3存储桶配置为一个静态网站,如果在存储桶中找不到文件,还可以重定向到lambda函数 <RoutingRules> <RoutingRule> <Condition> <KeyPrefixEquals/> <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals> </Condition&g

我已经成功地将我的S3存储桶配置为一个静态网站,如果在存储桶中找不到文件,还可以重定向到lambda函数

<RoutingRules>
  <RoutingRule>
    <Condition>
      <KeyPrefixEquals/>
      <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
    </Condition>
    <Redirect>
      <Protocol>https</Protocol>
      <HostName>mylambda.execute-api.us-east-1.amazonaws.com</HostName>
      <ReplaceKeyPrefixWith>/?key=</ReplaceKeyPrefixWith>
      <HttpRedirectCode>307</HttpRedirectCode>
    </Redirect>
  </RoutingRule>
</RoutingRules>

404
https
mylambda.execute-api.us-east-1.amazonaws.com
/?钥匙=
307
如果我使用静态网站的http url,它可以正常工作

但是如果我使用https bucket url,它就不起作用了。它返回AccessDenied

我还尝试添加cloudfront,问题也是一样的。 给我相同的访问拒绝

就像不使用https一样吗?

第一个url:

mybucket.s3网站-us-east-1.amazonaws.com/some-file.gif

这是一个很好的例子。它只支持HTTP,不支持HTTPS。写:

网站端点不支持HTTPS或Amazon S3访问点

第二个url:

s3.amazonaws.com/mybucket/some-file.gif

仍然在弗吉尼亚州北部地区使用。使用这些(即服务端点):

以编程方式连接到AWS服务

它们都是HTTP和HTTPS

因此,回答您的问题时,https:
//mybucket.s3-website-us-east-1.amazonaws.com/some-file.gif失败,因为网站端点不支持https

失败,因为它用于编程访问,而不是使用浏览器或curl。但是,如果将对象设置为公共,则应该能够访问它们


对于CloudFront,您需要提供更多信息或创建新问题。这取决于您如何设置CF disto和bucket。

ok,因此无法使用s3端点进行设置。我认为cloudfront可以工作,但它可能会导致无限循环,因为错误页面将被缓存。对于网站端点,cloudfront通常用于提供https。没有循环。我建议针对cloudfront创建一个新问题,您正在设置该问题,以及问题是什么。感谢您的建议@Marcin这里是后续问题:@shammy没问题,谢谢您的链接。如果你对答案满意,接受它将不胜感激。