Cách sử dụng Cloudformation để tạo hàng đợi SQS trên AWS

theanh

Administrator
Nhân viên
AWS Simple Queue Service (SQS) là dịch vụ hàng đợi tin nhắn được quản lý hoàn toàn cho phép chúng ta tách rời và mở rộng quy mô các dịch vụ vi mô, ứng dụng không có máy chủ và hệ thống phân tán. Sử dụng SQS, chúng ta có thể gửi, lưu trữ và nhận tin nhắn giữa các thành phần phần mềm mà không làm mất chúng. AWS SQS cung cấp hai loại hàng đợi tin nhắn, Hàng đợi chuẩn và Hàng đợi FIFO. Để hiểu thêm về Hàng đợi SQS, hãy tìm kiếm bài viết "Cách tạo Hàng đợi SQS trên AWS?".

AWS CloudFormation cho phép chúng ta sử dụng ngôn ngữ lập trình (yaml/json) hoặc tệp văn bản đơn giản để mô hình hóa và cung cấp tất cả các tài nguyên cần thiết cho các ứng dụng của chúng ta. Điều này cung cấp cho chúng ta một nguồn thông tin đáng tin cậy duy nhất cho các tài nguyên AWS của mình.

Trong bài viết này, chúng ta sẽ xem các bước để tạo Hàng đợi Chuẩn và FIFO bằng Cloudformation Stack.

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

  1. Tài khoản AWS (Tạo nếu bạn chưa có).
  2. Hiểu biết cơ bản về Cloudformation Stack.
  3. Hiểu biết cơ bản về Hàng đợi SQS.

Chúng ta sẽ làm gì?​

  1. Đăng nhập vào AWS.
  2. Tạo Hàng đợi Chuẩn bằng Cloudformation Stack
  3. Tạo Hàng đợi FIFO bằng Cloudformation Stack

Đăng nhập vào AWS

  1. Nhấp vào đây để đến Đăng nhập AWS Trang.
Khi chúng ta nhấp vào liên kết trên, chúng ta sẽ thấy một trang web như sau, tại đó chúng ta được yêu cầu đăng nhập bằng thông tin đăng nhập của mình.



Sau khi đăng nhập thành công vào AWS, chúng ta sẽ thấy bảng điều khiển chính có tất cả các dịch vụ được liệt kê.




Tạo Hàng đợi Chuẩn bằng Cloudformation Stack​

Trước khi chúng ta tiến hành tạo Standard Queue, hãy sao chép mã từ khối sau hoặc tải xuống mẫu từtại đâyvà lưu vào máy cục bộ của bạn. Mẫu này sẽ được yêu cầu khi tạo Cloudformation Stack.
Mã:
---AWSTemplateFormatVersion: '2010-09-09'Mô tả: Ngăn xếp này tạo ra một Hàng đợi ChuẩnTham số: DelaySeconds: Mô tả: "Thời gian tính bằng giây mà việc gửi tất cả các tin nhắn trong hàng đợi bị trì hoãn" Loại: Số Mặc định: '5' MaximumMessageSize: Loại: Số Mô tả: "Giới hạn số byte mà một tin nhắn có thể chứa trước khi Amazon SQS từ chối" Mặc định: '262144' MessageRetentionPeriod: Mô tả: "Số giây mà Amazon SQS lưu giữ một tin nhắn." Loại: Số Mặc định: '345600' ReceiveMessageWaitTimeSeconds: Mô tả: "Chỉ định khoảng thời gian, tính bằng giây, mà lệnh gọi hành động ReceiveMessage chờ cho đến khi có tin nhắn trong hàng đợi để đưa tin nhắn đó vào phản hồi" Loại: Số Mặc định: '0' UseeadletterQueue: Mô tả: "Hàng đợi thư chết là hàng đợi mà các hàng đợi (nguồn) khác có thể nhắm mục tiêu cho các tin nhắn không thể xử lý (tiêu thụ) thành công." Loại: Chuỗi AllowedValues: - 'true' - 'false' Mặc định: 'false' VisibilityTimeout: Mô tả: "Thời gian này phải dài hơn thời gian cần thiết để xử lý và xóa tin nhắn" Loại: Số Mặc định: '5'Ánh xạ: {}Điều kiện: CreateDeadLetterQueue: Fn::Equals: - Tham chiếu: UsedeadletterQueue - 'true'Tài nguyên: SQSQueue: Loại: AWS::SQS::Queue Thuộc tính: DelaySeconds: Tham chiếu: DelaySeconds MaximumMessageSize: Tham chiếu: MaximumMessageSize MessageRetentionPeriod: Tham chiếu: MessageRetentionPeriod ReceiveMessageWaitTimeSeconds: Tham chiếu: ReceiveMessageWaitTimeSeconds RedrivePolicy: Fn::If: - CreateDeadLetterQueue - deadLetterTargetArn: Fn::GetAtt: - MyDeadLetterQueue - Arn maxReceiveCount: 5 - Ref: AWS::NoValue VisibilityTimeout: Ref: VisibilityTimeout MyDeadLetterQueue: Điều kiện: CreateDeadLetterQueue Kiểu: AWS::SQS::QueueĐầu ra: QueueURL: Mô tả: URL của SQS đã tạo Giá trị: Ref: SQSQueue QueueARN: Mô tả: ARN của SQS đã tạo Giá trị: Fn::GetAtt: - SQSQueue - Arn QueueName: Mô tả: Tên của SQS đã tạo Giá trị: Fn::GetAtt: - SQSQueue - QueueName DeadLetterQueueURL: Điều kiện: CreateDeadLetterQueue Mô tả: URL của hàng đợi thư chết Giá trị: Ref: MyDeadLetterQueue DeadLetterQueueARN: Điều kiện: CreateDeadLetterQueue Mô tả: ARN của hàng đợi thư chết Giá trị: Fn::GetAtt: - MyDeadLetterQueue - Arn
Để tạo Standard Queue bằng Cloudformation Stack, hãy nhấp vào "Services" từ thanh menu trên cùng và tìm kiếm "Cloudformation".



Trên bảng điều khiển chính của Cloudformation, hãy nhấp vào "Create Stack" để tạo một stack.



Để tải mẫu lên từ máy cục bộ của bạn, hãy nhấp vào nút radio "Upload a template file" và nhấp vào "Next".



Chỉ định tên cho stack sẽ được tạo và điền thông tin chi tiết bắt buộc hoặc tiếp tục với các giá trị mặc định và nhấp vào "Next".



Chỉ định thẻ có thể áp dụng cho SQS khi tạo và nhấp vào "Next".



Cuộn xuống trang và nhấp vào nút "Create Stack" để tạo một stack sẽ tạo Standard Queue.



Bạn có thể xem trạng thái trong Events. Khi trạng thái thay đổi thành "CREATE_COMPLETE" của ngăn xếp, điều này có nghĩa là Hàng đợi đã được tạo.



Nhấp vào "Dịch vụ" và tìm kiếm "SQS" để xem hàng đợi đã được tạo hay chưa.



Trên bảng điều khiển chính của SQS, bạn có thể thấy Hàng đợi đã được tạo và tên được đặt cho Hàng đợi là tên Cloudformation Stack với một số chuỗi hậu tố ngẫu nhiên, lý do cho điều này là chúng tôi đã không chỉ định Tên hàng đợi trong ngăn xếp.


Tạo Hàng đợi FIFO bằng Cloudformation Stack​

Trước khi tiến hành tạo Hàng đợi FIFO, hãy sao chép mã từ khối sau hoặc tải xuống mẫu từtại đâyvà lưu vào hệ thống cục bộ của bạn.
Mã:
---AWSTemplateFormatVersion: '2010-09-09'Mô tả: Ngăn xếp này tạo một Hàng đợi FIFOTham số: ContentBasedDeduplication: Mô tả: Chỉ định xem có bật chức năng loại bỏ trùng lặp dựa trên nội dung hay không Kiểu: Chuỗi AllowedValues: - 'true' - 'false' Mặc định: 'true' QueueName: Mô tả: Ngăn xếp này sẽ thêm .fifo vào cuối tên Hàng đợi. Kiểu: Chuỗi DelaySeconds: Mô tả: "Thời gian tính bằng giây để phân phối tất cả các tin nhắn trong hàng đợi" Kiểu: Số Mặc định: '5' MaximumMessageSize: Kiểu: Số Mô tả: "Giới hạn số byte mà một tin nhắn có thể chứa trước Amazon" Mặc định: '262144' MessageRetentionPeriod: Mô tả: "Số giây mà Amazon SQS lưu giữ một tin nhắn." Loại: Số Mặc định: '345600' ReceiveMessageWaitTimeSeconds: Mô tả: "Chỉ định khoảng thời gian, tính bằng giây, mà lệnh gọi hành động ReceiveMessage chờ cho đến khi có tin nhắn trong hàng đợi để đưa tin nhắn đó vào phản hồi" Loại: Số Mặc định: '0' UseeadletterQueue: Mô tả: "Hàng đợi thư chết là hàng đợi mà các hàng đợi (nguồn) khác có thể nhắm mục tiêu cho các tin nhắn không thể xử lý (tiêu thụ) thành công." Loại: Chuỗi AllowedValues: - 'true' - 'false' Mặc định: 'false' VisibilityTimeout: Mô tả: "Thời gian này phải dài hơn thời gian cần thiết để xử lý và xóa tin nhắn" Loại: Số Mặc định: '5'Ánh xạ: {}Điều kiện: CreateDeadLetterQueue: Fn::Equals: - Tham chiếu: UsedeadletterQueue - 'true'Tài nguyên: SQSQueue: Loại: AWS::SQS::Queue Thuộc tính: ContentBasedDeduplication: Tham chiếu: ContentBasedDeduplication FifoQueue: 'true' QueueName: Fn::Join: - '' - - Tham chiếu: QueueName - ".fifo" MaximumMessageSize: Tham chiếu: MaximumMessageSize MessageRetentionPeriod: Tham chiếu: MessageRetentionPeriod ReceiveMessageWaitTimeSeconds: Tham chiếu: ReceiveMessageWaitTimeSeconds RedrivePolicy: Fn::If: - CreateDeadLetterQueue - deadLetterTargetArn: Fn::GetAtt: - MyDeadLetterQueue - Arn maxReceiveCount: 5 - Ref: AWS::NoValue VisibilityTimeout: Ref: VisibilityTimeout MyDeadLetterQueue: Condition: CreateDeadLetterQueue Type: AWS::SQS::Queue Properties: FifoQueue: 'true' QueueName: Fn::Join: - '' - - Ref: QueueName - Deadletter - ".fifo"Đầu ra: QueueURL: Mô tả: URL của SQS đã tạo Giá trị: Ref: SQSQueue QueueARN: Mô tả: ARN của SQS đã tạo Giá trị: Fn::GetAtt: - SQSQueue - Arn QueueName: Mô tả: Tên của SQS đã tạo Giá trị: Fn::GetAtt: - SQSQueue - QueueName
Quay lại bảng điều khiển chính của Cloudformation và làm theo các bước tương tự như chúng ta đã làm để tạo Standard Queue.



Sau khi ngăn xếp được tạo, bạn có thể thấy rằng FIFO Queue đã sẵn sàng để sử dụng. Tại đây, bạn thấy rằng FIFO Queue không có chuỗi ngẫu nhiên nào, lý do là chúng ta có một tùy chọn trong Cloudformation Template nơi chúng ta có thể chỉ định tên cho Queue sẽ được tạo.



Nếu không cần Queue nữa, bạn có thể xóa chúng bằng cách xóa Cloudformation Stack khỏi bảng điều khiển chính.




Kết luận​

Trong bài viết này, chúng ta đã thấy các bước để tạo Standard Queue và FIFO Queue bằng Cloudformation Stack.
 
Back
Bên trên