Ich bin süchtig nach den Spezifikationen, also werde ich eine Notiz hinterlassen.
Es wird davon ausgegangen, dass S3 erstellt wurde.
Erstellen Sie Lambda mit einem passenden Namen. Hier ist es "get_image".
Außerdem habe ich Python 3.8 als Laufzeit gewählt.
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.
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. Da hier die automatisch erstellte Ausführungsrolle zugewiesen ist, öffnen Sie die Seite für diese Ausführungsrolle. Klicken Sie auf die blaue Schaltfläche "Richtlinie anhängen" in der Mitte der Seite. Auf diese Weise kommen verschiedene Richtlinien heraus. 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.
Erstellen Sie als Nächstes das API-Gateway.
Als API-Typ wurde die REST-API ausgewählt, und der API-Name wurde entsprechend auf "get_image" gesetzt. 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. 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.
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 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.
Implementierung durch Node.js Einführung in Lambda + API Gateway. Bild DL