【问题标题】:Custom redirection rules on S3 returns 403 when using CloudFront使用 CloudFront 时,S3 上的自定义重定向规则返回 403
【发布时间】:2018-01-26 21:03:58
【问题描述】:

我在 S3 上的存储桶有一个自定义重定向规则:

<RoutingRules>
  <RoutingRule>
    <Condition>
      <KeyPrefixEquals/>
      <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
    </Condition>
    <Redirect>
      <Protocol>https</Protocol>
      <HostName>example2.com</HostName>
      <ReplaceKeyPrefixWith>services/create?key=</ReplaceKeyPrefixWith>
      <HttpRedirectCode>307</HttpRedirectCode>
    </Redirect>
  </RoutingRule>
</RoutingRules>

而且我的存储桶有一个适当的策略:

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "PublicReadForGetBucketObjects",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::example.com/*"
        }
    ]
}

当我通过其内部 url http://example.com.s3-website-us-east-1.amazonaws.com 访问它并正确地将我重定向到我的其他服务器时,这工作正常。

但是,它不适用于我的 CloudFront 设置。当我尝试直接访问它时 (http://example.com/images/dummy.jpg),我收到 403 AccessDenied

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-cloudfront


    【解决方案1】:

    显然,当使用默认 S3 存储桶作为源时 - 它不会遵守重定向规则。

    默认情况下,它会尝试使用:

    example.com.s3.amazonaws.com,但您应该将其强制为自定义来源:

    改为example.com.s3-website-us-east-1.amazonaws.com

    一旦我强迫它,它就开始起作用了。

    【解决方案2】:

    如果您收到带有标准 S3 重定向的 403,请确保指向根目录中的文件:

    【讨论】:

      猜你喜欢
      • 2021-04-21
      • 2020-11-18
      • 2019-05-27
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-13
      • 2015-02-27
      相关资源
      最近更新 更多