Загружать на S3 через CloudFront через подписанные URL-адреса? - PullRequest
0 голосов
/ 13 марта 2019

У меня CloudFront с использованием источника S3. Я хотел бы иметь возможность создавать подписанные URL-адреса для загрузки значений в S3, по возможности через дистрибутив CloudFront.

Я просматривал документы, но ничего не нашел по этому поводу. Я думаю, что пока параметры запроса передаются, но так ли это?

Не дубликат этого: я использую подписанные URL.

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Я бы предположил, что пока параметры запроса передаются, но так ли это?

Не совсем. CloudFront можно настроить для прохождения через параметры строки запроса, но он по-прежнему не будет поддерживать этот вариант использования, поскольку CloudFront вставляет заголовок X-Amz-Cf-Id в запрос, который он отправляет на S3. Поскольку заголовок начинается с X-Amz-*, S3 требует, чтобы он был подписан ... но это невозможно, поскольку у вас нет возможности узнать его значение.

Идентификатор доступа к источнику CloudFront может быть разрешен для записи в корзину, но это также грязно, потому что тогда любой путь, из которого CloudFront может считываться, также может быть записан - подписанные URL-адреса CloudFront разрешают «доступ» - любой тип доступа CloudFront имеет - и не может быть настроен только для чтения, если CloudFront через OAI разрешено выполнять запись в корзину.

Ускорение передачи - лучшее решение, поскольку оно использует сеть CloudFront для транспорта, но понимает собственные подписанные URL-адреса S3. Ваш аргумент, связанный с желанием использовать доменное имя, а не имя сегмента в функции Lambda, подписывающей URL-адреса, разрушается ... потому что вы не можете подписать URL-адрес S3 в любом событии, фактически не зная имя сегмента.

0 голосов
/ 13 марта 2019

Причина заключается в том, чтобы обеспечить доступ с низкой задержкой для загрузки файлов пользователем в центральное хранилище со всего мира?В этом случае я бы рекомендовал вместо этого использовать S3 Transfer Acceleration.

Возможно, вы захотите использовать Transfer Acceleration для корзины по разным причинам, включая следующие:

  • У вас есть клиенты, которые загружают данные в централизованное хранилище со всего мира.

  • Вы регулярно переносите гигабайты в терабайты данных на разных континентах.

  • Вы не можете использовать всю доступную пропускную способность через Интернет при загрузке в Amazon S3.

https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html

Amazon S3ускорение передачи равно при использовании Cloudfront под сценой.

Transfer Acceleration использует преимущества глобальных распределенных местоположений Amazon CloudFront.Когда данные поступают на периферию, они направляются в Amazon S3 по оптимизированному сетевому пути.

...