[Laravel] 設定並上傳檔案到AWS S3
本文最後更新於:2024年5月2日 晚上
簡介
Simple Storage Service (S3) 是 AWS 最常應用到的服務,只要是需要將檔案上傳到雲端的狀況都可以使用S3,本篇文章將介紹如何設定與透過Laravel使用AWS S3。
設定AWS S3(Simple Storage Service)
官方說明文件
https://laravel-news.com/using-s3-with-laravel
https://youtu.be/FLIp6BLtwjk
一、建立儲存體
建立儲存槽
設定儲存體
二、新增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
[Laravel] 設定並上傳檔案到AWS S3
https://hankz1108.github.io/posts/20231104-laravel-s3-setting/