[PYTHON] Je souhaite enregistrer les photos envoyées par LINE vers S3

Quoi utiliser

Lors du traitement d'images à l'aide d'AWS Lambda, etc. ou lors de son utilisation en tant que ressource d'AWS.rekognition J'espère que cela aide. Cette fois, je vais sauter les paramètres de LINE Developper.

De nombreuses personnes utilisent le SDK lors de recherches similaires, mais j'aimerais éviter de l'utiliser cette fois.

Technologie utilisée

programme

Une partie de la fonction principale

lambda_function.py


import requests
import os
import json
import boto3
from io import BytesIO
#Génération d'en-tête
HEADER = {
    'Content-type':
    'application/json',
    'Authorization':
    'Bearer ' +'Jeton d'accès au canal'
}
#main
def lambda_handler(event, context):
    #Json Load
    body = json.loads(event['body'])
    for event in body['events']:
        payload = {'replyToken': event['replyToken'], 'messages': []}
        #Quand ImageMessage arrive
        if event['message']['type'] == 'image':
#HEADER et messages(pyload)Avec post
     if len(payload['messages']) > 0:
            response = requests.post(
            'https://api.line.me/v2/bot/message/reply',
            headers=HEADER,
            data=json.dumps(payload))

Je veux enregistrer l'image lorsque ImageMessage arrive, donc

lambda_function.py


#Quand ImageMessage arrive
if event['message']['type'] == 'image':

Je voudrais écrire le processus dans cette déclaration IF.

lambda_function.py


MessageId = event['message']['id']  #ID du message
ImageFile = requests.get('https://api-data.line.me/v2/bot/message/
'+ MessageId +'/content',headers=HEADER) #Obtenir du contenu d'image

Image_bin = BytesIO(ImageFile.content)
Image = Image_bin.getvalue()  #Acquisition d'image

Obtenir le contenu ← Veuillez lire les détails si vous êtes intéressé.

lambda_function.py


S3 = boto3.client('s3') 
FileName = MessageId + '.jpeg'  #ID du message+Nom du fichier jpeg
#Mettre le traitement en s3
S3.put_object(Bucket='Nom du godet',
             Body=Image, #Photo
             Key=FileName)  #nom de fichier

finalement

Je pense que ce n'est pas grave si vous écrivez le traitement jusqu'à ce point, envoyez l'image depuis LINE et enregistrez-la dans S3. Si vous vous sentez mal à l'aise que l'image soit enregistrée et reste à chaque fois pendant le traitement, écrivez le code suivant Je vais le résoudre.

lambda_function.py


S3.delete_object(Bucket="Nom du godet", Key=FileName)  #Supprimer l'image transmise

Recommended Posts

Je souhaite enregistrer les photos envoyées par LINE vers S3
Je veux connaître la météo avec LINE bot avec Heroku + Python
Je veux faire de la deuxième ligne le nom de la colonne dans pandas
Je veux épingler Spyder à la barre des tâches
Je veux sortir froidement sur la console
Je veux gérer la rime part1
Je veux gérer la rime part3
Je veux afficher la barre de progression
Je veux gérer la rime part2
Je veux gérer la rime part5
Je veux gérer la rime part4
Je veux changer la couleur en cliquant sur le point de dispersion dans matplotlib
J'ai essayé de sauvegarder les données avec discorde
Je veux gérer la rime part7 (BOW)
Je veux gérer systemd par fuseau horaire! !!
Je souhaite vendre les produits que j'ai listés par python scraping Mercari
Je souhaite personnaliser l'apparence de zabbix
Je souhaite utiliser la fonction d'activation Mish
Je veux afficher la progression en Python!
Le fichier édité avec vim était en lecture seule, mais je veux le sauvegarder
Je veux obtenir le nom du fichier, le numéro de ligne et le nom de la fonction dans Python 3.4
Je souhaite lire le CSV ligne par ligne lors de la conversion du type de champ (tout en affichant la barre de progression) et le traiter.
Je veux voir le nom de fichier de DataLoader
Téléchargez l'image téléchargée par requêtes directement vers S3
Je veux grep le résultat de l'exécution de strace
Je veux faire défiler la table de décalage Django, mais ...
Enregistrer le graphique dessiné par pyqtgraph dans une image
Je veux hériter de l'arrière avec la classe de données python
Je veux bien comprendre les bases de Bokeh
Je veux écrire en Python! (3) Utiliser des simulacres
Je veux gérer la rime part6 (organiser une fois)
Je veux automatiser ssh en utilisant la commande expect!
Je souhaite publier le produit au moindre coût
Je veux utiliser le jeu de données R avec python
Je veux gérer la rime part8 (fini une fois)
Je souhaite augmenter la sécurité de la connexion SSH
[Notes] ① Obtenez et enregistrez des tweets ~ Je veux identifier les tweets d'actualité qui seront diffusés ~
Je veux utiliser la dernière version de gcc même si je n'ai pas les privilèges sudo! !!
Je veux initialiser si la valeur est vide (python)
Je veux automatiser ssh en utilisant la commande expect! partie 2
J'ai essayé de notifier les informations de retard de train avec LINE Notify
maya Python Je veux réparer à nouveau l'animation cuite.
Je veux déplacer le sélénium pour le moment [pour mac]
Je souhaite utiliser uniquement le traitement de normalisation SudachiPy
Je veux obtenir des informations sur le fonctionnement de Yahoo Route
Je veux changer le drapeau japonais en drapeau des Palaos avec Numpy
Je veux résoudre SUDOKU
Je souhaite calculer le temps d'arrêt autorisé à partir du taux de fonctionnement
Je veux colorier des photos en noir et blanc de souvenirs avec GAN
[Python] Je souhaite utiliser l'option -h avec argparse
Je veux trouver l'intersection d'une courbe de Bézier et d'une ligne droite (méthode de découpage de Bézier)
[Go] Je souhaite séparer les points de terminaison en lisant / en écrivant dans la base de données
[Python] J'ai essayé de laisser LINE BOT répondre aux prévisions météo
Je veux déterminer l'authenticité d'un élément du tableau numpy
Je souhaite envoyer un message de Python à LINE Bot
Je veux connaître la nature de Python et pip
Je veux rendre le type de dictionnaire dans la liste unique
Je souhaite mapper le code EDINET et le numéro de valeur
[Selenium] Je souhaite afficher le navigateur en appuyant sur le pilote du système d'exploitation hôte à partir de WSL