WordPress 使用 WP Offload Media Lite 上傳檔案至 Amazon S3

在 WordPress 上面如果要上傳檔案到 Amazon S3 可以使用 WP Offload Media Lite 這個工具,在設定上可以找到官方文件的 Amazon S3 Quick Start Guide,可以看到它的設定很簡單只要幾個步驟,不過我通常會用更高安全性的設定方法設定,所以記錄一下。

AWS IAM Policies

我通常會在 Policies 裏面限制它只能存取某個 S3 Bucket 並不會全部給它,假設我有一個 Bucket 名稱叫做 sample 我就會設定它的 Policies JSON 如下

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::sample",
                "arn:aws:s3:::sample/*"
            ]
        }
    ]
}

Amazon S3

Block public access

首先是 Block public access 記得要取消打勾

設定後會出現警示是正常的不用理它

Object Ownership

再來是 Object Ownership 要開啟 ACL

WordPress 的 wp-config.php 設定

最後把新增的 IAM Users 新增到 wp-config.php

define( 'AS3CF_SETTINGS', serialize( array(
    'provider' => 'aws',
    'access-key-id' => '********************',
    'secret-access-key' => '**************************************',
) ) );

WordPress 設定 Bucket 位置

因為在 IAM 不是使用 AmazonS3FullAccess 的權限所以 Media Library 沒有辦法自動搜尋,這邊需要自己手動輸入。

設定成功後就會看到 WordPress 可以成功使用 Amazon S3 當媒體庫了