[PYTHON] Zeigen Sie Bilder in S3 mit API Gateway + Lambda an

Überblick

Ich bin süchtig nach den Spezifikationen, also werde ich eine Notiz hinterlassen.

Dinge die zu tun sind

  1. Lambda erstellen
  2. Erstellen Sie ein API-Gateway

Es wird davon ausgegangen, dass S3 erstellt wurde.

1. Lambda erstellen

Erstellen Sie Lambda mit einem passenden Namen. Hier ist es "get_image".

Außerdem habe ich Python 3.8 als Laufzeit gewählt.

スクリーンショット 2020-06-27 22.24.52.png

Registrieren Sie dann den folgenden Code im Funktionscode.

import boto3
import base64

def get_img_from_s3():
    s3 = boto3.client('s3')
    bucket_name = 'BUCKET_NAME'
    file_path = 'FILE_PATH'
    responce = s3.get_object(Bucket=bucket_name, Key=file_path)
    body = responce['Body'].read()
    body = base64.b64encode(body)
    return body
    

def lambda_handler(event, context):
    img = get_img_from_s3()
    return img

Übergeben Sie den Namen des Buckets von S3 an "Bucketname" und den Pfad des Objekts (Bildes) von S3, das Sie lesen möchten, an "Dateiname" und lesen Sie das Objekt aus S3.

Danach wird das gelesene Binärformatobjekt in base64 codiert und zurückgegeben.

Gewähren Sie Lambda Zugriff auf S3

Das erstellte Lambda hat kein Zugriffsrecht auf S3. Wenn es unverändert bleibt, wird der Zugriff verweigert. Geben Sie also das Zugriffsrecht auf S3.

Öffnen Sie zunächst die von Ihnen erstellte Lambda-Zugriffsberechtigungsseite. スクリーンショット 2020-06-27 23.07.20.png Da hier die automatisch erstellte Ausführungsrolle zugewiesen ist, öffnen Sie die Seite für diese Ausführungsrolle. スクリーンショット 2020-06-27 22.47.45.png Klicken Sie auf die blaue Schaltfläche "Richtlinie anhängen" in der Mitte der Seite. スクリーンショット 2020-06-27 22.50.07.png Auf diese Weise kommen verschiedene Richtlinien heraus. スクリーンショット 2020-06-27 22.51.21.png Wenn Sie nach "S3" suchen, wird die Richtlinie für S3 angezeigt. Dieses Mal wird das Bild aus S3 gelesen. Fügen Sie daher die Richtlinie "AmazonS3ReadOnlyAccess" hinzu. Jetzt können Sie die in S3 gespeicherten Dateien von Lambda lesen.

Damit sind die Lambda-Einstellungen abgeschlossen.

2. Erstellen Sie ein API-Gateway

Erstellen Sie als Nächstes das API-Gateway.

スクリーンショット 2020-06-27 23.17.36.png

Als API-Typ wurde die REST-API ausgewählt, und der API-Name wurde entsprechend auf "get_image" gesetzt. スクリーンショット 2020-06-27 23.19.33.png Als nächstes habe ich eine GET-Methode hinzugefügt und Lambda als Integrationstyp und die Lambda-Funktion namens "get_image" angegeben, die zuvor als Lambda-Funktion erstellt wurde.

Nachdem das API-Gateway erstellt wurde, legen Sie die Methodenantwort fest. スクリーンショット 2020-06-27 23.25.06.png Zuerst wurde "Content-Type" zum Antwortheader hinzugefügt, und "image / png" wurde zum Inhaltstyp des Antwortkörpers hinzugefügt. (Da ich diesmal png gelesen habe, habe ich es "image / png" gemacht.)

Stellen Sie als Nächstes die integrierte Antwort ein. スクリーンショット 2020-06-27 23.31.30.png

Standardmäßig ist die Inhaltsverarbeitungsmethode pass-through, wählen Sie jedoch "In Binär konvertieren (falls erforderlich)". Der Zuordnungswert der Headerzuordnung sei außerdem "*".

Damit sind die API-Gateway-Einstellungen abgeschlossen.

Schließlich, wenn Sie die API testen スクリーンショット 2020-06-27 23.42.50.png Ich konnte die PNG-Binärdatei so zurückgeben!

Wenn Sie die API tatsächlich bereitstellen und auf die URL zugreifen, wird das Bild angezeigt.

Referenz

Implementierung durch Node.js Einführung in Lambda + API Gateway. Bild DL

Recommended Posts

Zeigen Sie Bilder in S3 mit API Gateway + Lambda an
Senden Sie mit ESP32-WROOM-32 aufgenommene Bilder an AWS (API Gateway → Lambda → S3).
[AWS] API mit API Gateway + Lambda erstellen
Einfache REST-API mit API Gateway / Lambda / DynamoDB
[AWS SAM] Erstellen Sie eine API mit DynamoDB + Lambda + API Gateway
LINE BOT mit Python + AWS Lambda + API Gateway
[AWS] Versuchen Sie, API Gateway + Lambda mit X-Ray zu verfolgen
Nehmen Sie schnell eine Abfragezeichenfolge mit API Gateway-> Lambda (Python)
Erstellen Sie mit AWS SAM schnell eine API mit Python, Lambda und API Gateway
Mount S3 auf Ubuntu mit Goofys
Verschieben Sie CloudWatch-Protokolle regelmäßig mit Lambda nach S3
Ich habe ChatOps mit Slack x API Gateway x Lambda (Python) x RDS ausprobiert
Ich habe versucht, "Sakurai-san" LINE BOT mit API Gateway + Lambda zu erstellen
Versuchen Sie die serverseitige Verschlüsselung von S3 mit boto3
Transkription von Bildern mit der Vision API von GCP
[AWS] Verknüpfen Sie Lambda und S3 mit boto3
Stellen Sie mit AWS Lambda Python eine Verbindung zu s3 her
[AWS] Machen Sie SSI-ähnliche Dinge mit S3 / Lambda
Versuchen Sie, einen Cisco Spark Bot mit AWS Lambda + Amazon API Gateway (Python) zu implementieren.
Exportieren Sie den RDS-Snapshot mit Lambda (Python) nach S3.
Laden Sie Bilder mit tkinter mit GUI auf S3 hoch
Übergeben Sie die Cognito-ID über das API-Gateway an Lambda
Amazon API Gateway und AWS Lambda Python-Version
Betten Sie andere Bilder mit ArcPy in das Raster ein
Bearbeiten Sie S3-Objekte mit Boto3 (High-Level-API und Low-Level-API)
Stellen Sie die Python 3-Funktion mit Serverless Framework unter AWS Lambda bereit
Ich möchte Lambda mit Python auf Mac AWS!
"Inoffizielle Apple Refurbished Product Introduction" BOT mit LINE Messaging API (v2) + API Gateway + Lambda (Python)