此文章同步刊登於我的部落格
簡介
Simple Storage Service (S3) 是 AWS 最常應用到的服務,只要是需要將檔案上傳到雲端的狀況都可以使用S3,本篇文章將介紹如何設定與使用AWS S3。設定AWS S3(Simple Storage Service)
官方說明文件
https://laravel-news.com/using-s3-with-laravelhttps://youtu.be/FLIp6BLtwjk
一、建立儲存體
- 開啟S3設定頁面https://s3.console.aws.amazon.com/s3
- 建立儲存槽
- 設定儲存體
二、新增IAM用戶
- 開啟IAM儀表板
- 新增使用者
- 設定使用者名稱並選取類型為「存取金鑰」
- 一路點選下一步,不要修改任何東西直到建立完成,並記錄下此處顯示的金鑰
- 添加內嵌政策
- 選擇json編輯器貼入以下內容(From Flysystem docs)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1420044805001",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:ReplicateObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::your-bucket-name",
"arn:aws:s3:::your-bucket-name/*"
]
}
]
}
- 修改
Statement.Resource
的內容,將名稱改為剛剛建立的儲存體名稱後點選「檢閱政策」
- 填寫名稱後按下「建立政策」
Larvel使用MediaLibrary串接AWS S3
一、設定Laravel(可參考官方文件)
- 新增migration並執行
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="migrations"
php artisan migration
- 執行seeder
php artisan db:seed --class=MediaTempSeeder
- 新增設定檔案
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="config"
- 設定.env
AWS_ACCESS_KEY_ID=<public key>
AWS_SECRET_ACCESS_KEY=<private key>
AWS_DEFAULT_REGION=<儲存體伺服器>
AWS_BUCKET=<儲存體名稱>
AWS_USE_PATH_STYLE_ENDPOINT=true
MEDIA_DISK=medialibrary
MEDIA_LIBRARY_ROOT=media_development
二、上傳到本地
- 設定.env
MEDIA_DISK=public
- 執行指令
php artisan storage:link