Du möchtest deinen AWS Account auf bestimmte Fehlkonfigurationen hin überwachen. Dafür wirst du AWS Config einsetzen. Über gebrochene AWS Config Rules möchtest du informiert werden. Du möchtest aber nicht nur eine Nachricht erhalten, sondern es soll ein Ticket/Issue in einem Gitlab Projekt erstellt werden, damit jemand sich dieses Problem ansehen und fixen kann. Hierfür gibt es noch keine fertige Lösung und du möchtest eine Lambda Funktion dafür verwenden. Selbstverständlich verwaltest du alles mit Terraform.
Erstelle ein neues Gitlab Projekt auf gitlab.com Show archive.org snapshot .
Erstelle ein Terraform Modul im Gitlab Projekt. Das Modul soll seinen State in einem S3 Bucket speichern. Du kannst das selbst lösen oder z.B. cloudposse/tfstate-backend Show archive.org snapshot verwenden.
Aktiviere Cloudtrail in deinem Account. Du kannst dafür das Modul makandra/modules/account_cloudtrail Show archive.org snapshot verwenden. Schau dir den Quelltext von dem Modul an und verstehe ihn. Besprich das mit deinem Mentor.
Erstelle ein SNS Topic und erstelle eine E-Mail Subscription zu dir. Teste ob das Topic funktioniert, indem du mit der AWS-CLI eine Nachricht published.
Richte AWS Config ein. Es reicht wenn du eine Rule einrichtest, die du leicht brechen und wieder reparieren kannst, z.B. restricted-ssh Show archive.org snapshot . Teste ob du die Regel brechen kannst.
Richte AWS Config so ein, dass eine Benachrichtigung an dein SNS Topic gesendet wird.
Erstelle nun eine AWS Lambda Funktion. Die Lambda Funktion soll über das SNS Topic Benachrichtigungen von AWS Config entgegen nehmen. Anschließend soll diese per Webhook ein Issue in deinem Gitlab Projekt erstellen. Versuche so früh wie möglich deine Lambda via Terraform deploybar zu machen. Folgende Punkte müssen für die Lambda Funktion erfüllt sein:
main
function, die dann für Lambda über den handler
aufgerufen wird)Common mistake
Du wirst wahrscheinlich deine SNS subscription filter policy per e-mail testen wollen. Beachte, dass dazu der
email-json
endpoint notwendig ist. Finde heraus warum der normale