Khi bạn cần lưu trữ file trên cloud thay vì trên server nội bộ, Amazon S3 là lựa chọn phổ biến nhờ độ tin cậy cao, tốc độ nhanh và khả năng mở rộng linh hoạt.
Trong bài viết này, mình sẽ hướng dẫn bạn từng bước để:
- Tạo S3 bucket
- Lấy Access Key và Secret Key
- Cấu hình quyền cơ bản để ứng dụng có thể truy cập S3
💡 Bài viết này sẽ được dùng làm nền tảng cho nhiều bài viết hướng dẫn khác, trong đó có series File Upload trong Laravel.
Mục Lục
I. Đăng nhập AWS và truy cập dịch vụ S3
Đầu tiên, truy cập https://aws.amazon.com/ và đăng nhập bằng tài khoản AWS của bạn. Từ trang quản lý, tìm kiếm “S3” và chọn dịch vụ S3

II. Tạo S3 Bucket mới
Bấm vào nút Create bucket

- Nhập tên bucket, ví dụ:
laravel-file-upload-series
. - Ở mục Block Public Access, nếu bạn muốn file được truy cập công khai:
- Bỏ chọn “Block all public access”
- Xác nhận bằng cách tick vào ô xác nhận
- Bấm Create Bucket

Bucket mới đã được tạo thành công. Bạn cần lưu lại thông tin bucket name laravel-file-upload-series
và AWS Region ap-southeast-1
để khai báo trong các ứng dụng cần truy cập vào Amazon S3.

III. Tạo Access Key để kết nối từ ứng dụng
1. Truy cập IAM
Từ menu dịch vụ, tìm và chọn IAM

2. Tạo User mới
Truy cập vào mục Users, Bấm vào nút Create User để tạo tài khoản mới

Nhập tên user và bấm Next

Chọn Attach policies directly, tìm S3 và tick chọn vào AmazonS3FullAccess (toàn quyền truy cập dịch vụ S3). Bấm Next

Bấm nút Create user để hoàn thành việc tạo user mới.

3. Tạo Access Key
Sau khi tạo xong user mới, bấm vào nút View user

Bấm Create access key

Chọn Use case bất kỳ và tick chọn xác nhận ở phần Confirmation. Sau đó bấm Next

Nhập vào chú thích (không bắt buộc) và bấm Create access key.

Access key cùng secret access key sẽ được hiển thị duy nhất một lần, bạn không thể xem lại sau khi thoát trang. Bạn cần lưu lại thông số này hoặc bấm vào nút Download .csv file để tải về. Bấm Done để hoàn thành.

Chú ý: Tuyệt đối không chia sẻ Access Key / Serect Access Key công khai hoặc commit vào GitHub.
IV. Thông tin cần ghi nhớ
Các thông tin bạn cần ghi nhớ để cấu hình trong các ứng dụng cần liên kết với S3
Mục | Ghi chú |
---|---|
Tên Bucket | laravel-file-upload-series |
Region | ap-southeast-1 |
Access Key ID | (Copy từ IAM) |
Secret Access Key | (Copy từ IAM) |
V. Kết nối với AWS CLI
Mình sẽ thử nghiệm kết nối với S3 bằng Access Key vừa tạo thông qua công cụ AWS CLI
Cài đặt AWS CLI bằng Homebrew (trên macOS)
brew install awscli
Code language: Nginx (nginx)
Hoặc cài đặt bằng npm
npm install awscli
Code language: Nginx (nginx)
Kiểm tra lại awscli đã cài đạt thành công chưa bằng lệnh
aws --version
Code language: Nginx (nginx)
Cấu hình thôgn số cho awscli
aws configure
Code language: Nginx (nginx)
Nhập vào các thông tin cần thiết: Access Key ID / Secret Access Key / Region Name
AWS Access Key ID [None]: A*****************4
AWS Secret Access Key [None]: X**************************r
Default region name [None]: ap-southeast-1
Default output format [None]:
Code language: Markdown (markdown)
Xem danh sách S3 bucket
aws s3 ls
Code language: Nginx (nginx)
Danh sách các S3 Bucket đã tạo sẽ hiện ra ở đây.
VI. Lời kết
Trong bài viết này, mình đã chia sẻ cách:
- Tạo một S3 Bucket trên AWS để lưu trữ file
- Cấu hình quyền truy cập cơ bản để cho phép ứng dụng sử dụng bucket
- Tạo Access Key và Secret Key để các ứng dụng (như Laravel) có thể kết nối đến Amazon S3 qua API
Đây là những bước thiết lập nền tảng, cực kỳ quan trọng trước khi bạn triển khai chức năng upload file lên Amazon S3 trong bất kỳ ứng dụng web hoặc mobile nào.
Hẹn gặp lại trong bài viết [Phần 5] Upload file lên Amazon S3 của loạt bài File Upload trong Laravel – để xem cách áp dụng các kỹ thuật vừa học vào ứng dụng thực tế.
Nếu bạn cần hỗ trợ kỹ thuật miễn phí, vui lòng gửi câu hỏi trực tiếp ở phần Thảo luận bên dưới, mình sẽ trả lời trong thời gian sớm nhất.
Bạn cần hỗ trợ kỹ thuật chuyên sâu?
Khám phá các gói dịch vụ giúp bạn tối ưu công việc và vận hành hệ thống hiệu quả hơn. Từ chăm sóc website đến hỗ trợ kỹ thuật, mọi thứ đều linh hoạt và phù hợp với nhu cầu của bạn.