Подтвердить что ты не робот

Поддерживает ли Amazon S3 символические ссылки?

У меня есть объект, к которому я хотел бы обратиться с использованием разных ключей без фактического копирования самого объекта, например, символическая ссылка в Linux. Предоставляет ли Amazon S3 такую вещь?

4b9b3361

Ответ 1

S3 не поддерживает понятие символической ссылки, где один ключ объекта рассматривается как псевдоним для другого ключа объекта. (Вероятно, вы слышали это раньше: S3 не является файловой системой. Это хранилище объектов).

Если вы используете статическую функцию хостинга веб-сайтов, есть частичная эмуляция этой возможности с перенаправлением на уровне объекта:

http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html

Это приводит к тому, что запросы "object-a" приветствуются с ответом 301 Moved Permanently с URL-адресом "object-b" в заголовке Location:, который выполняет аналогичную цель, но, конечно, другой. Он работает только в том случае, если запрос поступает на конечную точку сайта (а не конечную точку REST).

Если вы используете обратный прокси (haproxy, nginx и т.д.) в EC2 для обработки входящих запросов и пересылки их в ведро, тогда, конечно, у вас есть опция на прокси-уровне переписывания URL-адреса запроса перед пересылкой на S3, поэтому вы можете перевести входящий запрос на все, что вам нужно, чтобы представить на S3. Насколько практично это зависит от вашего приложения и мотивации, но это одна из стратегий, которые я использую для изменения того, где в конкретном ведре появляется объект, по сравнению с тем, где он фактически хранится, что позволяет мне переписывать пути на основе других атрибутов в запросе.

Ответ 2

У меня был аналогичный вопрос, и мне было необходимо решение, которое я опишу ниже. Хотя S3 не поддерживает символические ссылки, вы можете сделать это следующим образом:

echo "https://s3.amazonaws.com/my.bucket.name/path/to/a/targetfile" > file
aws s3 cp file s3://my.bucket.name/file
wget $(curl https://s3.amazonaws.com/my.bucket.name/file)

То, что это на самом деле делает, это получение содержимого файла, который на самом деле является только указателем на целевой файл, а затем передача его в wget (curl также может использоваться для перенаправления на файл вместо wget).

Это действительно просто работа, хотя это не настоящая символическая ссылка, а скорее творческое решение для имитации символических ссылок.

Ответ 3

Символьных ссылок нет, но один и тот же объект на несколько ключей, возможно.

Пожалуйста, обратитесь к ответу Родриго на Amazon S3 - Несколько ключей для одного объекта

Если вы используете сайт, обслуживающий S3, вы можете сделать это через заголовок x-amz-website-redirect-location

Если вы не используете обслуживание веб-сайта, вы можете создать свой собственный заголовок (x-amz-meta-KeyAlias) и обработать его вручную.