[Laravel] Hướng dẫn sử dụng AWS S3 để lưu trữ file trong Laravel

Đăng bởi: Admin | Lượt xem: 2993 | Chuyên mục: Laravel

Amazon S3 (Simple Storage Service) là một dịch vụ tuyệt vời để lưu trữ tệp tin phổ biến nhất trong công nghệ điện toán đám may hiện nay, nó lưu trữ tệp tin như một object trong các bucket. Khi bạn sử dụng Amazon S3 sẽ giúp server của bạn đỡ đi được rất nhiều dung lượng từ hình ảnh hay video bạn up lên đồng thời cũng giúp tốc độ website của bạn trở nên nhanh hơn. Trong bài viết này vncoder.vn sẽ hướng dẫn các bạn sử dụng AWS S3 để lưu trữ file trong Laravel. Cùng theo dõi bài viết nhé.


1. Giới thiệu

Một website dạng bình thường không cần lưu trữ quá nhiều hình ảnh, video hay các tệp tin khác thì bạn có thể lưu trữ luôn ngay trên hosting, server của mình. Nhưng một số website đặc thù cần lưu trữ một lượng lớn tệp tin mà hosting, server không đáp ứng được thì bắt buộc phải sử dụng dịch vụ bên thứ 3 để lưu trữ.
Amazon S3 (Simple Storage Service) là một dịch vụ tuyệt vời để lưu trữ tệp tin phổ biến nhất trong công nghệ điện toán đám may hiện nay, nó lưu trữ tệp tin như một object trong các bucket
Bài viết này, mình xin giới thiệu với các bạn cách sử dụng AWS S3 để lưu trữ file trong các dự án Laravel

2. Cấu hình AWS S3

Tạo tài khoản riêng cho S3

Để quản lý S3, ta nên tạo một tài khoản riêng chỉ để quản lý S3 để dễ dàng quản lý hơn
Đăng nhập vào AWS Console bằng tài khoản tạo bằng Gmail. Sau đó chọn My Security Credentials
Màn hình AIM hiện ra, click tạo User. Điền tên tài khoản sẽ quản lý S3 như hình
PS: Chọn programe thì chỉ tạo ra access_key để truy cập S3
Chọn dòng tiếp theo sẽ tạo mật khẩu để đăng nhập vào Console
Sau đó click Next, hiện ra màn hình set quyền chọn S3FullAccess Sau đó click Next 2 lần là đã tạo tài khoản thành công Các thông tin được tạo ra gồm có

  • Đường dẫn dạng Account ID.signin.aws.amazon.com
  • Account và Password để đăng nhập AWS S3
  • AWS_ACCESS_KEY_ID:
  • AWS_SECRET_ACCESS_KEY:

Tạo bucket

Đăng nhập vào AWS S3 bằng tài khoản đã tạo

Các bạn vào trang https://aws.amazon.com/s3/ để đăng ký tài khoản

Sau đó vào https://console.aws.amazon.com/console tìm và chọn S3

Chọn create bucket

Chọn next, có một số dịch vụ bạn có thể chọn enable nó lên, không thì bỏ qua và tiếp tục bấm next

Để mặc định và tiếp tục bấm next, nó sẽ tự tạo bucket cho mình

Sau đó, chọn vào quản lý bucket vừa tạo để set quyền truy cập vào file sẽ xử lý

Access for bucket owner: List objects, Write objects, Read bucket permissions

Public access Everyone: List objects

Sử dụng S3 để lưu trữ file trong Laravel

Thiết lập file .env

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=
AWS_BUCKET=
AWS_URL=
FILESYSTEM_DRIVER=s3

Thiết lập filesystems.php

'cloud' => env('FILESYSTEM_CLOUD', 's3'),

'disks' => [
     ...

    's3' => [
        'driver' => 's3',
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => 'us-east-1',
        'bucket' => env('AWS_BUCKET'),
        'url' => env('AWS_URL'),
    ],

],

Cài thư viện

Như trên docs của laravel có ghi là để sử dụng S3 driver bạn sẽ phải cài thư viện league/flysystem-aws-s3-v3 Mở terminal lên và chạy

composer require league/flysystem-aws-s3-v3

Các thao tác sử dụng

Mình đã tạo một project để demo. Các bạn có thể tham khảo mã nguồn Tại đây

Thao tác upload file lên S3

public function postUpload(StoreImage $request)
    {
        $path = Storage::disk('s3')->put('images/originals', $request->file, 'public');
        $request->merge([
            'size' => $request->file->getClientSize(),
            'path' => $path
        ]);
        $this->image->create($request->only('path', 'title', 'size'));
        return back()->with('success', 'Image Successfully Saved');
    }

Hiển thị file ra view

<th><img width="100px" src="{{$image->url}}"></th>

Thao tác xóa file trên S3

public function destroy(Image $image)
{
    $path = $image->path;
    $image->delete();
    Storage::disk('s3')->delete($image->path);
    return back()->with('success', 'Image Successfully Saved');
}

3. Kết luận

Vậy là vncoder.vn đã hoàn thành xong bài viết hướng dẫn sử dụng AWS S3 để lưu trữ file trong Laravel. Hy vọng với bài viết này sẽ giúp các bạn hiểu hơn về Amazon S3 (Simple Storage Service). Chúc các bạn thành công!.

vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!



Khóa học liên quan

Khóa học: Laravel

Xây dựng ứng dụng với Laravel và Vuejs
Số bài học:
Lượt xem: 16244
Đăng bởi: Admin
Chuyên mục: Laravel

Học lập trình Laravel
Số bài học:
Lượt xem: 23269
Đăng bởi: Admin
Chuyên mục: Laravel