AWS CloudFront到S3的后期支持?

时间:2018-12-15 15:48:40

标签: amazon-web-services amazon-s3 aws-lambda amazon-cloudfront aws-lambda-edge

第三方程序需要从我们的CDN访问静态文件。问题是,它们不是通过GET来获取这些文件,而是通过POST发出此请求。

测试此function evenNumbers(array, number) { var newarr = [], i = array.length; while (i-- && newarr.length < number) { if (array[i] % 2 === 0) { newarr.unshift(array[i]); } } return newarr; } console.log(evenNumbers([-22, 5, 3, 11, 26, -6, -7, -8, -9, -8, 26], 2)); console.log(evenNumbers([], 2));时,我得到了-

POST => cdn.company.com/somefile

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

cache behavior

并且CORS配置包括POST方法-

<?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>

不知道还需要做什么。我的怀疑是S3(正确)假设POST正在尝试将信息添加到存储桶中,在存储桶中它应该仅将文件返回到路径中。 s3的Cloudfront是否可能?我是否需要将请求转发到Lambda,该Lambda会下载文件?

1 个答案:

答案 0 :(得分:0)

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

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