我是在同样的困境,我能成功地解决这个问题。 SonataMediaBundle有一个CLI sync命令,基本上重新生成基础上,CDN配置的媒体环境中的路由,因此,如果您执行:
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
。然后设置你的选项,e.g后:0
你会被要求选择的背景下,e.g:
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的静态存储CDN的路径,如果你不使用的静态存储,我推荐你使用默认的网址,例如:
...
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%"
...
让我们假设你”已完成运行cli sync命令,并且您已将您的媒体上传到AWS S3。
最后一步是重新保存每个包含图像或媒体的内容(例如,G:你的博客里面包含图像)的所有职位,这意味着你应该从你的管理仪表板打开它们一个接一个,然后必须以更新媒体来源点击更新和关闭按钮(图像/视频/文件)因为这些不会自动更新。
我建议你继续在生产中执行它之前执行你的开发/舞台环境中的所有这些步骤。
一旦你成功执行了前面的步骤,你可以删除旧的上传目录(旧的本地存储)。
完成!