Amazon S3 là gì? Hướng dẫn kết nối WordPress với Amazon S3 Bucket

amazon amazon web services S3 tăng tốc wordpress Thủ Thuật Wordpress

Bạn có muốn kết nối Amazon S3 với WordPress không ?
Mình sẽ giới thiệu qua về Amazon S3 cũng như cách kết nối với WP.
Cũng như những lợi ích cho website khi sử dụng Amazon S3.
Sau đó là từng bước để thiết lập trên Amazon S3 trên Amazon Web Services.
Có vẻ như rất nhiều việc đây, chúng ta cùng bắt đầu luôn nhé….

[toc]

Amazon S3 là gì?
Amazon S3 là một dịch vụ lưu trữ (Object storage) từ Amazon Web Services.
Có thể bạn không nhận ra nhưng, nhưng một khối lượng dữ liệu lớn trên Internet phụ thuộc vào Amazon S3.
Đó là lý do tại sao nếu S3 chỉ không hoạt động trong một vài giây thôi cũng đủ khiến Internet trở nên hỗn loạn.
Nếu bạn vẫn chưa tưởng tương AWS lớn như thế nào có thể đọc bài này.
Trong bài viết có đề cập đến Object storage, mình sẽ không đi sâu vào loại lưu trữ này (Hãy sử dụng Wikipedia để hiểu rõ hơn nhé).
Thay vào đó, chúng ta sẽ dành thời gian để nói về Amazon S3 và cách kết nối với website WordPress của bạn.
Thông thường, Amazon S3 được sử dụng để lưu trữ tất cả các file mà bạn thường lưu trữ trong WordPress Media Library.
Về cơ bản, các bạn có khả năng lưu trữ (hay giảm tải cho WordPress) những thứ như:

Hình ảnh
Videos
File âm thanh
File PDF
…..

Không những thế, một số người còn sử dụng S3 để lưu trữ các dữ liệu quan trọng như CSS, JavaScript, v.v.
Mỗi khu vực lưu trữ Amazon S3 được gọi là “bucket”.
Bucket về cơ bản là một tập hợp các file (hãy tìm hiểu thêm về Object storage nếu bạn muốn biết thêm cách sử dụng của những file này).
Vậy tóm lại, thay vì lưu trữ các tệp trên server, chúng ta sẽ lưu trữ trong “bucket” của Amazon S3.

Lợi ích khi sử dụng Amazon S3 cho WordPress?

Giảm request đến máy chủ – máy chủ của bạn lúc này không còn phải cung cấp file media (hoặc dữ liệu tương tự) nên thời gian tải trang được giảm đáng kể.
Giảm tải được dung lượng lưu trữ – nếu bạn gặp phải tình trạng vượt quá giới hạn lưu trữ trên máy chủ. Giá lưu trữ trên S3 còn rẻ hơn so với việc phải mua thêm dung lượng lưu trữ.
File media được tách khỏi website – giúp cho việc di chuyển WordPress sang server khác đơn giản hơn.
Khả năng mở rộng – Có thể nói Amazon S3 rất lớn trên internet, vậy nên hãy tự tin sử dụng S3 vì biết đâu Amazon sẽ làm cho website của chúng ta trở nên đặc biệt hơn.

Fun fact:
Amazon S3 sẽ miễn phí trong năm đầu tiên sử dụng (lưu trữ tối đa 5 GB). Sau đấy, các gói gia hạn cũng rất vừa túi tiền.

Sự khác biệt giữa Amazon S3 với CDN
Rất nhiều người nghĩ Amazon S3 giống hệt như CDN.
Chắc hẳn sự tương đồng về cách thức hoạt động giữa hai công cụ này đã khiến các bạn nhầm lẫn một chút.
Giống CDN, các bạn cũng dễ dàng chọn và tải hình ảnh từ Amazon S3 thay vì phải tải từ server.
Nhưng Amazon S3 lại có những tính năng vô cùng khác biệt:
Khi bạn tạo một “bucket” tại Amazon S3, thư mục này sẽ nằm ở một vị trí cụ thể – physical location (có thể chọn).
Mặt khác, trên CDN các vị trí của thư mục này lại bị phân tán – distributed locations.
Vì vậy, Amazon S3 sẽ có nhiều điểm chung với 1 server (một vị trí lưu trữ thực tế) so với CDN (vị trí lưu trữ bị phân tán).
Nói tóm lại:

Amazon S3: Mục tiêu chính của công cụ này là lưu trữ. chúng ta sử dụng các file từ S3 cho user truy cập tới website

CDN: Công cụ này lại tập trung vào việc truyền các file một cách nhanh nhất có thể thay vì lưu trữ chúng.

Vậy tại sao không đơn giản là chỉ sử dụng CDN ?
Đây là thứ mình cần làm rõ với các bạn:
Các bạn vẫn có thể sử dụng CDN nếu thích. Quá trình kết nối bucket của Amazon S3 với CDN rất đơn giản.
Chúng ta dễ dàng sử dụng CDN với mọi thứ từ Cloudflare, KeyCDN hay Stackpath.
Amazon Web Services thậm chí còn có CDN của riêng họ – được gọi là CloudFront, cũng rất dễ để kết nối với Amazon S3.
Thực tế, đây là cách mà mình khuyên bạn nên sử dụng nếu đối tượng khách hàng của bạn ở nhiều nơi trên thế giới.
Bằng cách sử dụng cả hai, các bạn sẽ nhận được:

Có những lợi ích khi lưu trữ của S3 ( đã giải thích ở trên)
Vẫn có thể sử dụng chung với CDN

Việc kết nối WordPress và Amazon S3 sẽ như thế nào?
Nếu bạn làm theo hướng dẫn mình đưa ra, website WordPress của các bạn sẽ hoạt động như sau:

Upload file lên WordPress Media Library như bình thường (nhấn nút Add Media thôi)
Plugin WordPress S3 được chọn sẽ tự động sao chép hoặc di chuyển các file tới Amazon S3
Web WordPress sẽ sử dụng file đã lưu trữ trên S3 hay sử dụng CDN đã được kết nối tới bucket của S3.

Những thứ cần chuẩn bị trước khi tích hợp với WordPress S3
Để kết nối WordPress với Amazon S3, bạn sẽ cần:

Tài khoản Amazon Web Services – đăng ký miễn phí.
Amazon S3 bucket ở trạng thái public – miễn phí với năm đầu tiên sử dụng (tối đa 5 GB). Mình sẽ hướng dẫn bạn tạo một bucket.
Một plugin WordPress S3 – plugin sẽ giúp bạn tự động giảm tải (offload) các file đã tải vào bucket của S3.

Vậy nên chọn plugin WordPress S3 nào?
Đây là những plugin mà bạn có thể lựa chọn:

WP Offload Media Lite – công cụ có bản miễn phí, nhưng phiên bản này chỉ hoạt động với các file mới được tải lên. Nếu bạn dùng bản Pro, bạn sẽ có nhiều chức năng không giới hạn hơn. Ngoài ra công cụ cũng rất dễ để tích hợp với CDN (nếu bạn dự định như vậy).
W3 Total Cache – W3 Total Cache có chứa tính năng cho phép chúng ta kết nối web của mình với Amazon S3 nếu bạn chọn S3 làm mặc định.
Media Library Folders Pro S3 – cho phép các bạn quản lý WordPress Media Library của mình bằng các thư mục, đồng thời công cụ cũng offload cho các file trên Amazon S3 nhưng vẫn giữ được cấu trúc của thư mục.
Human Made S3 Uploads – công cụ không có giao diện thực tế, được lưu trữ trên GitHub này không dành cho những người dùng phổ thông. Được rất nhiều developer đánh giá cao. Nếu quan tâm, hãy tìm hiểu thêm về công cụ này tại đây.

Plugin WordPress S3 mà mình chọn trong bài viết
Trong bài này, mình sẽ sử dụng WP Offload Media Lite từ Delicious Brains.
Công cụ này được đánh giá rất cao ngay tại thời điểm mình viết bài.
Nhưng trước tiên mình sẽ nói sơ qua về quy trình thiết lập:

Hầu hết các bước sẽ thao tác giống với mọi WordPress S3 plugin khác.
Điều này có nghĩa là bạn vẫn có thể sử dụng các plugin khác.
Sự khác biệt duy nhất chỉ là cách dùng trong mỗi giao diện của từng plugin mà thôi.

Cách sử dụng WordPress với Amazon S3: Theo từng bước
Đây là mọi thứ bạn cần làm để sử dụng Amazon S3 với website WordPress của mình:
À đừng quên là hãy sao lưu website trước khi bắt đầu quá trình tích hợp nhé!
Bước 1: Cài đặt và kích hoạt plugin WP Offload Media Lite
Hiện giờ, các bạn chưa phải làm bất cứ điều gì trong giao diện plugin.
Nhưng trước khi bắt đầu vào giao diện của Amazon S3, hãy chắc chắn là plugin đã được cài đặt và kích hoạt trên máy tính.
Khi kích hoạt WP Offload Media Lite, công cụ sẽ cần bạn điền AWS key.
Đừng lo, ở các bước tiếp theo, các bạn sẽ được hướng dẫn để tạo key này.
Bước 2: Tạo một bucket mới trên Amazon S3
Nếu chưa có một tài khoản Amazon Web Services, các bạn hãy tạo một cái ngay nhé.
Hãy đến phần Amazon S3 từ bên trong bảng điều khiển tài khoản AWS, hoặc nhấn vào đây để chuyển hướng trực tiếp đến S3.
AWS Management Console

Trong giao diện S3, nhấp vào nút Create bucket

Trên giao diện pop-up:

Bucket name – bất cứ cái tên nào mà bạn cảm thấy dễ nhớ.
Region – chọn khu vực (chọn khu vực gần người dùng nhất có thể, đặc biệt nếu bạn không có kế hoạch sử dụng CDN)
Click vào Create

Điền tên Bucket và chọn Region

Bước 3: Cài đặt quyền cho bucket
Để mọi thứ hoạt động có hiệu quả hơn, bạn cần đặt quyền cho bucket S3 thành công khai.
Để thực hiện, chúng ta sẽ sử dụng đến bucket policy (Cấp quyền cho bucket)
Để chỉnh sửa quyền, hãy nhấp vào bucket trong giao diện S3:

Trên màn hình hiển thị, bạn dễ dàng nhận thấy bucket khác của mình đã được công khai.
Trong khi bucket dieuhautest mình mới tạo lại chưa được quyền này.
Trên màn hình tiếp theo, nhấp vào tab Permissions và sau đó chọn Bucket Policy:

Bạn sẽ thấy một trình soạn thảo JSON. Hãy chép và dán đoạn mã này vào rồi lưu lại thay đổi.
{
“Version”: “2019-06-05”,
“Statement”: [
{
“Sid”: “AllowPublicRead”,
“Effect”: “Allow”,
“Principal”: {
“AWS”: “*”
},
“Action”: “s3:GetObject”,
“Resource”: “arn:aws:s3:::dieuhautest/*”
}
]
}
Nhớ là thay thế dieuhautest bằng tên của bucket bạn đặt nhé.
Sau khi lưu lại thay đổi, bạn sẽ thấy bucket đã được đánh dấu là Public trong bảng điều khiển Amazon S3:

Bước 4: Tạo IAM user và policy
Bây giờ, chúng ta sẽ phải thiết lập một thứ được gọi IAM user.
User này sẽ cho phép plugin quản lý bucket S3, rất cần thiết nếu bạn muốn plugin tự động thêm các file được upload lên WordPress.
Quá trình thiết lập sẽ hơi dài dòng một chút. Vì vậy mình sẽ cố từng bước cho bạn theo dõi.
Để tạo IAM user, hãy truy cập vào IAM trong phần tài khoản của AWS.
Nhấn vào tab Users. Sau đó, click Add user ở phía trên cùng:

Trong giao diện Add user, bạn cần đặt tên cho người dùng của mình.
Đảm bảo các bạn đã tích vào Programmatic access trong phần Access type.

Tiếp theo, hãy click vào Next: Permissions để tiếp tục quá trình thiết lập:
Trên màn hình được hiện ra, chọn tab Attach existing policies directly và chọn Create policy

Sau khi click, màn hình sẽ hiện ra một cửa sổ mới. Lúc này các bạn hãy chuyển qua tab JSON và dán vào đoạn mã dưới đây vào:
{
“Version”: “2019-06-05”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: [
“s3:CreateBucket”,
“s3:DeleteObject”,
“s3:Put*”,
“s3:Get*”,
“s3:List*”
],
“Resource”: [
“arn:aws:s3:::dieuhau”,
“arn:aws:s3:::dieuhau/*”
]
}
]
}
Một lần nữa, đừng quên thay dieuhau bằng tên của bucket bạn đặt cho Amazon S3 nhé.

Sau đó, nhấn vào Review policy ở phía dưới cùng:
Trên trang tiếp theo, hãy một cái tên tương ứng và click vào Create policy

Thông báo thành tạo thành công sẽ như hình dưới:

Bây giờ, các bạn cần:

Quay trở lại tab IAM Add User (trên trình duyệt).
Nhấp vào Refresh
Chọn quyền mà bạn vừa tạo từ danh sách (hãy tìm kiếm theo tên để tiết kiệm thời gian)
Nhấn Next: Review

Hãy click vào Create user ở trang tiếp theo:

Cái Add tags này mới có: đánh tag này để dễ dàng quản lý, theo dõi, quyền truy cập của user ( cái này không bắt buộc nha, bạn có thể bỏ qua)
Bấm Next: Review. Kiểm tra lại thông tin một lần cuối và bấm Creat User.

Màn hình mới hiện ra, bạn sẽ thấy: Access key ID và Secret access key

Hãy nhấn Show để hiện Secret access key
Hãy note lại chúng, vì bạn sẽ cần ở những bước tiếp theo đấy.
Bước 5: Thêm access key vào file wp-config.php
Trong bước này, chúng ta sẽ quay lại với trang WordPress của mình.
Cụ thể, bạn sẽ cần chỉnh sửa file wp-config.php của web.
Các bạn dễ dàng thực hiện thao tác này thông qua FTP cilent hoặc qua File manager trên Cpanel.
Thêm đoạn mã dưới đây vào tệp wp-config.php, hãy nhớ thay thế các dấu ***** 2 key ở trên mới tạo nhé.
define( ‘AS3CF_AWS_ACCESS_KEY_ID’, ‘********************’ );
define( ‘AS3CF_AWS_SECRET_ACCESS_KEY’, ‘**************************************’ );
Sau đấy chỉ cần lưu lại thay đổi là xong.
Tạm đến đấy mai update nốt nhé, mỏi tay quá 😀 
The post Amazon S3 là gì? Hướng dẫn kết nối WordPress với Amazon S3 Bucket appeared first on Diều Hâu.