DigitalOcean object spaces 是兼容 AWS S3 的 APIs 服務,並且提供快速配置跟 CDN,收費方面也是較為便宜,主要是可以控制每月的預算花費,而且在設定上相比於 S3 簡單許多,以下是如何將 Spaces 兼容到 Laravel 使用的方法。
DigitalOcean 前置配置
- 建立 Personal Access Token
- 建立 Spaces
- 啟動 CDN
- 進入 Spaces 頁面,配置 CORS allowed headers
Laravel 配置
.env 新建 keys
DO_ACCESS_KEY_ID=
DO_SECRET_ACCESS_KEY=
DO_DEFAULT_REGION=your-bucket-region
DO_BUCKET=your-bucket-name
DO_USE_PATH_STYLE_ENDPOINT=false
DO_URL="https://${DO_BUCKET}.${DO_DEFAULT_REGION}.cdn.digitaloceanspaces.com"
DO_ENDPOINT=https://${DO_DEFAULT_REGION}.digitaloceanspaces.com
config/filesystems.php
'spaces' => [
'driver' => 's3',
'key' => env('DO_ACCESS_KEY_ID'),
'secret' => env('DO_SECRET_ACCESS_KEY'),
'region' => env('DO_DEFAULT_REGION'),
'bucket' => env('DO_BUCKET'),
'url' => env('DO_URL'),
'endpoint' => env('DO_ENDPOINT'),
'use_path_style_endpoint' => env('DO_USE_PATH_STYLE_ENDPOINT', false),
'throw' => false,
'visibility' => 'public',
],
這樣就可以用原本方式使用,由於兼容 S3 APIs 所以相當容易兼容進去。
Storage::disk($'spaces')->url($path);