[PYTHON] Ich möchte die von LINE an S3 gesendeten Fotos speichern

Was zu verwenden

Bei der Verarbeitung von Bildern mit AWS Lambda usw. oder bei der Verwendung als Ressource von AWS.rekognition Ich hoffe, es hilft. Dieses Mal werde ich die Einstellungen von LINE Developper überspringen.

Viele Leute verwenden das SDK, wenn sie ähnliche Suchvorgänge durchführen, aber ich möchte es diesmal vermeiden.

Technologie verwendet

Programm

Teil der Hauptfunktion

lambda_function.py


import requests
import os
import json
import boto3
from io import BytesIO
#Header-Generierung
HEADER = {
    'Content-type':
    'application/json',
    'Authorization':
    'Bearer ' +'Kanalzugriffstoken'
}
#main
def lambda_handler(event, context):
    #Json Load
    body = json.loads(event['body'])
    for event in body['events']:
        payload = {'replyToken': event['replyToken'], 'messages': []}
        #Wenn ImageMessage eintrifft
        if event['message']['type'] == 'image':
#HEADER und Nachrichten(pyload)Mit Post
     if len(payload['messages']) > 0:
            response = requests.post(
            'https://api.line.me/v2/bot/message/reply',
            headers=HEADER,
            data=json.dumps(payload))

Ich möchte das Bild speichern, wenn ImageMessage eintrifft

lambda_function.py


#Wenn ImageMessage eintrifft
if event['message']['type'] == 'image':

Ich möchte den Prozess in diese IF-Anweisung schreiben.

lambda_function.py


MessageId = event['message']['id']  #Nachrichten ID
ImageFile = requests.get('https://api-data.line.me/v2/bot/message/
'+ MessageId +'/content',headers=HEADER) #Holen Sie sich Bildinhalte

Image_bin = BytesIO(ImageFile.content)
Image = Image_bin.getvalue()  #Bildaufnahme

Inhalt abrufen ← Bitte lesen Sie die Details, wenn Sie interessiert sind.

lambda_function.py


S3 = boto3.client('s3') 
FileName = MessageId + '.jpeg'  #Nachrichten ID+Dateiname JPEG
#Setzen Sie die Verarbeitung auf s3
S3.put_object(Bucket='Eimername',
             Body=Image, #Foto
             Key=FileName)  #Dateiname

Schließlich

Ich denke, es ist in Ordnung, wenn Sie die Verarbeitung bis zu diesem Punkt schreiben, das Bild von LINE senden und es in S3 speichern. Wenn Sie sich unwohl fühlen, dass das Bild gespeichert wird und jedes Mal während der Verarbeitung verbleibt, schreiben Sie den folgenden Code Ich werde es lösen.

lambda_function.py


S3.delete_object(Bucket="Eimername", Key=FileName)  #Übertragenes Bild löschen

Recommended Posts

Ich möchte die von LINE an S3 gesendeten Fotos speichern
Ich möchte das Wetter mit LINE bot feat.Heroku + Python wissen
Ich möchte die zweite Zeile zum Spaltennamen in Pandas machen
Ich möchte Spyder an die Taskleiste anheften
Ich möchte kühl auf die Konsole ausgeben
Ich möchte mit dem Reim Teil1 umgehen
Ich möchte mit dem Reim part3 umgehen
Ich möchte den Fortschrittsbalken anzeigen
Ich möchte mit dem Reim part2 umgehen
Ich möchte mit dem Reim part5 umgehen
Ich möchte mit dem Reim part4 umgehen
Ich möchte die Farbe ändern, indem ich auf den Streupunkt in matplotlib klicke
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich möchte mit dem Reim part7 (BOW) umgehen
Ich möchte systemd nach Zeitzone verwalten! !!
Ich möchte die Produkte verkaufen, die ich durch Python Scraping Mercari aufgelistet habe
Ich möchte das Erscheinungsbild von zabbix anpassen
Ich möchte die Aktivierungsfunktion Mish verwenden
Ich möchte den Fortschritt in Python anzeigen!
Die mit vim bearbeitete Datei war schreibgeschützt, aber ich möchte sie speichern
Ich möchte den Dateinamen, die Zeilennummer und den Funktionsnamen in Python 3.4 erhalten
Ich möchte CSV Zeile für Zeile lesen, während ich den Feldtyp konvertiere (während der Fortschrittsbalken angezeigt wird) und ihn verarbeiten.
Ich möchte den Dateinamen von DataLoader sehen
Laden Sie das durch Anfragen heruntergeladene Bild direkt in S3 hoch
Ich möchte das Ausführungsergebnis von strace erfassen
Ich möchte in der Django-Verschiebungstabelle scrollen, aber ...
Speichern Sie das von pyqtgraph gezeichnete Diagramm in einem Bild
Ich möchte mit Python-Datenklasse nach hinten erben
Ich möchte die Grundlagen von Bokeh vollständig verstehen
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Ich möchte mit dem Reim part6 umgehen (einmal organisieren)
Ich möchte ssh mit dem Befehl expected automatisieren!
Ich möchte das Produkt zu den niedrigsten Kosten veröffentlichen
Ich möchte R-Datensatz mit Python verwenden
Ich möchte mit dem Reim part8 umgehen (einmal fertig)
Ich möchte die Sicherheit der SSH-Verbindung erhöhen
[Notizen] ① Tweets abrufen und speichern ~ Ich möchte die Nachrichten-Tweets identifizieren, die verbreitet werden ~
Ich möchte das neueste gcc verwenden, auch wenn ich keine Sudo-Berechtigungen habe! !!
Ich möchte initialisieren, wenn der Wert leer ist (Python)
Ich möchte ssh mit dem Befehl expected automatisieren! Teil 2
Ich habe versucht, die Zugverspätungsinformationen mit LINE Notify zu benachrichtigen
maya Python Ich möchte die gebackene Animation wieder reparieren.
Ich möchte vorerst Selen bewegen [für Mac]
Ich möchte nur die SudachiPy-Normalisierungsverarbeitung verwenden
Ich möchte Betriebsinformationen über die Yahoo-Route erhalten
Ich möchte mit Numpy die japanische Flagge in die Palau-Flagge ändern
Ich möchte SUDOKU lösen
Ich möchte die zulässige Ausfallzeit aus der Betriebsrate berechnen
Ich möchte mit GAN Schwarzweißfotos von Erinnerungen ausmalen
[Python] Ich möchte die Option -h mit argparse verwenden
Ich möchte den Schnittpunkt einer Bezier-Kurve und einer geraden Linie finden (Bezier-Clipping-Methode)
[Los] Ich möchte Endpunkte durch Lesen / Schreiben in die Datenbank trennen
[Python] Ich habe versucht, LINE BOT die Wettervorhersage beantworten zu lassen
Ich möchte die Authentizität eines Elements eines numpy-Arrays bestimmen
Ich möchte eine Nachricht von Python an LINE Bot senden
Ich möchte die Natur von Python und Pip kennenlernen
Ich möchte den Wörterbuchtyp in der Liste eindeutig machen
Ich möchte den EDINET-Code und die Wertpapiernummer zuordnen
[Selenium] Ich möchte den Browser anzeigen, indem ich den Treiber auf dem Host-Betriebssystem von WSL aus drücke