WordPress upload file lên S3 và dùng CloudFront – AWS

Amazon S3 là một dịch vụ cho phép lưu trữ tài nguyên, có tính bảo mật cao và hiệu quả được cung cấp lưu trữ cho các ứng dụng như website, ứng dụng mobile, backup và phục hồi dữ liệu dễ dàng.

Hãy tưởng tượng vào một ngày đẹp trời website của bạn bị chèn mã độc, bạn cuống cuồng đi tìm cách khắc phục và đảm bảo là nó ko xảy ra lần nữa hay dựng ngay một server mới nhanh chóng mà không cần quan tâm đến đống tài nguyên khổng lồ đang nằm cùng bộ source thì bạn sẽ thấy nó hữu ích như thế nào.

Amazon CloudFront (CND) có thể hiểu là “mạng phân phối nội dung” như một hệ thống mạng lưới máy chủ trên toàn cầu làm nhiệm vụ lưu bản sao của các nội dung tĩnh bên trong website của bạn, sau đó phân tán nó ra nhiều máy chủ khác ở nhiều nơi trên thế giới (PoP – Points of Presence), các PoP này sẽ gửi tới cho người dùng khi họ truy cập vào.

Một ví dụ dễ hiểu hơn là mình có một website đặt server ở Singapore, những ai ở Việt Nam thì truy cập nhanh hơn do gần hơn về vị trí địa lý, còn những người ở Mỹ thì truy cập chậm hơn rất nhiều. Nên mình sử dụng dịch vụ Cloud Front của AWS để khắc vụ sự cố này. Bây giờ những traffic truy cập từ mỹ đến website của mình nhanh hơn thông qua PoP ở Mỹ. và những người ở Việt Nam thì truy cập thông qua PoP ở Singapore.

Ở bài viết này mình sẽ sử dụng wordpress để ứng dụng 2 dịch vụ trên. Các plugins cần install:

  • Amazon Web Services: Kết nối đến user AWS
  • WP Offload Media Lite: Kết nối với bucket trên S3 và config đường dẫn upload
  • W3 Total Cache: Sử dụng chức năng CDN và kết nối Amazon CloudFront

Bước 1: Login vào AWS sau đó vào phần quản lý IAM trong AWS Management: tùy vào mục đích quản lý ở đây mình sẽ tạo một user có tên CloudFrontFullAccess sẽ có full quyền S3FullAccess và CloudFrontFullAccess vì mình dùng cho cả 2 dịch vụ trên.

Sau khi tạo xong hãy backup lại Access key IDSecret access key.
Bước 2: Vào trang quản lý S3 tạo bucket mới. Quá trình tạo qua khá nhiều bước nên nên mình luôn giữ mặc định và cứ Next tạo xong mình sẽ config lại permisssions sau.
Sau khi tạo mới bucket ta cần config lại permissions để có quyền upload bằng cách click vào Policy generator và nhập các thông tin cần thiết sau đó copy code được generate update cho Bucket policy editor như bên dưới.
Code được generate có dạng như sau:
{
   "Version": "2012-10-17",
   "Id": "Policy1545021892171",
   "Statement": [
      {
        "Sid": "Stmt1545021889975",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::blog.duykhanh.info"
      }
   ]
}

Bước 3: Sẵn đây mình sẽ Create Distribution trên trang quản lý CloudFront Distributions và kết nối Distribution này đến S3 mình vừa tạo.Create Distribution thành công, kiểm tra trạng thái ở cột status là deployed thì mới hoàn thành việc tạo Distribution nó có thể mất đến vài phút.

Copy Domain Name và kiểm tra trên browser nếu hiển thị nội dung xml chứng tỏ ta đã deployed đã thành công.

Bước 4: Việc còn lại bây giờ chỉ là cấu hình trên wordpress mà thôi. Và nhớ hãy cài 3 plugin mình đã nhắc đến ở trên.

Đầu tiên config Access Key ID và Secret Access Key cho plugin Amazon Web Services

Tiếp đến vào setting cho plugin Offload Media Lite để kết nối đến bucket vừa tạo trên S3, config lại đường dẫn, cách quản lý upload file nếu cần.

Như vậy là hiện tại việc upload file đã được quản lý trên S3. Hãy thử vào phần quản lý media upload file và kiểm tra đường link của file nhé.

Tiếp theo vào phần General settings của plugin W3 Total Cache để enable chức năng CDN và chọn dịch vụ Amazon CloudFront ở field CND Type.

Nhập Access Key, Secret Key, Bucket name CDN Name để kết nối S3 CloudFront.

Như vậy là đã config thành công CDN, bước cuối cùng tiến hành thủ công upload lần lượt các tài nguyên hiện tại lên S3 bao gồm: Upload file attachments, wp-includes, theme files, custom file. Sau khi upload lên S3 quá trình đồng bộ của CDN có thể mất vài phút để cập nhật. Vì vậy không nên enable chức năng này trong quá trình develop.

View source và kiểm tra ta đã thấy các tài nguyên đã được sử dụng link từ domain CDN, và đường dẫn file đã được upload trực tiếp trên S3.

Chúc các bạn thành công!

Leave a Reply

Your email address will not be published. Required fields are marked *

Blogs © 2018 Frontier Theme