[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

一、建立儲存體

  1. 開啟S3設定頁面
    https://s3.console.aws.amazon.com/s3

  2. 建立儲存槽

  3. 設定儲存體


二、新增IAM用戶

  1. 開啟IAM儀表板

  2. 新增使用者

  3. 設定使用者名稱並選取類型為「存取金鑰」

  4. 一路點選下一步,不要修改任何東西直到建立完成,並記錄下此處顯示的金鑰

  5. 添加內嵌政策

  6. 選擇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/*"
                ]
            }
        ]
    }
  7. 修改Statement.Resource的內容,將名稱改為剛剛建立的儲存體名稱後點選「檢閱政策」

  8. 填寫名稱後按下「建立政策」

Larvel使用MediaLibrary串接AWS S3

一、設定Laravel(可參考官方文件)

  1. 新增migration並執行

    php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="migrations"
    php artisan migration
  2. 執行seeder

    php artisan db:seed --class=MediaTempSeeder
  3. 新增設定檔案

    php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="config"
  4. 設定.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

二、上傳到本地

  1. 設定.env

    MEDIA_DISK=public
  2. 執行指令

    php artisan storage:link

[Laravel] 設定並上傳檔案到AWS S3
https://hankz1108.github.io/posts/20231104-laravel-s3-setting/
作者
Hankz
發布於
2023年11月4日
更新於
2024年5月2日
許可協議