使用 CloudFront 时 S3 returns 403 上的自定义重定向规则
Custom redirection rules on S3 returns 403 when using CloudFront
我在 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.
显然,当使用默认 S3 存储桶作为源时 - 它不会遵守重定向规则。
默认情况下,它会尝试使用:
example.com.s3.amazonaws.com
,但你应该强制它到自定义来源:
example.com.s3-website-us-east-1.amazonaws.com
代替。
一旦我强迫它,它就开始起作用了。
如果您收到带有标准 S3 重定向的 403,请确保指向根目录中的文件:
我在 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.
显然,当使用默认 S3 存储桶作为源时 - 它不会遵守重定向规则。
默认情况下,它会尝试使用:
example.com.s3.amazonaws.com
,但你应该强制它到自定义来源:
example.com.s3-website-us-east-1.amazonaws.com
代替。
一旦我强迫它,它就开始起作用了。
如果您收到带有标准 S3 重定向的 403,请确保指向根目录中的文件: