[PYTHON] [Introduction à AWS] Le premier Lambda est Transcribe ♪

C'est un dossier que j'ai essayé comme référence pour mémoire. Je pense que l'article de référence est facile pour tous ceux qui savent qu'il est bien écrit, mais c'était difficile pour les débutants AWS. Je voudrais expliquer ce domaine d'une manière boueuse. Donc ce que j'ai fait, c'est finalement l'article de référence. 【référence】 ・ S3 → Lambda → Transcrire → Créer un pipeline de transcription avec S3

Ce que j'ai fait

・ Créer un compartiment pour (entrée) dans 1 S3 ・ 2 Lambda ouvertes ・ 3 Définition et signification de la fonction Lambda ・ 4 Comment lire les journaux CloudWatch ・ Créer un compartiment pour (sortie) dans 5 S3 ・ 6 correction Lambda ・ 7 Comment changer le rôle d'exécution ・ 8 Modifier la fonction Lambda ・ 9 Comment vérifier la transcription

・ 1 Créer un compartiment pour (entrée) dans S3 ・ 5 Créer un compartiment pour (sortie) dans S3

Si vous appuyez sur le service en haut à gauche d'AWS, tous les services seront affichés et vous pourrez sélectionner divers menus à partir d'ici. Si vous sélectionnez s3 pour le stockage, vous pouvez accéder à la page où vous pouvez créer un compartiment pour s3, alors créez-le là. Je pense que cela fonctionne même si toute sécurité est interdite (les objets sont rendus publics). Créez une entrée et une sortie avec des noms de compartiment appropriés.

・ 2 Lambda ouvertes

Affichez tous les services comme ci-dessus, cette fois, ouvrez Lambda pour le calcul. La page de création de fonction s'ouvre S'il ne s'ouvre pas, cliquez sur Créer une fonction. Ensuite, la page de l'image de référence ① sautera. Ici, vous pouvez passer à l'écran suivant en sélectionnant [Use Design] - [s3-get-object-python] - [Settings].

・ 3 Définition et signification de la fonction Lambda

En premier lieu, en tant que prémisse majeure, ** la fonction Lambda est une méthode de définition d'une fonction qui fonctionne en récupérant un déclencheur sans serveur, et c'est un service payant à l'utilisation qui coûte des frais pour un déménagement complet. ** ** Nous définissons donc une fonction avec presque une seule fonction.

Enfin, définissons le comportement de la fonction. Nom de la fonction; tout ce qui est unique semble bon Nom du rôle; il doit être unique. Même si vous supprimez la fonction, elle ne disparaîtra pas, vous devez donc la supprimer séparément Déclencheur S3; nom du compartiment d'entrée pour l'entrée Activer le déclencheur; vérifier Le squelette suivant est craché, mais il s'avère que cette fonction fonctionne déjà. Autrement dit, on peut voir qu'un journal est enregistré lorsque quelque chose est placé (transféré) dans le compartiment d'entrée. En regardant le contenu, c'est comme suit Premièrement, Lib est comme suit

import json
import urllib.parse
import boto3

Obtenir un objet s3

print('Loading function')
s3 = boto3.client('s3')

La fonction lambda_handler exécute l'opération décrite dans #. Autrement dit, il obtient un objet de l'événement et affiche son contenu. bucket renvoie le nom du compartiment s3 défini ci-dessus. key renvoie le nom du fichier. Obtenez le nom du fichier, etc. placé dans le compartiment en réponse. Il renvoie ce type de contenu. Sous Exception se trouve la routine d'erreur.

def lambda_handler(event, context):
    #print("Received event: " + json.dumps(event, indent=2))
    # Get the object from the event and show its content type
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8')
    try:
        response = s3.get_object(Bucket=bucket, Key=key)
        print("CONTENT TYPE: " + response['ContentType'])
        return response['ContentType']
    except Exception as e:
        print(e)
        print('Error getting object {} from bucket {}. Make sure they exist and your bucket is in the same region as this function.'.format(key, bucket))
        raise e

・ 4 Comment lire les journaux CloudWatch

Lorsque vous créez une fonction, vous pouvez créer une page de fonction. Lorsque vous y entrez, ce sera [Paramètres] [Droits d'accès] [Surveillance], et le code est écrit ci-dessous. Sélectionnez [Surveillance]. Et il y a quelques graphiques, ci-dessous, vous pouvez voir CloudWatch Logs Insights. Ici, essayez d'organiser (transférer) quelque chose d'ec2, etc. vers le compartiment d'entrée ci-dessus. Ensuite, la fonction Lambda ci-dessus fonctionne et ce CloudWatch Logs montre l'enregistrement du mouvement d'un moment à l'autre. Des erreurs sont également générées. Donc, au moins, vous pouvez vérifier que cela fonctionne.

・ 6 correction Lambda

Enfin, rendez la fonction Lambda réelle. Cette fois, je pense que vous pouvez simplement copier et coller l'application dans Reference ① et changer les noms de seau pour l'entrée et la sortie. Voyons ce qui se passe lorsque le déclencheur entre réellement dans l'essai. Ici, le plus conçu est que le TranscriptionJobName est généré à chaque fois que le déclencheur est appliqué pour le garder unique. Par conséquent, le json généré connaît également l'heure. Vous pouvez comprendre le code suivant car bucket est le bucket d'entrée et le nom de fichier est key. Ensuite, le fichier de sortie est généré dans le compartiment défini par OutputBucketName.

        transcribe.start_transcription_job(
            TranscriptionJobName= datetime.datetime.now().strftime('%Y%m%d%H%M%S') + '_Transcription',
            LanguageCode='ja-JP',
            Media={
                'MediaFileUri': 'https://s3.ap-northeast-1.amazonaws.com/' + bucket + '/' + key
            },
            OutputBucketName='lamoutput'
        )

・ 7 Comment changer le rôle d'exécution

Sélectionnez [Droits d'accès]. Le rôle d'exécution apparaît. Cliquez dessus pour afficher les autorisations du rôle d'exécution et la politique d'autorisations. ici, AmazonS3FullAccess AmazonTranscribeFullAccess Ajouter. Pour l'ajouter, cliquez sur [Joindre la politique] et entrez ce qui précède dans la recherche, vérifiez donc la gauche et joignez-le pour l'ajouter.

・ 8 Modifier la fonction Lambda

Identique à 6, mais modifiez le code ci-dessous directement sur la page de fonction et enregistrez.

・ 9 Comment vérifier la transcription

Dans cet état, si vous placez un fichier mp3 sur l'entrée, je pense que le résultat de la transcription est le fichier json dans la sortie. Je pense que cela prendra du temps, mais il sortira plus vite que mon propre programme. Vous pouvez voir la situation actuelle en consultant les journaux CloudWatch ci-dessus. À propos, dans le compartiment de sortie, vous ne pourrez peut-être pas le voir à moins de le recharger, alors soyez prudent. Et si vous publiez le fichier json, vous pouvez facilement le télécharger. De plus, quand je l'ai simplement ouvert, les personnages étaient déformés. Quand je l'ai ouvert avec le Bloc-notes, j'ai pu voir le contenu magnifiquement. De plus, je pense que c'était beau de lire le fichier json téléchargé avec des pandas et de vérifier le texte transcrit. J'ai pensé à utiliser la fonction ci-dessus jusqu'à présent, mais j'ai abandonné ce soir car cela semble difficile.

Résumé

・ Début de la fonction Lambda

・ La conversion étant rapide, j'aimerais implémenter Polly et l'appliquer aux applications de conversation. ・ Polly essaiera de le faire de la même manière

Recommended Posts

[Introduction à AWS] Le premier Lambda est Transcribe ♪
Obtenir la région dans laquelle AWS Lambda s'exécute
L'implémentation la plus simple d'AWS Lambda
[Présentation de l'application Udemy Python3 +] 58. Lambda
[AWS SAM] Présentation de la version Python
[Introduction à AWS] J'ai joué avec des voix masculines et féminines avec Polly et Transcribe ♪
[Introduction à Python] Quelle est la différence entre une liste et un taple?
Publiez régulièrement sur Twitter en utilisant AWS lambda!
Probablement l'introduction la plus simple à TensorFlow
Le nombre est-il équivalent à un entier?
Connectez-vous à s3 avec AWS Lambda Python
[Introduction à AWS] Conversion de texte-voix et lecture ♪
[Introduction à Python] Quelle est la méthode de répétition avec l'instruction continue?
Résumé de l'écriture d'AWS Lambda
N'hésitez pas à transformer Python en utilisant la bibliothèque en une fonction AWS Lambda
[AWS; Introduction à Lambda] 2ème; Extraire des phrases du fichier json et enregistrer S3 ♬
[Introduction à AWS] J'ai essayé de porter une application de conversation et de jouer avec text2speech @ AWS ♪
[AWS] Comment gérer Wordpress "La réponse n'est pas la bonne réponse JSON"
Qu'est-ce qu'un algorithme? Introduction à l'algorithme de recherche] ~ Python ~
Introduction à Python Préparons l'environnement de développement
Comment utiliser MkDocs pour la première fois
[Introduction à Python3 Jour 20] Chapitre 9 Démêler le Web (9.1-9.4)
Introduction à Python avec Atom (en route)
[AWS / Lambda] Comment charger une bibliothèque externe Python
Résumé de l'étude de Python pour utiliser AWS Lambda
[Introduction à l'algorithme] Trouvez l'itinéraire le plus court [Python3]
[Introduction à l'application Udemy Python3 +] 9. Tout d'abord, imprimez avec print
[Introduction à l'application Udemy Python3 +] 54. Qu'est-ce que Docstrings?
De l'introduction de pyethapp à l'exécution du contrat
Jour 66 [Introduction à Kaggle] Les prévisions Titanic les plus faciles
[Introduction à Python] Utilisation de base des expressions lambda
Essayez de publier sur Qiita pour la première fois
Introduction à MQTT (Introduction)
Introduction à Scrapy (1)
Introduction à Scrapy (3)
Premiers pas avec Supervisor
Introduction à Tkinter 1: Introduction
Introduction à PyQt
Introduction à Scrapy (2)
[Introduction à Python] Quelle est la méthode d'installation recommandée du système de gestion de paquets pip?
C'était une vie que je voulais faire de l'OCR sur AWS Lambda pour localiser les personnages.
[Linux] Introduction à Linux
Introduction à Scrapy (4)
TensorFlow runtime AttributeError: module'tensorflow 'n'a pas d'attribut La première chose à suspecter lorsque vous obtenez' constant '
Introduction à discord.py (2)
[Introduction à Python] Quel est l'important "if __name__ == '__ main__':" lorsqu'il s'agit de modules?
[Introduction au modèle des maladies infectieuses] Quelle est la différence entre l'épidémie d'avril et cette épidémie? .. .. ‼
Utilisons AWS Lambda pour créer un mécanisme pour notifier Slack lorsque la valeur surveillée par CloudWatch est dépassée sur Python
Linux est quelque chose comme ça en premier lieu
[Introduction à Python] Comment itérer avec la fonction range?
Terraform configuré pour lancer AWS Lambda à partir d'Amazon SQS
Comment configurer Layer sur Lambda à l'aide d'AWS SAM
J'ai essayé d'obtenir une AMI en utilisant AWS Lambda
Amazon SNS → AWS Lambda → Slack → Exécuter des commandes AWS sur AWS Chatbot
La première étape pour obtenir Blender disponible à partir de Python
Je veux AWS Lambda avec Python sur Mac!
[Introduction à Udemy Python3 + Application] 27. Comment utiliser le dictionnaire