я был в той же дилеммой, и я мог бы успешно решить. 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, а затем должны нажать кнопку обновления и закрытия, чтобы обновить источники мультимедиа (изображения/видео/файлы) потому что они не были автоматически обновлены.
Я рекомендую вам выполнить все эти шаги в своей среде разработки/создания, прежде чем приступать к ее выполнению.
Как только вы успешно выполнили предыдущие шаги, вы можете удалить старый каталог загрузок (старое локальное хранилище).
Выполнено!