Bạn có chắc chắn muốn xóa bài viết này không ?
Bạn có chắc chắn muốn xóa bình luận này không ?
Upload File To Amazon AWS S3 Bucket
1. Tản mạn ngoài lề
Một vấn đề khá cũ. Chắc nhiều người đã biết và nắm rõ. Mình viết ra đây xem như là note cho bản thân mình.
Mục đích: Lưu trữ file trên Amazon AWS S3
Mình xin nói qua đại ý các bước để upload một file lên Amazon Aws S3 trong bài viết này.
- Tạo tài khoản trên https://aws.amazon.com/vi/
- Tạo giao diện để upload file. Ở đây mình sử dụng Laravel
- Upload file
Let's go.
2. Tạo tài khoản amazon và tạo Bucket để chứa file upload.
Các bạn vào https://aws.amazon.com/vi/s3/ rồi đến Get started with Amazon S3
và đăng ký thôi. Cái điểm lưu ý nhất chắc là ở đoạn nhập tài khoản thẻ. Bạn cần thẻ VISA hoặc thẻ tương tự.
Xong khi đăng ký xong thì sẽ có giao diện như thế này
Tạo một Bucket để upload file lên
- Vào Create bucket
- Name and region: mình để
thaivd-demo
ở phầnName
và chọnAsia Pacific (Tokyo)
ở phầnRegion
. - Configure options: Mình Next theo mặc định.
- Set permissions: Mình Next theo mặc định.
- Review: Create Bucket.
Bạn có thể xem tại đây.
https://www.screencast.com/t/0ZZNvZ6U1ZOq
3. Tạo giao diện để upload file
Ở bài viết này mình sử dụng Laravel. Việc tạo 1 project bằng Homestead đã có hướng dẫn chi tiết tại https://laravel.com/docs/5.7/homestead nên mình không viết vào đây tránh việc bài quá dài.
a. Mình tạo giao diện để upload file. Ở đây mình tạo file fileUpload.blade.php
Ở đoạn này có những phần cần chú ý: method="POST", enctype="multipart/form-data", thêm @csrf
b. Chúng ta vào routes/web.php xem cần chú ý gì.
Ở đây Folder-upload
chính là folder chứa những file mình up lên AWS S3. s3
chính là Drives
c. Mình sẽ mở file config/filesystems.php
xem có gì liên quan đến s3
này
Như chúng ta đã thấy thì ở đây có config các thông số liên quan đến AWS: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, AWS_BUCKET, AWS_URL
Các thông số này chứa trong file .env. Vậy
d. Mình sẽ mở file .env (Bạn thêm các thông số vào nếu chưa có)
Vậy là việc bây giờ chúng ta sẽ tìm các thông số tương ứng để điền vào là gần như hoàn thành.
4. Upload file
Bạn quay lại https://s3.console.aws.amazon.com/s3/home?region=us-east-1
- Chọn ở tài khoản mình (thaivd) -> My Security Credentials
- Chọn Users -> Add user. Ở đây mình tick vào
Programmatic access
vàNext
Tiếp sang
Attach existing policies directly
tìmAmazonS3FullAccess
để tick rồiNext: Tags
Ở đây chúng ta sẽ có 2 thông số
AWS_ACCESS_KEY_ID
vàAWS_SECRET_ACCESS_KEY
để điền vào file.env
Tiếp đến
Next: Review
->Create: user
Chúng ta quay lại S3: https://s3.console.aws.amazon.com/s3/home?region=us-east-1 . Thì chúng ta lấy tên bucket lúc đầu tạo để điền vào
AWS_BUCKET
trong file.env
. Trường hợp của mình làthaivd-demo
AWS_DEFAULT_REGION là
ap-northeast-1
, cái này sẽ tương ứng vớiRegion
của Bucket của mình tạo. Lúc đầu mình tạo Region làAsia Pacific (Tokyo)
nên AWS_DEFAULT_REGION làap-northeast-1
. Bạn tham khảo thêm ở đây https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region để tìm tương ứngAWS_URL là http://thaivd-demo.s3-ap-northeast-1.amazonaws.com. Các bạn thay
thaivd-demo
bằng tên bucket của mình,ap-northeast-1
bằng Region của mình.
5. Công đoạn cuối
Mình thử upload file xem thế nào thì gặp lỗi này
Bạn chạy thêm composer require league/flysystem-aws-s3-v3
Sau đó chạy thêm artisan config:clear
để xóa cache --> Quan trọng
Và đây chính là thành quả sau khi upfile. Tà đa
Có thắc mắc gì thì mọi người cứ comment! Thanks !
Bài Bái
(。◕‿◕。) NyLaa (。◕‿◕。)





