Поддержка AWS CloudFront для S3 Post? - PullRequest
0 голосов
/ 15 декабря 2018

Сторонней программе необходим доступ к статическим файлам из нашего 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для поддержки всех методов -

cache behavior

И конфигурация 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 пытается добавить информацию в корзину, где он должен просто вернуть файл по пути.Возможно ли это с cloudfront до s3?Нужно ли пересылать запрос в лямбду, которая вместо этого загрузит файл?

1 Ответ

0 голосов
/ 15 декабря 2018

S3 поддерживает только GET и HEAD, поэтому вы не можете отправить запрос POST (см. related ).

Вы можете написать лямбда-функцию Edge, которая заменяетметод запроса POST с GET перед отправкой его в источник (s3).Нет необходимости скачивать файл локально.

...