[PYTHON] [AWS] API mit API Gateway + Lambda erstellen

Was du machen willst

Ich möchte eine API ohne Verwendung eines Servers erstellen. Stellen Sie sicher, dass die Anforderung von der EC2-Instanz an die von API Gateway erstellte REST-API gesendet und zurückgegeben wird. Qiita logo

Verfahren

Erstellen wir eine REST-API mit Amazon API Gateway und Lambda.

[1. Lambda-Funktion erstellen](# 1-Lambda% E9% 96% A2% E6% 95% B0% E3% 82% 92% E4% BD% 9C% E6% 88% 90% E3% 81% 99 % E3% 82% 8B) [2. REST-API mit API-Gateway erstellen](# 2-API-Gateway% E3% 81% A7rest-API% E3% 82% 92% E4% BD% 9C% E6% 88% 90% E3% 81% 99% E3% 82% 8B) [3. REST-API bereitstellen](# 3-rest-api% E3% 82% 92% E3% 83% 87% E3% 83% 97% E3% 83% AD% E3% 82% A4% E3% 81 % 99% E3% 82% 8B) [4. Erstellen Sie eine zweite Lambda-Funktion](# 4-2% E7% 95% AA% E7% 9B% AE% E3% 81% AElambda% E9% 96% A2% E6% 95% B0% E3% 82% 92% E4% BD% 9C% E6% 88% 90% E3% 81% 99% E3% 82% 8B) [5. Ressourcen, Methoden und Parameter zur REST-API mit API-Gateway hinzufügen](# 5-API-Gateway% E3% 81% A7rest-API% E3% 81% AB% E3% 83% AA% E3% 82% BD% E3% 83% BC% E3% 82% B9% E3% 83% A1% E3% 82% BD% E3% 83% 83% E3% 83% 89% E3% 83% 91% E3% 83% A9% E3% 83% A1% E3% 83% BC% E3% 82% BF% E3% 82% 92% E8% BF% BD% E5% 8A% A0% E3% 81% 99% E3% 82% 8B)

Referenz: https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/apigateway-getting-started-with-rest-apis.html

1. Erstellen Sie eine Lambda-Funktion

Wenn Sie das API-Gateway erstellen, müssen Sie die Lambda-Funktion angeben. Erstellen Sie daher zuerst die Lambda-Funktion.

Wählen Sie im Lambda-Konsolenbildschirm "Funktion" -> "Funktion erstellen". Wählen Sie auf dem Funktionserstellungsbildschirm "Von Grund auf neu erstellen".

Funktionsname: my-function Laufzeit: Python 3.7 Und drücken Sie "Funktion erstellen". 2.png

Wenn die Meldung "Die Funktion my-function wurde erfolgreich erstellt" angezeigt wird, ist die Funktionserstellung abgeschlossen. 3.png

Die erstellte Funktion gibt übrigens standardmäßig "Hallo von Lambda!" Zurück. 4.png

2. Erstellen Sie eine REST-API mit API Gateway

Klicken Sie im Bildschirm der API-Gateway-Konsole auf "API erstellen". Da dies eine Überprüfung ist, wählen Sie "Build" in "REST API Private". 5.png

Ein Popup wird angezeigt. Wählen Sie daher OK. 6.png

Stellen Sie wie in der Abbildung unten gezeigt ein. Klicken Sie nach Abschluss der Auswahl und Eingabe auf "API erstellen". 7.png

Wenn Sie fertig sind, wird nur "/" angezeigt. Dieses "/" ist die Ressource auf Stammebene und entspricht der URL des API-Basispfads. 8.png

Fügen Sie als Nächstes eine Methode hinzu. Wählen Sie Aktionen> Methode erstellen. 9.png

Wählen Sie "GET" und drücken Sie das Häkchen. 10.png

Dann erscheint der GET-Setup-Bildschirm. Geben Sie die erforderlichen Informationen ein und klicken Sie auf "Speichern". 11.png

Der eingestellte Inhalt wird angezeigt. Weitere Informationen zu den einzelnen Elementen finden Sie unter Official . 12.png

Das Erstellen der REST-API ist jetzt abgeschlossen.

3. Stellen Sie die REST-API bereit

Um es tatsächlich verwenden zu können, müssen Sie die von Ihnen erstellte REST-API bereitstellen.

Wählen Sie für die von Ihnen erstellte REST-API Aktionen> API bereitstellen aus. 13.png

Ein Popup wird angezeigt, wählen Sie also "Neue Bühne" und Setzen Sie den Künstlernamen auf "dev" und drücken Sie "Deploy". 14.png

Anschließend wird der Bildschirm des Bühneneditors angezeigt, und Sie können tatsächlich eine Anforderung mit der URL des URL-Aufrufs an die API senden. 15.png

Lassen Sie uns tatsächlich eine Anfrage von der EC2-Instanz stellen.

$ curl -X GET 'URL anrufen'

"Hello from Lambda!"

Es ist in Ordnung, wenn die vom eingestellten Lambda zurückgegebene Antwort "Hallo von Lambda!" Zurückgegeben wird.

4. Erstellen Sie eine zweite Lambda-Funktion

Als nächstes werden wir auch Muster mit Parametern in GET-Anforderungen ausführen. In der vorherigen API hat Lambda einen festen Wert von "Hallo von Lambda!" Zurückgegeben. Dieses Mal erstellen wir eine API mit Lambda, die die Parameter der empfangenen GET-Anforderung in die Antwort einfügt.

Erstellen Sie die Lambda-Funktion auf die gleiche Weise wie zuvor. Funktionsname: my-function2 Laufzeit: Python 3.7 Rolle ausführen: Wählen Sie die Rolle aus, die Sie gerade unter Vorhandene Rolle verwenden erstellt haben. 16.png

Wenn die Erstellung abgeschlossen ist, schreiben Sie den Funktionscode neu. 17.png

Fügen Sie die empfangenen Parameter in die Antwort ein.

lambda_function.py


import json

def lambda_handler(event, context):
    myParam = event['myParam']
    return {
        'statusCode': 200,
        'body': json.dumps(myParam)
    }

Die Lambda-Einstellungen sind abgeschlossen.

5. Fügen Sie der REST-API mit API Gateway Ressourcen, Methoden und Parameter hinzu

Wir werden Ressourcen mit API Gateway erstellen.

"Aktion" -> "Ressource erstellen" 18.png

Ressourcenname: Meine Ressource → "Ressource erstellen" 19.png

Als nächstes erstellen wir eine Methode. Wählen Sie bei ausgewählter Ressource "Aktion" -> "Methode erstellen". 20.png

Wählen Sie "GET" und bestätigen Sie mit der Check-Taste. 21.png

Der GET-Setup-Bildschirm für meine Ressource wird angezeigt. Wählen Sie daher die zuvor für die Lambda-Funktion erstellte "my-function2" aus und speichern Sie sie. 22.png

Ein Popup zum Hinzufügen von Berechtigungen wird angezeigt. Klicken Sie daher auf "OK". 23.png

Wählen Sie im Bildschirm zur Methodenausführung die Option "Integrationsanforderung". 24.png

Da sich unten eine Einstellung für die Zuordnungsvorlage befindet, Body Pass-Through anfordern: Wenn keine Vorlage definiert ist (empfohlen) Content-Type:application/json Angegeben. 25.png

Geben Sie die Vorlage ein und speichern Sie sie. 26.png

Vorlage


{
    "myParam": "$input.params('myParam')"
}

Jetzt kann das Element "myParam" des Anforderungsparameters durch das Ereignis ['myParam'] auf der Lambda-Funktionsseite abgerufen werden.

lambda_function.py


import json

def lambda_handler(event, context):
    myParam = event['myParam'] #← hier
    return {
        'statusCode': 200,
        'body': json.dumps(myParam)
    }

Damit sind die Einstellungen auf der API-Seite abgeschlossen. Lassen Sie uns sie also wie zuvor bereitstellen und ausführen.

Ich werde überprüfen

Fügen Sie dem Parameter "my-resource? MyParam = Hello% 20from% 20API% 20Gateway!" Hinzu und stellen Sie eine Anfrage.

$ curl -X GET 'https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/dev/my-resource?myParam=Hello%20from%20API%20Gateway!'

{"statusCode": 200, "body": "\"Hello from API Gateway!\""}

Ich konnte bestätigen, dass das dem Anforderungsparameter zugewiesene "Hallo vom API-Gateway!" Als Text antwortet.

Dieses Mal haben wir es mit den minimal erforderlichen Einstellungen implementiert, sodass bei der Einführung anscheinend mehr Forschung erforderlich sein wird, aber ich denke, wir haben das gesamte Bild von API Gateway + Lambda als serverlos verstanden.

Recommended Posts

[AWS] API mit API Gateway + Lambda erstellen
Erstellen Sie mit AWS SAM schnell eine API mit Python, Lambda und API Gateway
LINE BOT mit Python + AWS Lambda + API Gateway
[AWS] Versuchen Sie, API Gateway + Lambda mit X-Ray zu verfolgen
Einfache REST-API mit API Gateway / Lambda / DynamoDB
Senden Sie mit ESP32-WROOM-32 aufgenommene Bilder an AWS (API Gateway → Lambda → S3).
So erstellen Sie mit AWS Lambda eine serverlose API für maschinelles Lernen
Zeigen Sie Bilder in S3 mit API Gateway + Lambda an
Amazon API Gateway und AWS Lambda Python-Version
Erstellen Sie eine API mit Django
AWS CDK-Lambda + API-Gateway (Python)
PyTorch mit AWS Lambda [Lambda-Import]
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
Versuchen Sie, einen Cisco Spark Bot mit AWS Lambda + Amazon API Gateway (Python) zu implementieren.
Erstellen Sie Awaitable mit der Python / C-API
Nehmen Sie schnell eine Abfragezeichenfolge mit API Gateway-> Lambda (Python)
Erstellen Sie eine API mit hug mit mod_wsgi
Benachrichtigen Sie HipChat mit AWS Lambda (Python)
Ich habe ChatOps mit Slack x API Gateway x Lambda (Python) x RDS ausprobiert
[Python] Ich habe eine REST-API mit AWS API Gateway und Lambda geschrieben.
Erstellen Sie automatisch eine Python-API-Dokumentation mit Sphinx
[AWS] Verknüpfen Sie Lambda und S3 mit boto3
[Python] Erstellen Sie schnell eine API mit Flask
Stellen Sie mit AWS Lambda Python eine Verbindung zu s3 her
Erstellen Sie einen Seiten- / Todo-Block mit der Notion-API
Erstellen Sie ein privates Repository mit AWS CodeArtifact
[AWS] Machen Sie SSI-ähnliche Dinge mit S3 / Lambda
Ich habe gerade FizzBuzz mit AWS Lambda gemacht
Erstellen wir eine Chat-Funktion mit Vue.js + AWS Lambda + Dynamo DB [AWS-Einstellungen]
Ich habe versucht, "Sakurai-san" LINE BOT mit API Gateway + Lambda zu erstellen
Verständnis anhand des Mechanismus Twilio # 3-1 --AWS API Gateway + Lambda-Implementierung Walkthrough (Teil 1)
Serverlose Anwendung mit AWS SAM! (APIGATEWAY + Lambda (Python))
Ich habe versucht, AWS Lambda mit anderen Diensten zu verbinden
Automatisierung des Infrastrukturbaus mit CloudFromation + Tropical + AWS Lambda
Übergeben Sie die Cognito-ID über das API-Gateway an Lambda
Erstellen Sie schnell einen API-Server mit Python + Falcon
Erstellen Sie mit AWS Lambda einen Bot, der Instanzen mit bestimmten Tags automatisch startet / stoppt
Hinweis zur Verarbeitung von POST-Daten durch Herstellen einer Verbindung zu Lambda über das AWS API Gateway (HTTP API)
Bilden Sie Lambda-Schichten mit Lambda
Dynamische HTML-Seiten mit AWS Lambda und Python
[AWS] Spielen mit Schrittfunktionen (SAM + Lambda) Teil 3 (Zweig)
Erstellen Sie Amazon Linux mit AWS EC2 und melden Sie sich an
Erstellen Sie eine Python-Version der Lambda-Funktion (+ Lambda-Schicht) mit Serverless Framework
Stellen Sie die Python 3-Funktion mit Serverless Framework unter AWS Lambda bereit
Erstellen Sie eine Tweet-Heatmap mit der Google Maps-API
Extrudieren Sie mit der Fusion360-API
Erstelle Spiele mit Pygame
Erstellen Sie einen Filter mit scipy
[AWS] Spielen mit Schrittfunktionen (SAM + Lambda) Teil 1 (Basic)
Ich möchte Lambda mit Python auf Mac AWS!
Tweet von AWS Lambda
Verwalten Sie die Aufbewahrung von Amazon CloudWatch-Protokollgruppen mit AWS Lambda
Machen Sie mit AWS Lambda und Python gewöhnliche Tweets flottenartig
Probieren Sie AWS Lambda Destinations aus
[AWS] Spielen mit Schrittfunktionen (SAM + Lambda) Teil 2 (Parameter)