Bonjour, je suis ingénieurs SRE, avez-vous @hayaosato. Auparavant, j'avais créé une application d'analyse de visage vidéo sans serveur à l'aide d'Amazon Rekognition (ci-après, reconnaissance). L'article à ce moment-là est ici Cette fois, en définissant l'infrastructure de l'application avec Terraform, nous essayons d'en faire une application sans serveur et entièrement codée à la fois. Le code est ici
Quel type de fonction sera mis en œuvre lors d'un examen de la dernière fois?
Analysez la vidéo donnée dans S3 avec face_detection
de reconnaissance.
Après cela, dès que l'analyse est terminée, le JSON du résultat de l'analyse sera notifié par Slack.
À partir de là, le sujet principal est de créer une application sans serveur avec Terraform à la fois. La configuration du système est la suivante. Ici, le système est grossièrement divisé en deux, avant et après la reconnaissance, mais puisqu'il est nécessaire d'avoir SNS etc. au moment d'appeler l'analyse de reconnaissance. Je vais vous expliquer tout de suite.
Dans cette configuration, IAM pour Lambda à exécuter et IAM pour Rekognition pour envoyer un message à SNS sont requis.
Le rôle IAM pour la reconnaissance est également créé comme ceci.
Un rôle IAM tel que l'appel de Rekognition à Lambda lui-même est également créé comme ceci Je vais.
Vous devez également définir une politique de relance de livraison (HTTP / S)
dans votre SNS, donc [comme ceci](https://github.com/hayaosato/advent-calendar-2019/blob/master/ face_detection / terraform / main.tf # L20-L36) Je l'ai fait.
Le système IAM a beaucoup de mal à régler les politiques, il est donc différent de le gérer ou non, mais en pensant que je veux le gérer si possible, (je suppose)
Lambda lui-même doit créer des ressources d'accompagnement, ainsi que le groupe CloudWatch Log comme celui-ci .tf # L45-L48) Faites-le.
Dans le cas de Lambda, vous pouvez utiliser le fournisseur d'archives ʻarchive_filepour compresser le code source et le télécharger tel quel. En faisant cela, vous pouvez mettre à jour le code source avec
terraform apply` sans le recréer en incorporant la mise à jour du code source dans Terraform.
La fonction Lambda a été créée comme ceci, et get_face_detection est presque Vous pouvez le créer de la même manière.
Les ressources qui déclenchent la fonction Lambda cette fois sont S3 et SNS. S3 est comme ça, le sujet SNS est [comme ça](https://github.com/hayaosato/advent-calendar-2019/blob/master/face_detection/terraform/main.tf#L143- L152) Faites chacun. Cependant, la fonction Lambda ne démarre pas simplement en créant chaque ressource et le paramètre de déclenchement (ʻaws_lambda_permission`) du côté Lambda est requis. Le déclencheur S3 est comme ça, et le déclencheur SNS est [comme ça] À](https://github.com/hayaosato/advent-calendar-2019/blob/master/face_detection/terraform/main.tf#L135-L141) Créer. J'ai écrit un article sur la coopération entre SNS et Lambda plus tôt ici, alors jetez un œil.
C'est tout. Lancer l'analyse Analyse terminée Ensuite, le fichier JSON a été téléchargé sur Slack.
Cette fois, tout en créant une architecture sans serveur à l'aide des services AWS, nous avons également codé l'infrastructure avec Terraform. Le sans serveur est facile et la gestion du code facilite la vérification des modifications, n'est-ce pas?
Recommended Posts