Có thể bạn cần xem:
- DevOps trend – 8 dự đoán trong nhiều năm tới
- DevOps là gì? Tìm hiểu về DevOps
- Bạn đang là kiểu lập trình viên nào?
Xem thêm việc làm DevOps Developer trên TopDev
Chào mừng bạn quay trở lại trong chuỗi series Devops ngày 2 trong 100 ngày của mình, mình muốn bắt đầu hành trình này với một trong những khái niệm quan trọng nhất trong Simple Notification Service(SNS).
Problem Statement :
Để gửi thông báo qua Email, SMS .. khi có sự kiện xảy ra.
Solution :
Điều này bạn có thể thực hiện được thông qua một trong 3 cách dưới đây :
AWS Console
AWS CLI
Terraform
LƯU Ý: Mình nhắc lại đây không phải là các danh sách đầy đủ thực hiện và có nhiều cách hơn để đạt được điều tương tự .
SNS là gì?
AWS SNS là một dịch vụ web dùng để điều phối và quản lý việc chuyển hoặc gửi tin nhắn đến các điểm cuối hoặc khách hàng đăng ký.
mình đã thấy điều này hoạt động tốt đối với CloudWatch (Monitor CPU cao hoặc Kiểm tra trạng thái hệ thống), khi có 1 sự kiện nào đó xảy ra và SNS được sử dụng để gửi thông báo, CloudWatch kết hợp với SNS tạo ra một giải pháp giám sát đầy đủ và thông báo cho quản trị viên kịp thời trong các trường hợp có bất kỳ vấn nào xảy ra (vd CPU cao, Dftimeime, instance restart … ).
SNS có 3 thành phần chính :
Publisher :
Topic :
Subscriber :
Chúng ta hãy xem SNS hoạt động :
1 – Using the AWS Console Step1: Create a topic
1 – In the Amazon SNS console, choose Create topic.
Step2: Subscribe to a Topic
Choose to Create a subscription. The Create Subscription dialog box appears.
Truy cập email của bạn và xác nhận đăng ký
Step3: Publish to the topic
Choose the Publish to the topic button. The Publish a Message page appears.
Đừng bỏ lỡ Phần 1:
2 – Using AWS CLI Step 1: Create a topic
1 2 3 |
aws sns create-topic --name "my-demo-sns-topic"{"TopicArn": "arn:aws:sns:us-west-2:1234556667:my-demo-sns-topic"} |
Step2: Subscribe to a Topic
1 2 3 |
aws sns subscribe --topic-arn arn:aws:sns:us-west-2:123456667:my-demo-sns-topic --protocol email --notification-endpoint test@gmail.com{"SubscriptionArn": "pending confirmation"} |
Step3: Publish to the topic
1 2 3 |
aws sns publish --topic-arn arn:aws:sns:us-west-2:1234567:my-demo-sns-topic --message "hello from sns"{"MessageId": "d651b7d5-2d66-58c8-abe4-e30822a3aa3e"} |
To list all the subscriptions
1 2 3 |
aws sns list-subscriptions{"Subscriptions": [{"Owner": "1234567889","Endpoint": "test@gmail.com","Protocol": "email","TopicArn": "arn:aws:sns:us-west-2:1234567788:HighCPUUtilization","SubscriptionArn": "arn:aws:sns:us-west-2:1234567788:HighCPUUtilization:a28e2be8-40cd-4f8b-83d9-33b2c858749d"}, |
Unsubscribe from a Topic
1 2 3 |
aws sns unsubscribe --subscription-arn arn:aws:sns:us-west-2:1234567899:my-demo-sns-topic:f28124be-850b-4a2e-8d3e-a3dc4f7cca1a |
Delete a topic
1 2 3 |
aws sns delete-topic --topic-arn arn:aws:sns:us-west-2:1234567788:my-demo-sns-topic |
List a topic
1 2 3 |
aws sns list-topics{"Topics": [{"TopicArn": "arn:aws:sns:us-west-2:123333345555:mydemosnstopic"}]} |
3 – Using Terraform
main.tf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
resource "aws_sns_topic" "alarm" { name = "alarms-topic" delivery_policy = <<EOF { "http": { "defaultHealthyRetryPolicy": { "minDelayTarget": 20, "maxDelayTarget": 20, "numRetries": 3, "numMaxDelayRetries": 0, "numNoDelayRetries": 0, "numMinDelayRetries": 0, "backoffFunction": "linear" }, "disableSubscriptionOverrides": false, "defaultThrottlePolicy": { "maxReceivesPerSecond": 1 } } } EOF provisioner "local-exec" { command = "aws sns subscribe --topic-arn ${self.arn} --protocol email --notification-endpoint ${var.alarms_email}" } } |
variables.tf
1 2 3 4 5 |
variable "alarms_email" { default = "laprashant@gmail.com" } |
outputs.tf
1 2 3 4 |
value = "${aws_sns_topic.alarm.arn}" } |
Mình hy vọng các bạn tham gia hành trình này và dành tối thiểu một giờ mỗi ngày trong 100 ngày tiếp theo cho công việc DevOps . Chúc các bạn thành công ????
Nguồn tham khảo : https://techzones.me/2019/09/26/100-ngay-hoc-devops-ngay-2/
Có thể bạn cần xem:
Xem thêm việc làm DevOps Developer trên TopDev