WordPress 上傳圖片至 S3

WordPress 透過外掛 Offload Media Lite 將既有的圖片上傳至外連空間。簡單的外掛組合技,讓你不需要花錢買外掛功能。

WordPress 上傳圖片至 S3

安裝外掛

設定 Offload Media Lite

進入外掛頁面後,畫面應該會提示你,我自己是用 S3 ,當然你也可以依照你的需求。完成設定之後畫面大概會是這樣
2021-03-13-at-3.21-AM

S3 要注意幾點:

  • 建立一個 IAM 使用者,權限設定要可以存取 Bucket
  • IAM 金鑰 ID 跟 Key 最好寫在 wp-config.php
  • 開好 Bucket 後,記得設定 可公開存取

    代表有網址就可以下載,如果有私有媒體檔案請研究 Bucket 的設定

  • 儲存貯體政策 設定可以參考
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadForGetBucketObjects",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::${你的Bucket 名稱}/*"
        }
    ]
}

照著以上設定完後,隨意丟一張圖片進 bucket,是可以透過網址看到那張圖片的例如:https://s3-ap-northeast-1.amazonaws.com/bonze-blog/2021/03/2021-03-13-at-3.21-AM.png

要是你看到 XML 錯誤訊息代表你 S3 儲存貯體政策 可能設定有誤

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>xxxxxx</RequestId>
<HostId>xxxxx</HostId>
</Error>

重新產生圖片

回到 WordPress 上,強烈建議你 Remove Files From Server 不要打開,因為上傳完圖片,本地圖片網址會變成外連網址,接著你就要處理一堆轉址到儲存空間,等你有把握了再打開它。

我們來到前面安裝的 Stop Generating Unnecessary Thumbnails 外掛頁面,看你是否要禁用不需要的圖片大小

你最好要對你的佈景主題很熟悉,有用到哪些圖片尺寸自己要盤點一下,否則會死圖的!

2021-03-13-at-3.57-AM

前往重新產生圖片頁面,按下按鈕。

如果你的圖片很多,要注意一下伺服器 set_time_limit() 設定,很可能上傳到一半就被認定 timeout 終止了

隨意找媒體庫的一張圖片來看
2021-03-13-at-4.07-AM

打完收工。

可能遇到的問題

如果打開 Remove Files From Server 選項,會遇到 Facebook 分享圖因為還是讀取本地圖片造成分享連結圖片消失的問題,可以用 分享偵錯工具 重新抓取圖片路徑