AWS CloudFront 到 S3 Post 支持吗?

AWS CloudFront to S3 Post Support?

第三方程序需要从我们的 CDN 访问静态文件。问题是,他们不是通过 GET 获取这些文件,而是通过 POST.

发出此请求

测试此 POST => cdn.company.com/somefile 时,我得到 -

<?xml version="1.0" encoding="UTF-8"?>
<Error>
    <Code>MethodNotAllowed</Code>
    <Message>The specified method is not allowed against this resource.</Message>
    <Method>POST</Method>
    <ResourceType>OBJECT</ResourceType>
</Error>

CloudFront 行为设置为支持所有方法-

并且CORS配置包括POST方法-

<?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>2592000</MaxAgeSeconds>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

不确定还需要做什么。我怀疑 S3(正确地)假定 POST 正在尝试向存储桶添加信息,而它应该只是 return 路径中的文件。 cloudfront 到 s3 这可能吗?我是否需要将请求转发给将下载文件的 lambda?

S3 仅支持 GETHEAD,因此您无法发送 POST 请求(参见 )。

您可以编写一个 lambda Edge 函数,在将请求 POST 方法发送到源 (s3) 之前将其替换为 GET 方法。无需在本地下载文件。