1

Мы хранили все медиафайлы сонаты в локальном каталоге раньше, но теперь мы перешли на AWS S3. После перехода на S3 теперь sonatamedia не может получить доступ к старым локальным файлам. Sonatamedia пытается найти старые файлы на S3. Новые файлы загружаются на S3 и доступны.Синхронизировать старые медиафайлы сонаты с S3 после смены файловой системы с локального на S3

Теперь, пожалуйста, совет, как синхронизировать наши старые данные с S3 или SonataMedia, может искать старые файлы на локальном, а не на S3.

Наша текущая конфигурация SonataMedia является, как указано ниже

sonata_media: 
filesystem: 
    local: 
     directory: %kernel.root_dir%/../web/uploads/media 
     create:  true 
    s3: 
     bucket: %sonata_media_s3_bucket% 
     accessKey: %sonata_media_s3_accessKey% 
     secretKey: %sonata_media_s3_secretKey% 
     region: %sonata_media_s3_region% 
     create: true 
     ..... 

ответ

1

я был в той же дилеммой, и я мог бы успешно решить. SonataMediaBundle имеет команду кли синхронизации, в основном это регенерирует маршруты для контекстов СМИ на основе ТПС конфигурации, так что если вы выполняете:

app/console sonata:media:sync 

Вы получите что-то вроде:

Please select the provider 
    [0] sonata.media.provider.image 
    [1] sonata.media.provider.file 
    [2] sonata.media.provider.youtube 
    [3] sonata.media.provider.dailymotion 
    [4] sonata.media.provider.vimeo 

Эти контексты принадлежит моему проекту, у вас может быть аналогичная структура. В моем случае у меня были только изображения, это означает только первый: sonata.media.provider.image. Затем после установки ваш вариант, например: 0 вам будет предложено выбрать контекст, например:

Please select the context 
    [0] default 
    [1] news 
    [2] collection 
    [3] category 
    [4] profile 

Просто выбрать все контексты в настоящее время используется (конечно, один за другим, шаг за шагом).

Для каждого шага вы получите что-то вроде:

Loaded 52 medias (batch #1, offset 0) for generating thumbs (provider: sonata.media.provider.image, context: default) 
Generating thumbs for Scenario - 1 
... 
... 
... 
Done (total medias processed: 52). 

После того, как все процессы закончатся, если вы перечислите все изображения в пределах вашего администратора приборной панели, вы увидите, все они имеют новый URL, который принадлежит AWS S3.

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

sonata_media: 
    filesystem: 
     s3: 
      bucket: %sonata_media_s3_bucket% 
      accessKey: %sonata_media_s3_accessKey% 
      secretKey: %sonata_media_s3_secretKey% 
      region: %sonata_media_s3_region% 
      create: true 

вместо:

sonata_media: 
    filesystem: 
     local: 
      directory: %kernel.root_dir%/../web/uploads/media 
      create:  true 
     s3: 
      bucket: %sonata_media_s3_bucket% 
      accessKey: %sonata_media_s3_accessKey% 
      secretKey: %sonata_media_s3_secretKey% 
      region: %sonata_media_s3_region% 
      create: true 

Там нет необходимости для вас, чтобы установить локальный чтобы синхронизировать новое содержимое с AWS S3, несмотря на то, что вы сохраняете свои изображения локально.

Процесс синхронизации только перестраивает путь для сохраненных носителей. Прямо сейчас это не подталкивает контент к AWS S3, поэтому вы должны загружать свою папку для загрузки вручную, прямо к корню вашего ведра, где вы хотите сохранить носитель с этого момента.

media's documentation предлагает путь ТПС на основе статической памяти в S3, то, если вы не используете статическую память, я рекомендую использовать URL по умолчанию, например:

... 
cdn: 
    # define the public base url for the uploaded media 
    server: 
     path: "https://s3.amazonaws.com/%sonata_media.s3.bucket_name%/%sonata_media.cdn.host%" 
... 

Давайте предположим, что вы» ve уже закончил выполнение команды cli sync, и вы уже загрузили свои медиа в AWS S3.

Последний шаг состоит в том, чтобы повторно сохранить каждый контент, содержащий изображения или медиа (например,g: все сообщения вашего блога, содержащие изображения), это означает, что вы должны открывать их один за другим из панели управления admin, а затем должны нажать кнопку обновления и закрытия, чтобы обновить источники мультимедиа (изображения/видео/файлы) потому что они не были автоматически обновлены.

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

Как только вы успешно выполнили предыдущие шаги, вы можете удалить старый каталог загрузок (старое локальное хранилище).

Выполнено!