Как перенести изображения, хранящиеся в S3, после изменения каталога хранилища с помощью библиотеки AR C (Elixir) - PullRequest
1 голос
/ 10 января 2020

Я использую библиотеку ar c / arc_ecto для хранения носителей на S3.

Недавно мне пришлось сменить каталог хранения. Поэтому я изменил функцию «storage_dir», чтобы она соответствовала моему новому пути к S3 следующим образом:

def storage_dir(_version, {_file, %Media{} = scope}) do
  "/models/medias/#{scope.id}/"
end

И теперь, когда это сделано, все вновь созданные носители хранятся в новом каталоге, и я могу получить их правильно, но невозможно получить носители, хранящиеся в старом каталоге. Библиотека ar c генерирует URL, который использует новый каталог хранения, и я не могу получить носители из старого.

Кто-нибудь знает, что я могу сделать, чтобы перенести мои носители из старого каталога в новый? Можно ли сделать это с помощью Ar c ecto или мне следует использовать другую библиотеку, связанную с S3?

Большое спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 24 января 2020

Вы можете использовать https://hexdocs.pm/ex_aws_s3/ExAws.S3.html для копирования отдельных объектов.

Если вы копируете файлы в новое место, поскольку Ar c ожидает их, это должно сработать. Однако я бы посоветовал не полагаться на Ar c для ключей объекта, а просто хранить ключи в базе данных. Это значительно облегчит любое будущее изменение местоположения объекта.

0 голосов
/ 10 января 2020

Один из способов сделать это - через онлайн S3 Management Console . Вы можете выбрать файлы, выбрать «Вырезать» или «Копировать» из меню «Действия», перейти к папке назначения и «Вставить».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...