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

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é….

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

Create-s3-buckets

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:

cai-dat-quyen-cho-bucket

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:

Bucket-S3-Permissions

lưu ý đoạn dưới mới đúng nhé

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": "2008-10-17",
	"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:

Bucket-Public

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:

create-IAM-user

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

Set-permisstions-IAM-user-new

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": "2012-10-17",
	"Statement": [
	{
		"Effect": "Allow",
		"Action": [
			"s3:CreateBucket",
			"s3:DeleteObject",
			"s3:Put*",
			"s3:Get*",
			"s3:List*"
		],
		"Resource": [
			"arn:aws:s3:::dieuhau-test",
			"arn:aws:s3:::dieuhau-test/*"
		]
	}
	]
}

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é.

Creat-policy-IAM-user

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

creat-policy-name

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

thong-bao-tao-thanh-cong-policy

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
chon-policy-moi-tao

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

Add-tag-IAM-tag

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.

Review-IAM-user-permissions

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

IAM-Access-key-ID-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', '**************************************' );
wp-config-S3


Sau đấy chỉ cần lưu lại thay đổi là xong.

Bước 6: Chọn S3 bucket trong cài đặt WP Offload Media Lite

Để thực hiện, các bạn hãy chuyển hướng đến Settings » Offload S3.

Nhập tên bucket của S3 trong phần What bucket would you like to use? và click vào Save Bucket:

Offload-Media-Lite-config

Sau khi lưu lại thay đổi, bạn sẽ thấy giao diện đầy đủ của plugin:

Offload-Media-Lite-config1

Lưu ý: Do cách mình thiết lập quyền người dùng IAM cho nên các chức năng Browse existing buckets hoặc Create new bucket sẽ không hoạt động. Mình làm như vậy để tăng cường bảo mật.
Còn nếu bạn lại thích sử dụng hai chức năng trên, bạn dễ dàng thay đổi quyền người dùng IAM thành quyền bạn muốn tại đây

Bước 7: Thiết lập cài đặt Offload cho S3 (Không bắt buộc)

Lúc này, mọi thứ hầu như đã được cài đặt hoàn chỉnh. Bất kỳ file mới upload sẽ tự động được offload cho Amazon S3.

Ngoài ra, plugin sẽ tự động viết lại URL cho các file để chúng hoạt động từ Amazon S3 thay vì từ máy chủ của bạn.

Bạn có thể kiểm tra quy trình offload này bằng cách tải lên một file media mới và xem lại mã nguồn khi bạn chèn file đấy:

Tuy nhiên, nếu muốn plugin tải các file đã có lên Amazon S3, các bạn sẽ cần phải sử dụng phiên bản cao cấp.

Nếu người dùng muốn điều chỉnh bất kỳ chức năng nào của plugin, việc này thực hiện rất đơn giản.

Nhưng thông thường, thiết lập mặc định đã rất ổn rồi.

Bước 8: Kết nối Amazon S3 với CDN (không bắt buộc)

Lúc đầu mình đã nói chúng ta có thể sử dụng CDN với Amazon S3.

Vì mỗi nhà cung cấp CDN có những quy trình kết nối khác nhau.

Bài viết sẽ không bao quát hết được, nhưng mình sẽ đưa ra một số ý chính để các bạn dễ dàng hình dung.

Nếu các bạn muốn kết nối với Amazon CloudFront, hãy thực hiện ngay với tài khoản AWS của mình bằng cách làm theo hướng dẫn này.

Đối với các CDN như KeyCDN hay Stackpath, tất cả những gì bạn phải làm là nhập URL của bucket Amazon S3 vào phần URL gốc khi thiết lập CDN.

Để tìm URL của bucket S3, chỉ cần làm theo hướng dẫn sau:

https://bucket_name.s3.amazonaws.com/

Ví dụ:

https://dieuhau.s3.amazonaws.com/

Cách này cũng áp dụng được cho Cloudflare với Amazon S3 luôn nhé (có khả năng bạn sẽ cần đổi tên bucket).

Khi bạn đã thiết lập CDN, bạn có toàn quyền sử dụng thiết lập CloudFront của WP Offload Media Lite hay Custom Domain để thay đổi URL file nhằm sử dụng CDN thay vì bucket S3:

url-rewriting-cdn

Nếu bạn muốn sử dụng plugin WordPress S3 khác, các plugin như CDN Enabler, WP CDN Rewrite vẫn sẽ làm được những điều tương tự.

WordPress S3: Một trợ thủ đắc lực

Bằng cách sử dụng plugin WordPress S3, chúng ta sẽ giảm tải được các file và từ đó tận dụng tối đa được cấu trúc của Amazon Web Services.

Mặc dù các bạn sẽ cần tới 30 phút để thiết lập, nhưng một khi quá trình đã hoàn tất thì kết quả nhận được lại vô cùng xứng đáng.

Leave a Reply