Cách tự động hóa tài nguyên AWS của bạn với mẫu CloudFormation

theanh

Administrator
Nhân viên
AWS CloudFormation là một dịch vụ cho phép quản trị viên hệ thống thiết lập và quản lý toàn bộ bộ sưu tập tài nguyên AWS - bao gồm cấu hình, sự phụ thuộc và mối quan hệ giữa chúng - trong một câu lệnh duy nhất. Họ cũng có thể thực hiện các thay đổi đối với cơ sở hạ tầng hiện có mà không cần dừng hoặc triển khai lại các ứng dụng đang chạy trên đó.

AWS Cloudformation cho phép bạn cấu hình cơ sở hạ tầng của mình dưới dạng mã. Về cơ bản, đây là một cơ sở hạ tầng dưới dạng công cụ mã hoạt động trên đám mây và giúp người dùng cung cấp và quản lý tài nguyên tính toán, lưu trữ và các tài nguyên khác. Mẫu CloudFormation là tệp JSON có các chỉ thị về cách tạo hoặc cập nhật tài nguyên AWS. Chúng ta có thể sử dụng AWS CLI, AWS SDK như boto3 hoặc dịch vụ AWS CloudFormation để tạo mẫu.

CloudFormation cung cấp nhiều lợi thế như:
  • Dễ sử dụng: CloudFormation sử dụng định dạng mẫu cho phép bạn mô tả tất cả các thuộc tính và mối quan hệ của tài nguyên AWS tại một nơi.
  • Linh hoạt khi đưa ra thị trường: CloudFormation cho phép bạn xây dựng và triển khai tài nguyên AWS dưới dạng mã.
  • Mức độ tự động hóa cao: CloudFormation chuyển đổi mã cấp cao thành một tập hợp các mẫu đơn giản có thể được sử dụng để tạo hoặc cập nhật tài nguyên AWS.
Nếu bạn đang muốn tự động hóa việc triển khai khối lượng công việc của mình trên AWS, thì sử dụng CloudFormation là một trong những cách tốt nhất để thực hiện điều đó.

Trong bài viết này, chúng tôi sẽ giới thiệu sơ lược về CloudFormation và sử dụng CloudFormation để tự động hóa tài nguyên AWS của bạn. Hướng dẫn này sử dụng tài nguyên S3 để minh họa. Sau hướng dẫn này, bạn sẽ có thể tạo, cập nhật và xóa một số tài nguyên AWS bằng CloudFormation. Bạn cũng có thể tìm hiểu cách bắt đầu tạo mẫu CloudFormation của riêng mình.

Điều kiện tiên quyết​

Để làm theo hướng dẫn này, bạn cần có các điều kiện tiên quyết sau:
  • AWS CLI được cài đặt trên máy cục bộ của bạn ở phiên bản 1.6.1 trở lên và được định cấu hình với vùng mặc định. Phiên bản tương tự cũng nên được cấu hình cho Python 2.6 hoặc 3+.
  • Hiểu biết cơ bản về các dịch vụ AWS và một số kinh nghiệm về AWS Console.

Tạo ngăn xếp đầu tiên của bạn​

Bây giờ bạn đã chuẩn bị xong các điều kiện tiên quyết, hãy bắt đầu bằng cách cấu hình và tạo ngăn xếp đầu tiên của bạn.

1. Mở trình duyệt yêu thích của bạn. Điều hướng đến kho lưu trữ GitHub này và tải xuống ba tệp vào ổ cứng cục bộ của bạn.
  • createstack.json
  • updatestack1.json
  • updatestack2.json


2. Bây giờ, hãy điều hướng đến AWS Console --->CloudFormation của bạn.



3. Bạn sẽ thấy màn hình sau. Nhấp vàoTạo ngăn xếp ---> Với tài nguyên mới.



4. Bạn sẽ thấy màn hình sau. Nhấp vàoMẫu đã sẵn sàng --->Tải tệp mẫu lên ---> Chọn tệp ----> Chọn tệp createstack.jsonmà bạn đã tải xuống trước đó--->Tiếp theo.

Khi bạn tạo ngăn xếp mới, bạn phải cung cấp mẫu cho ngăn xếp của mình. Bạn có thể thực hiện việc này theo ba cách:
  • Mẫu đã sẵn sàng: hãy chọn tùy chọn này nếu bạn đã có mẫu trong tay. Nếu không, hãy chuyển sang tùy chọn tiếp theo.
  • Sử dụng mẫu: sử dụng tùy chọn này để giúp bạn bắt đầu tạo mẫu. Hướng dẫn sử dụng AWS cung cấp một số ví dụ về mẫu CloudFormation.
  • Tạo mẫu trong Designer: AWS CloudFormation Designer là cách mới nhất để tạo ngăn xếp của bạn. Nó sử dụng giao diện kéo và thả, tương tự như các công cụ phổ biến khác như Sharepoint, để giúp bạn tạo mẫu của mình.
Bản demo này sử dụng tùy chọn đầu tiên, "Mẫu đã sẵn sàng", vì bạn đã có các mẫu trong tay (các tệp bạn đã tải xuống đĩa của mình).



Bạn có thể mở tệp createstack.jsontrong trình soạn thảo của mình để xem tệp đó. Bạn sẽ thấy các dòng sau trong tệp createstack.json.
  • "Resources": { là phần mà AWS CloudFormation tạo ra. Đây là nhóm tất cả các tài nguyên vật lý mà bạn sẽ tạo.
  • "catpics": là tài nguyên logic, có loại là S3 Bucket.
  • "Type": "AWS::S3::Bucket" là tài nguyên vật lý mà AWS CloudFormation sẽ tạo.


5. Trên màn hình tiếp theo, hãy cung cấp tên cho ngăn xếp của bạn (htf) và nhấp vào Tiếp theo. Mỗi ngăn xếp yêu cầu một tên duy nhất trong vùng AWS để bạn có thể phân biệt chúng. Bạn không thể sử dụng bất kỳ ký tự đặc biệt nào ở đây, chỉ được sử dụng chữ cái, số và dấu gạch dưới (không có khoảng trắng). AWS tự động tạo một ID ngăn xếp duy nhất để dễ dàng nhận dạng.



6. Trên màn hình tiếp theo, hãy giữ nguyên mặc định và nhấp vào Tiếp theo.



7. Trên màn hình tiếp theo, hãy giữ nguyên mặc định và nhấp vàoTạo ngăn xếp.



Lúc này, AWS CloudFormation sẽ tải mẫu và tạo ngăn xếp cho bạn. CloudFormation sẽ kiểm tra từng phần của mẫu và tạo tài nguyên vật lý tương ứng cho mẫu đó. Trong một số trường hợp, AWS CloudFormation sẽ thực hiện một số lần kiểm tra trên mẫu của bạn để đảm bảo mọi thứ đều ổn thỏa. Nếu phát hiện ra lỗi, bạn sẽ nhận được thông báo lỗi mô tả vấn đề và cách khắc phục.

Quá trình tạo mất khoảng 4-5 phút để tạo mẫu. Bạn có thể xem những gì đang diễn ra bằng cách xem trạng thái của ngăn xếp trên bảng điều khiển CloudFormation của mình, như được hiển thị bên dưới. Bạn có thể thấy các tài nguyên logic catpics ở phía bên trái và trong mỗi tài nguyên này, bạn có thể thấy các tài nguyên vật lý mà AWS CloudFormation đang tạo cho chúng (CREATE_IN_PROGRESS).



Bạn có thể điều hướng đến tab tài nguyên để xem các tài nguyên vật lý đang được tạo cho ngăn xếp này. Trong trường hợp này, đó là mộtS3 Bucket có tên làcatpicsvới ID tài nguyên vật lýlà htf-catpics-1roqn54xwm3of, như được hiển thị bên dưới.



8.Bây giờ, hãy điều hướng đến bảng điều khiển S3 của bạn. Trên bảng điều khiển S3 của bạn, bạn có thể thấy các đối tượng đang được tạo trong thùng. Trong trường hợp này, tên ngăn xếp cho thùng S3 là htf-catpics-1roqn54xwm3of, như bạn có thể thấy bên dưới.





Bạn có thể thấy rằng tên của thùng tuân theo mẫu này: tên ngăn xếp của bạn (htf) - tên ngăn xếp logic của bạn (catpics) - một chuỗi ngẫu nhiên (1roqn54xwm3of). Bạn cần biết mẫu này rất quan trọng. Khi bạn không chỉ định ID tài nguyên vật lý của mình trong mẫu, AWS CloudFormation sử dụng mẫu này để tạo tên cho tài nguyên của bạn. Sức mạnh của điều này là giờ đây bạn có thể sử dụng cùng một mẫu để tạo nhiều ngăn xếp; AWS CloudFormation sẽ tự động xử lý việc đặt tên duy nhất cho chúng cho bạn!

Đối với một dịch vụ như S3, một tên duy nhất rất quan trọng; tên của thùng phải là duy nhất toàn cục để bạn có thể lưu trữ dữ liệu vào đó. Tên thùng của bạn không được giống nhau. Bạn sẽ không đẩy được đối tượng vào thùng nếu bạn cố đặt tên cho nó bằng cùng một tên.

Điều quan trọng là phải hiểu tại sao điều này lại quan trọng. Bởi vì với CloudFormation, bạn không nên đặt tên rõ ràng cho ID tài nguyên vật lý trong mẫu của mình. Thay vào đó, hãy để AWS CloudFormation tự động tạo một tên cho bạn. Điều này có nghĩa là bạn có thể sử dụng lại mẫu của mình để tạo nhiều ngăn xếp với các tài nguyên khác nhau mà không phải lo lắng về xung đột tên. Bạn có thể sử dụng mẫu của mình một lần, mười lần hoặc một trăm lần và CloudFormation sẽ xử lý các thay đổi về tên cho phù hợp.

Cập nhật ngăn xếp của bạn​

Bây giờ bạn đã tạo ngăn xếp đầu tiên của mình bằng AWS CloudFormation, hãy cùng xem xét cách cập nhật ngăn xếp. Cách cập nhật ngăn xếp là khái niệm rất quan trọng cần hiểu, cho cả mục đích sử dụng sản xuất hoặc cho kỳ thi của bạn. Bạn có thể sẽ được yêu cầu thay đổi một cái gì đó trong mẫu của mình trong kỳ thi hoặc có lẽ bạn cần cập nhật một cái gì đó trong ngăn xếp của mình.

Trong phần này, bạn sẽ thực hiện một số thay đổi mẫu và sử dụng các mẫu đã cập nhật đó để cập nhật ngăn xếp của mình và đánh giá những thay đổi nào được thực hiện đối với tài nguyên của bạn.

Nói chung, khi cập nhật ngăn xếp trong CloudFormation. Bạn sẽ lấy mẫu mà bạn đã sử dụng để tạo ngăn xếp và thêm tài nguyên mới, cập nhật tài nguyên hiện có hoặc xóa tài nguyên hiện có.

1. Mở tệp updatestack1.json mà bạn đã tải xuống trước đó trong trình chỉnh sửa của mình, bạn sẽ thấy các khối mã sau. Hãy so sánh mẫu này với mẫu createstack.json mà bạn đã sử dụng trước đó. Bạn có thể thấy rằng chúng ta sẽ thêm một tài nguyên logic bổ sung có tên là dogpics. Quan trọng hơn, không có thay đổi nào được thực hiện đối với bất kỳ tài nguyên logic hiện có nào, đó là catpics hiện có. Các tài nguyên catpics không bị thay đổi hoặc xóa. Tôi sẽ chỉ thêm một tài nguyên logic bổ sung, đó là dogpics.



2. Điều hướng đến bảng điều khiển CloudFormation của bạn. Chọn ngăn xếp của bạn (htf) và nhấp vào Cập nhật.



3. Trên màn hình tiếp theo, chọn Thay thế mẫu hiện tại ---> Tải tệp mẫu lên ---> Chọn Tệp ---> Chọn tệp updatestack1.json của bạn ---> Tiếp theo.



4. Trên màn hình tiếp theo, nhấp vào Tiếp theo ---> Tiếp theo ---> Cập nhật ngăn xếp, như hiển thị bên dưới. Bạn có thể thấy rằng CloudFormation hiển thị cho bạn những thay đổi sẽ được thực hiện.Trong trường hợp này, chúng tôi đã thêm một ID logic có tên là dogpics.CloudFormation cũng hiển thị cho chúng tôi hành động sẽ được thực hiện (Thêm) và Loại tài nguyên logic (AWS::S3::Bucket). Cột Thay thế để trống.



Giống như khi bạn tạo ngăn xếp, bạn có thể xem các sự kiện cập nhật từ trang ngăn xếp. Tất cả các bản cập nhật đều được thực hiện từ CloudFormation. Trong trường hợp này, nó đã truyền một ID tài nguyên logic bổ sung, đó là dogpics.



Sau khi quá trình cập nhật hoàn tất, bạn có thể thấy bên dưới rằng chúng ta có cả tài nguyên catpicsdogpics trong ngăn xếp của mình.



Điều hướng đến bảng điều khiển S3 của bạn và bạn có thể thấy rằng một thùng dogpics bổ sung có tên htf-dogpics-4qesklu84ugq đã được tạo. Bạn có thể thấy rằng việc đặt tên cho thùng sử dụng cùng một mẫu theo sau tên ngăn xếp-tên ngăn xếp logic-chuỗi ngẫu nhiên.



Tại thời điểm này, chúng ta chỉ thêm các tài nguyên logic mới vào tài nguyên của mình, điều này khá đơn giản và ít rủi ro. Bây giờ chúng tôi sẽ chỉ cho bạn cách xóa tài nguyên khỏi ngăn xếp của mình.

Chúng ta sẽ xóa tài nguyên dogpics khỏi ngăn xếp của mình. Điều này rủi ro hơn việc thêm vì việc xóa tài nguyên có thể làm hỏng ngăn xếp của bạn. Vì chúng ta vẫn đang học, hãy thực hành điều này bằng cách xóa tài nguyên dogpics của chúng ta để xem điều gì xảy ra

5.Điều hướng đến bảng điều khiển CloudFormation của bạn. Chọn ngăn xếp htf của bạn, nhấp vào Cập nhật --->Thay thế mẫu hiện tại ---> Chọn tệp ---> lần này chúng ta sẽ chọn lại tệp createstack.json ---> Tiếp theo ---> Tiếp theo --->Tiếp theo.



6.Trên màn hình tiếp theo, nhấp vào Cập nhật ngăn xếp. Trong Xem trước bộ thay đổi, bạn có thể thấy cột Hành động hiện là: Xóa. Trong trường hợp này, CloudFormation xóa tài nguyên dogpics và các tài nguyên vật lý tương ứng (htf-dogpics-4qesklu84ugq).



Điều hướng đến bảng điều khiển S3 của bạn, bạn có thể thấy rằng thùng dogpics hiện đã biến mất khỏi bảng điều khiển S3 của bạn.



Bạn sẽ thấy sự kiện DELETE_COMPLETE trong sự kiện Stack của mình.



Xóa các tài nguyên logic có một chút rủi ro vì nó có thể xóa mọi thứ, nhưng rủi ro đó chỉ liên quan đến các tài nguyên logic mà bạn đã xóa khỏi mẫu (các tài nguyên dogpics). Cho đến nay, chúng tôi chưa thực hiện bất kỳ thay đổi nào đối với bất kỳ tài nguyên logic hiện có nào khác như tài nguyên catpics. Vì vậy, các tài nguyên vật lý catpics không thể bị ảnh hưởng bởi bất kỳ bản cập nhật ngăn xếp nào. Có một tùy chọn khác để cập nhật ngăn xếp của bạn. Sử dụng tùy chọn này, chúng ta có thể thay đổi cấu hình cho một tài nguyên logic hiện có.

7. Mở tệp updatestack2.jsonmà bạn đã tải xuống trước đó trong trình chỉnh sửa của mình, bạn sẽ thấy khối mã sau.

Tệp updatestack2.json trông rất giống với mẫu createstack.json mà bạn đã sử dụng trước đó, ngoại trừ hai điểm khác biệt chính. Chúng tôi lại thêm tài nguyên logic thứ hai, dogpics. Nhưng chúng tôi cũng đã thực hiện một thay đổi đối với catpics.

Chúng tôi đã thêm một phần bổ sung vào cấu hình, được gọi là Thuộc tính, nơi chúng tôi có thể xác định các thuộc tính bổ sung cho một tài nguyên logic nhất định. Trong trường hợp này, chúng tôi sẽ tạo một thùng S3. Chúng tôi đặt rõ ràng tên thùng của tài nguyên vật lý là catsareawesome-howtoforge.



8. Điều hướng đến bảng điều khiển CloudFormation của bạn. Chọn ngăn xếphtfcủa bạn, nhấp vàoCập nhật--->Thay thế mẫu hiện tại--->Chọntệp---> lần này chúng ta sẽ chọnupdatestack2.jsontệp --->Tiếp theo ---> Tiếp theo --->Tiếp theo.



9.Trên màn hình tiếp theo, nhấp vào Cập nhật ngăn xếp. Lưu ý bảng Xem trước bộ thay đổi, bạn có thể biết tác động của bản cập nhật này sẽ như thế nào.

Thay đổi đầu tiên có vẻ quen thuộc. Chúng ta sẽ thêm một tài nguyên logic bổ sung cho dogpics, đó sẽ là một thùng S3. Nhưng chúng ta cũng thấy một hành động Sửa đổi. Và sửa đổi thực sự là điều rủi ro nhất mà bạn có thể làm với ngăn xếp CloudFormation.

Lý do cho điều đó là các tài nguyên hiện có, được đặt tại chỗ và có khả năng được các môi trường khác sử dụng, có thể bị thay đổi bởi bản cập nhật ngăn xếp. Vì vậy, việc sửa đổi các tài nguyên logic hiện có có khả năng rủi ro hơn khi sử dụng.

Có 3 khả năng tài nguyên vật lý bị ảnh hưởng khi bạn cập nhật ngăn xếp theo cách này. Khả năng đầu tiên là tài nguyên được cập nhật mà không làm gián đoạn dịch vụ.

Khả năng thứ hai là tài nguyên được cập nhật và dịch vụ bị gián đoạn ở một mức độ nào đó. Ví dụ: khi bạn cập nhật ngăn xếp để thay đổi kích thước phiên bản EC2. Khi thực hiện việc này, bạn sẽ cần khởi động lại phiên bản EC2 theo cách thủ công. Một AMI mới sẽ được khởi chạy và bạn có thể gặp phải một số thời gian ngừng hoạt động. Nhưng sau khi AMI mới được khởi chạy, dịch vụ của bạn sẽ khả dụng ngay lập tức.

Khả năng cuối cùng là bản cập nhật sẽ xóa toàn bộ tài nguyên vật lý hiện có của bạn và thay thế bằng một tài nguyên mới (Thay thế). Đây là khả năng rủi ro nhất khi cập nhật ngăn xếp CloudFormation của bạn. Bạn thực sự nên chú ý khi thực hiện việc này. Khi loại thay thế này xảy ra, cột Thay thế sẽ là Đúng, như được hiển thị trong ảnh chụp màn hình bên dưới.



Trên bảng điều khiển CloudFormation Stacks của bạn, bạn có thể thấy thông báo "Yêu cầu cập nhật yêu cầu tạo tài nguyên vật lý mới; do đó cần tạo một tài nguyên". Vì vậy, CloudFormation xóa tài nguyên hiện có và tạo một tài nguyên mới.



Điều hướng đến bảng điều khiển S3 của bạn, bạn sẽ thấy rằng thùng catpics hiện đã biến mất và một thùng mới, catsareawesome-howtoforge, đã được tạo. Lưu ý rằng chúng tôi cung cấp rõ ràng tên vật lý (catsareawesome-howtoforge) cho một tài nguyên bên trong mẫu CloudFormation, nó không áp dụng bất kỳ ký tự ngẫu nhiên nào cho tên tài nguyên.



Vấn đề với điều đó là nếu chúng ta sử dụng mẫu này để tạo một ngăn xếp CloudFormation khác, nó sẽ không thành công vì nó sẽ cố gắng tạo một thùng khác có cùng tên. Và bạn không thể có 2 thùng có cùng tên trong bất kỳ tài khoản AWS nào. Bạn sẽ nhận được lỗi sau khi cố gắng tạo một thùng khác có cùng tên.


Xóa ngăn xếp CloudFormation của bạn​

Bây giờ chúng ta đã thay đổi mẫu và cập nhật ngăn xếp của mình, chúng ta cần đảm bảo rằng chúng ta xóa ngăn xếp sau khi hoàn tất công việc trên đó. Nếu chúng ta không xóa các ngăn xếp chưa sử dụng, nó sẽ vẫn nằm trong bảng điều khiển CloudFormation Stack của chúng ta vô thời hạn. Chúng ta sẽ phải vào đó và xóa thủ công.

Từ bảng điều khiển CloudFormation của bạn, hãy chọn ngăn xếp của bạn, sau đó chọn Xóa. Khi CloudFormation xóa ngăn xếp, nó cũng xóa tất cả các tài nguyên trong ngăn xếp đó. Không có cách nào để chỉ xóa một tài nguyên như thùng S3 hoặc phiên bản EC2. Hành động này được thực hiện theo thiết kế.


Kết luận​

Trong hướng dẫn này, chúng ta đã xem xét cách các ngăn xếp CloudFormation được tạo và thay đổi. Chúng ta đã xem xét một số cách để thay đổi mẫu và cách cập nhật các ngăn xếp hiện có. Sau đó, chúng ta đã xem xét một số khả năng liên quan đến việc cập nhật các ngăn xếp. Và cuối cùng, chúng ta đã xem xét cách xóa các ngăn xếp CloudFormation sau khi bạn hoàn thành công việc trên chúng.

Vui lòng để lại bình luận bên dưới nếu bạn có bất kỳ câu hỏi hoặc đề xuất nào. Cảm ơn bạn đã đọc!
 
Back
Bên trên