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有一個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:你的博客裏麪包含圖像)的所有職位,這意味着你應該從你的管理儀表板打開它們一個接一個,然後必須以更新媒體來源點擊更新和關閉按鈕(圖像/視頻/文件)因爲這些不會自動更新。

我建議你繼續在生產中執行它之前執行你的開發/舞臺環境中的所有這些步驟。

一旦你成功執行了前面的步驟,你可以刪除舊的上傳目錄(舊的本地存儲)。

完成!

相關問題