S3 POST 向 S3 请求,响应为 405

S3 POST request to S3 with response 405

为了将我的一个存储桶用作静态网站托管,我对 S3 进行了以下 CORS 配置:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>POST</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
    </CORSRule>
</CORSConfiguration>

然后我有以下编辑重定向规则:

<RoutingRules>
    <RoutingRule>
    <Condition>
        <KeyPrefixEquals>abc</KeyPrefixEquals>
    </Condition>
    <Redirect>
        <HostName>myec2instance.com</HostName>
    </Redirect>
</RoutingRule>

我想做的是当 S3 收到一个 POST 到 /abc 时,将请求和请求正文重定向到我的 ec2 实例。重定向规则工作正常(我能够通过将 POST 切换到 GET 请求来测试它)但是出于任何原因,当请求是 POST 时,S3 返回 HTTPResponse 405。有什么想法吗?

这与 CORS 无关——它是 S3 本身。 S3 网站端点仅为 GETHEAD 配备。在检查重定向规则之前应拒绝任何其他内容。

Website Endpoint

Supports only GET and HEAD requests on objects.

http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteEndpoints.html

如果您想使用 POST 请求 S3,您需要在浏览器中使用根对象,通过创建 POSTPolicy 来获取 S3 authentication

可以参考Browser-Based Upload using HTTP POST