Khai bút mồng 1 tết âm lịch 2023, tiếp nối AWS Series, trong bài hôm nay mình sẽ giới thiệu các bạn nội dung về AWS SNS. Về cách làm một bài lab về SNS Topic như nhận mail thông báo khi có tác động update hoặc delete objects trên S3 Bucket
AWS SNS là gì?
SNS là viết tắt của Simple Notification Service – Dịch vụ Thông báo Đơn giản. Nhìn chung là giúp dễ dàng thiết lập, vận hành và gửi thông báo từ AWS, quản lý cung cấp gửi tin nhắn từ publishers đến subscribers. Người dùng có thể subscribe SNS Topic và nhận tin nhắn đã xuất bản bằng loại điểm cuối được hỗ trợ, chẳng hạn như Amazon Kinesis Data Firehose, Amazon SQS, AWS Lambda, HTTP, email, thông báo di động và tin nhắn văn bản di động (SMS)….
Src: https://docs.aws.amazon.com/images/sns/latest/dg/images/sns-delivery-protocols.png
Trong bài hôm nay mục tiêu sẽ như hình sau nhé
Task 1: Tạo SNS Topic
Có nhiều cách tạo 1 SNS Topic, bạn có thể tìm SNS xong chọn Create Topic và đặt tên Topic bạn muốn, các thông số để default, chúng ta có thể update sau như Access Policy
Cách 2: bạn có thể sử dụng AWS Cli theo mẫu command dưới đây, lưu ý mình có push vào 1 policy là Access Policy, nhớ change Account Id, Bucket ARN, Bucket name nhé
- aws sns create-topic \
–name rmit-test-noti \
–attributes
‘{“Policy”: “{\”Version\”:\”2012-10-17\”,\”Id\”:\”example-ID\”,\”Statement\”:[{\”Sid\”:\”ExampleSNStopicpolicy\”,\”Effect\”:\”Allow\”,\”Principal\”:{\”Service\”:\”s3.amazonaws.com\”},\”Action\”:\”SNS:Publish\”,\”Resource\”:\”arn:aws:sns:ap-southeast-1:668711278733:rmit-test-noti\”,\”Condition\”:{\”StringEquals\”:{\”aws:SourceAccount\”:\”668711278733\”},\”ArnLike\”:{\”aws:SourceArn\”:\”arn:aws:s3:::rmit-test312\”}}}]}”}'
Cách 3: Bạn có thể tạo một sns topic default như cách một nhưng qua command, rồi add Access Policy vào theo 2 command dưới đây. Và nhớ thay đổi tham số của bạn
- aws sns create-topic \
–name rmit-test-noti - aws sns set-topic-attributes –topic-arn ‘arn:aws:sns:ap-southeast-1:668711278733:rmit-test-noti' –attribute-name ‘Policy' –attribute-value file://testpolicy.json
Content of testpolicy.json file
{
“Version”: “2012-10-17”,
“Id”: “example-ID”,
“Statement”: [
{
“Sid”: “Example SNS topic policy”,
“Effect”: “Allow”,
“Principal”: {
“Service”: “s3.amazonaws.com”
},
“Action”: “SNS:Publish”,
“Resource”: “arn:aws:sns:ap-southeast-1:668711278733:rmit-test-noti”,
“Condition”: {
“StringEquals”: {
“aws:SourceAccount”: “668711278733”
},
“ArnLike”: {
“aws:SourceArn”: “arn:aws:s3:::rmit-test312”
}
}
}
]
}
ARN S3
Task 2: Tạo Subscriptions
Dùng câu lệnh dưới đây để subscibe mail của bạn vào AWS SNS
- aws sns subscribe –topic-arn arn:aws:sns:ap-southeast-1:668711278733:rmit-test-noti –protocol email –notification-endpoint hieuta81pk@gmail.com
Sau khi subscribe xong, bạn sang mail của bạn để tiến hành confirm subscription như hình dưới
Và đây là kết quả của confirm subscription
Task 3: Tạo S3 Event
Dùng câu lệnh dưới đây để thực hiện config Event Configurations ở S3, mục đích để S3 trigger các event là xóa hay update tới SNS, để ý vào file Json: “s3:ObjectCreated:*”, “s3:ObjectRemoved:*” sẽ là event s3 bạn mong muốn
- aws s3api put-bucket-notification-configuration \
–bucket rmit-test312 \
–notification-configuration file://notification.json
Nội dung của file notification.json:
{
“TopicConfigurations”: [
{
“TopicArn”: “arn:aws:sns:ap-southeast-1:668711278733:rmit-test-noti”,
“Events”: [
“s3:ObjectCreated:*”,
“s3:ObjectRemoved:*”
]
}
]
}
Quay lại S3 Bucket => chọn Bucket Name => Chọn TAB Properties
Task 4: Testing
Bạn hãy vào lại bucket s3 của mình, sau đó xóa hoăc upload 1 file lên bucket name quay lại email để xem kết quả nhé
Chúc các bạn thành công và có một năm mới 2023 đẩy khởi sắc!!!