我是在同樣的困境,我能成功地解決這個問題。 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:你的博客裏麪包含圖像)的所有職位,這意味着你應該從你的管理儀表板打開它們一個接一個,然後必須以更新媒體來源點擊更新和關閉按鈕(圖像/視頻/文件)因爲這些不會自動更新。
我建議你繼續在生產中執行它之前執行你的開發/舞臺環境中的所有這些步驟。
一旦你成功執行了前面的步驟,你可以刪除舊的上傳目錄(舊的本地存儲)。
完成!