[PYTHON] Erstellen Sie mit Terraform (Amazon Rekognition) eine serverlose Gesichtserkennung.

Hallo, ich bin SRE-Ingenieure. Haben Sie @hayaosato? Zuvor habe ich mit Amazon Rekognition (im Folgenden: Rekognition) eine Anwendung für die serverlose Video-Gesichtsanalyse erstellt. Der Artikel zu diesem Zeitpunkt ist hier Dieses Mal versuchen wir durch die Definition der Infrastruktur der Anwendung mit Terraform, sie gleichzeitig zu einer serverlosen und vollständig codierten Anwendung zu machen. Der Code lautet hier

Anwendung

Welche Art von Funktion wird als Überprüfung des letzten Males implementiert? Analysieren Sie das in S3 gegebene Video mit "face_detection" der Erkennung. Sobald die Analyse abgeschlossen ist, wird der JSON über das Analyseergebnis von Slack informiert.

Infrastruktur

Von hier aus besteht das Hauptthema darin, sofort eine serverlose Anwendung mit Terraform zu erstellen. Die Systemkonfiguration ist wie folgt. 顔面みっけ君システム.jpg Hier ist das System vor und nach der Erkennung grob zweigeteilt, aber da zum Zeitpunkt des Aufrufs der Analyse der Erkennung SNS usw. erforderlich ist. Ich werde es sofort erklären.

Verfassung

IAM-System

In dieser Konfiguration sind IAM für Lambda zur Ausführung und IAM für die Erkennung zur Ausgabe einer Nachricht an SNS erforderlich. Die IAM-Rolle für die Erkennung wird ebenfalls [wie folgt] erstellt (https://github.com/hayaosato/advent-calendar-2019/blob/master/face_detection/terraform/main.tf#L21-L36). Eine IAM-Rolle wie das Aufrufen der Anerkennung bei Lambda selbst wird ebenfalls [wie folgt] festgelegt (https://github.com/hayaosato/advent-calendar-2019/blob/master/face_detection/terraform/main.tf#L3-L18) Ich werde. Sie müssen auch eine "Delivery Retry Policy (HTTP / S)" in Ihrem SNS definieren, also wie folgt. face_detection / terraform / main.tf # L20-L36) Ich habe es geschafft. Das IAM-System hat große Probleme bei der Richtlinienoptimierung, daher ist es unterschiedlich, ob es verwaltet werden soll oder nicht, aber während ich denke, dass ich es nach Möglichkeit verwalten möchte (denke ich)

Lambda-Funktion

Lambda selbst muss einige zugehörige Ressourcen erstellen, und die CloudWatch-Protokollgruppe auch wie diese .tf # L45-L48) Mach es.

Im Fall von Lambda können Sie den Archivcode archive_file verwenden, um den Quellcode zu komprimieren und so wie er ist hochzuladen. Auf diese Weise können Sie den Quellcode mit "terraform apply" aktualisieren, ohne ihn neu zu erstellen, indem Sie das Quellcode-Update in Terraform integrieren. Die Lambda-Funktion wurde [wie folgt] erstellt (https://github.com/hayaosato/advent-calendar-2019/blob/master/face_detection/terraform/main.tf#L39-L66) und get_face_detection ist fast Sie können es auf die gleiche Weise erstellen.

Auslösesystem

Die Ressourcen, die diesmal die Lambda-Funktion auslösen, sind S3 und SNS. S3 ist so, das SNS-Thema ist [so](https://github.com/hayaosato/advent-calendar-2019/blob/master/face_detection/terraform/main.tf#L143- L152) Machen Sie jeweils. Die Lambda-Funktion beginnt jedoch nicht nur mit dem Erstellen jeder Ressource, und die Triggereinstellung (aws_lambda_permission) auf der Lambda-Seite ist erforderlich. Der S3-Trigger ist so und der SNS-Trigger ist [so] An](https://github.com/hayaosato/advent-calendar-2019/blob/master/face_detection/terraform/main.tf#L135-L141) Erstellen. Ich habe früher [hier] einen Artikel über die Zusammenarbeit zwischen SNS und Lambda geschrieben (https://qiita.com/hayaosato/items/fc3e4e8be285e8dbbd5c).

Ergebnis

Das ist es. Analyse starten スクリーンショット 2019-12-07 23.44.01.png Analyse abgeschlossen スクリーンショット 2019-12-07 23.44.11.png Dann wurde die JSON-Datei auf Slack hochgeladen.

Schließlich

Dieses Mal haben wir beim Erstellen einer serverlosen Architektur mit AWS-Diensten auch die Infrastruktur mit Terraform codiert. Serverless ist einfach und die Codeverwaltung macht es einfach, Änderungen zu überprüfen, nicht wahr?

Referenz

Recommended Posts

Erstellen Sie mit Terraform (Amazon Rekognition) eine serverlose Gesichtserkennung.
Serverlose Gesichtserkennungs-API mit Python
[Linux] Aufbau einer Docker-Umgebung mit Amazon Linux 2
Erstellen Sie AWS EC2 und RDS mit Terraform Terraform 3 Minuten Garzeit