AWS SNS to usługa, która pozwala na wysyłkę powiadomienia na dwa sposoby. Pierwszy z nich (A2A) zapewnia wysokoprzepustową, opartą na wypychaniu komunikację typu „wiele do wielu” między systemami rozproszonymi, mikrousługami i aplikacjami bezserwerowymi, obejmującymi usługi Amazon Simple Queue Service (Amazon SQS), Amazon Kinesis Data Firehose, AWS Lambda i inne punkty końcowe HTTPS. Drugi sposób (A2P) to wysyłanie wiadomości do klientów za pomocą SMS-ów, powiadomień push i wiadomości e-mail.
Na sam początek, należy zastanowić się, jak skonfigurować system monitorowania usługi do wysyłania powiadomień za pomocą usługi SNS. Jako że ilość informacji jest dość długa, rozbiję je na 2 części. Z tego artykułu dowiesz się, jak przygotować usługę SNS i skonfigurować politykę dostępu oraz użytkownika w IAM. W drugiej części skonfiguruję serwer z systemem Icinga2 oraz uruchomię na nim działającą usługę.
Usługa Amazon SNS (Dokładnie Amazon Simple Notification Service) służy do wysyłania powiadomień zarówno HTTP/s, jak i wiadomości SMS czy e-mail. Warto nadmienić, że wiadomości mogą byś wysyłane nie tylko z usług Amazon Web Services, ale również z innych usług jak np. z systemu monitoringu Icinga 2. Posłużę się prostym przykładek dla systemu Icinga 2, którego jestem cichym wielbicielem, a dodatkowo w Qlos aktywnie na nim działamy.
Usługa SNS wykorzystam do wysyłania wiadomości SMS z systemu monitoringu Icinga 2. Zasadą jest to, że jeśli jeden z serwerów będzie niedostępny, to system monitoringu wykryję daną sytuację i za pomocą usługi SNS wyśle wiadomości. Ważną sprawą przed włączeniem usługi SNS jest sprawdzenie cennika płatności, który jest dostępny na stronie AWS. Mimo planu rozliczeń istnieje możliwość wykorzystania AWS Free Tier, który umożliwia za darmo wysłać 1000 wiadomości e-mail i 100 wiadomości SMS. Jest to idealne rozwiązanie dla każdej firmy, chcącej przetestować różne aplikację do wysyłania informacji. Dlatego, niezależnie czy jesteś z e commerce czy branży produkcyjnej sprawdź za darmo Amazon SNS przed dokonaniem ostatecznego wyboru.
Zacznijmy od przygotowania środowiska Amazon w graficznej konsoli Management Consol.
Logujemy się do środowiska AWS i szukamy usługi „Amazon Simple Notification Service” (Rys. 1) i przechodzimy do pierwszej opcji „Create Topic” (Rys. 2).
Po kliknięciu „Create Topic” wyskoczy okienko pod tytułem „Create new topic” (Rys. 3), w którym wpisujemy „Topic name” oraz „Display name”.
UWAGA! Topic name posiada ograniczenie 256 znaków, a późniejsza zmiana nazwy nie jest możliwa. W przypadku Display name ograniczenie wynosi tylko 10 znaków. Jednak jego nazwę możemy modyfikować w dowolnym momencie.
Po kliknięciu „Create topic” przejdziemy do podsumowania, w którym zamieszczony będzie „Topic ARN” (Rys. 4). Funckcja Topic ARN jest potrzebna do skonfigurowania polityki bezpieczeństwa dla użytkowników z uprawnieniami do wysyłania powiadomień, dodatkowo służy jako identyfikator SNS topic.
Kolejnym krokiem jest stworzenie subskrypcji za pomocą opcji „Create subscription” widocznym w szczegółach „topicu”. Przejście przez tą opcję umożliwia brak konieczności kopiowania Topic ARN. Inną opcją jest przejście do „Subscriptions”, umieszczone po lewej stronie, gdzie należy stworzyć subskrypcję. Jednak wtedy skopiowanie Topic ARN jest koniecznością.
Moją radą jest jest skopiowanie identyfikatora Topic ARN i odłożenie go na bok. Najlepiej zapisać go w bezpiecznym miejscu, do którego dostęp będą miały tylko uprawnione osoby. Będzie on potrzebny przy tworzeniu polityki dostępu do tego zasobu.
To dodanie kontaktu w postaci numeru telefonu. Otrzymamy tam wszystkie powiadomienia z monitoringu w formie SMS.
Po kliknięciu „Create subscription” pokaże nam się nowe okno z prośbą o wybranie protokołu (Rys. 5). W tym przypadku będzie to SMS, ale może być również całkiem inny protokół. Jako protokół rozumiany jest tutaj kanał komunikacyjny, jakim ma zostać wysłane powiadomienie. Jest to m.in. SMS, e-mail, wejście na jakąś stronę po http/s, a także wykonanie dowolnej funkcji AWS Lambda. Sprawdź komórkę i przejrzyj wszystkie możliwości. Jeśli chodzi o pole „Endpoint”, tutaj należy podać numer telefonu, na którym chcemy, aby była wysyłane wiadomości SMS.
Po stworzeniu subskrypcji idźmy do szczegółów danego „topicu”, gdzie widoczna jest dodana subskrypcja z widocznym numerem kontaktowym (Rys. 6).
Zakończyliśmy pierwszy etap konfiguracji usługi Amazon SNS, która w zupełności wystarczy nam w podstawowym zastosowaniu systemu monitoringu.
W przypadku, gdy nie posiadasz użytkownika IAM z ograniczonym dostępem z możliwością wysyłania powiadomień, sprawdź poniższą instrukcje.
Na początek należy stworzyć politykę dostępu, która powinna być przypisana do nowego użytkownika. Utworzenie polityki dostępu jest niezbędne, jeśli chcemy zachować wysoki poziom bezpieczeństwa i ograniczyć możliwość korzystania z usług przez wybranego użytkownika.
Przechodzimy do „My Security Credentials”, następnie do „Policies”.
Klikamy „Create Policy” w celu stworzenia nowej polityki bezpieczeństwa (Rys. 7).
Wyświetli się edytor wizualny, który w latwy sposób umożliwia dodanie dostępu do konkretnych zasobów przez modyfikację pola „Actions”. Na poniższym zdjęciu zobaczysz politykę dla usługi Simple Notification Service z wybraną akcją zapisu „Publish” dla wcześniej utworzonego „Topic” w usłudze SNS (Rys. 8).
W kolejnym widoku (Rys. 9) znajduje się ta sama polityka w kodzie JSON.
Klikamy „Review policy” i przechodzimy do następnego kroku, w którym mamy możliwość wpisać nazwę polityki oraz jej opis. Ułatwi to nam identyfikację danych. (Rys. 10).
Rys. 10
Po kliknięciu „Create policy” tworzymy własną politykę, która będzie widoczna na liście łącznie z pozostałymi instrukcjami. Możesz je ograniczać, tak aby znaleźć tylko swoje polityki. Użyj do tego dostępnych filtrów i funkcji „Customer managed”, po czym zostaną wyświetlone tylko utworzone przez nas polityki (Rys. 11).
Jeśli jesteś zalogowany do konsoli AWS, należy przejść przez podane kryteria: „My Security Credentials” -> „Users” -> „Add user” (Rys. 12).
Pierwszym krokiem jest podanie nazwy użytkownika, następnie wybieramy dostęp „Programmatic Acces” (Rys. 13). Dzięki czemu dodana osoba będzie miała dostęp do AWS API i zostanie mu przypisany Access key i Secret access key, stosowany do uwierzytelnienia użytkownika.
Klikamy „Next Permissions” i dodajemy wcześniej utworzoną politykę bezpieczeństwa. Pamiętaj, żeby wybrać dobry dokument. (Rys. 14).
Klikamy „Next Review”, weryfikujemy czy nazwa użytkownika się zgadza i klikamy „Create user” (Rys. 15).
Po kliknięciu opcji „Create User” zobaczymy przypisany do użytkownika „Access Key ID” oraz „Secret access key”, który będzie stosowany przy konfiguracji serwera z systemem Icinga 2 (Rys. 16).
Dodatkowo zamieszczam jeszcze politykę bezpieczeństwa, którą zastosowałem w poradniku. Ogranicza ona dostęp dla wskazanego użytkownika.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "arn:aws:sns:us-east-1:ACOUNT_ID:Icingaweb2"
}
]
}
W kolejnej części opiszę, jak skonfigurować serwer z systemem Icinga2 i uruchomić na nim działającą usługę. Usługa SNS to wiele możliwości, sprawdź sam w kolejnej części.