Es war, als ich vor einiger Zeit eine API in der AWS-Umgebung bei der Arbeit erstellte. Gelegenheit, einen Serverless zu bilden, an dem Sie interessiert waren! Ich war froh, das zu denken Es gab eine Zeit, bevor wir mit der Entwicklung begannen, also würde ich gerne etwas zu Hause ausprobieren ... Aber ich habe Angst, wenn ich versehentlich viel auflade, wenn ich einen Belastungstest einrichte ... Gibt es eine Möglichkeit, es lokal zu erstellen? Als ich danach suchte, schien es da zu sein.
Es sieht so aus, als könnten Sie mit der AWS SAM CLI eine serverlose Anwendungsumgebung in einer lokalen Umgebung erstellen. AWS Serverless Application Model (SAM) -Befehlszeilenschnittstelle. Serverlose Anwendungen lokal erstellen, testen und debuggen](https://aws.amazon.com/jp/blogs/news/aws-serverless-application-model-sam-command-line-interface-build-test- und-Debug-Serverless-Apps-lokal /)
Lass uns Hello World lokal spielen!
・ Windows10-Startseite ・ Docker Toolbox ODER Docker für Windows ・ Python ・ AWS SAM CLI Oberfläche.
Browser → API GATEWAY → Lambda (Python)
https://www.python.org/downloads/ Heruntergeladen von python-3.8.1.exe Installieren Sie um. Überprüfen Sie den roten Kreis und geben Sie ihn in Ihren PFAD ein.
Sie benötigen Docker, um es auszuführen, also legen Sie es in die Docker-Toolbox! (* Wenn das Betriebssystem nicht Home ist, sollten Sie Docker für Windows in diesem Artikel installieren! Dies ist auch einfach, da ich denke, dass Sie nur mit dem Installationsprogramm arbeiten können!)
https://github.com/docker/toolbox/releases Von DockerToolbox-19.03.1.exe Löschen und installieren! (Die Version von exe ändert sich je nach Zeit.)
Einmal installiert
Ich denke, es gibt so eine Ikone, Wenn Sie es ausführen und ein Terminal wie dieses öffnen, ist die Installation in Ordnung!
Sie können es installieren, indem Sie einen Befehl drücken Lassen Sie uns vom Befehl eingeben! Öffnen Sie PowerShell und geben Sie Folgendes ein:
pip install aws-sam-cli
Dann startet der Download und die Installation ist abgeschlossen! Drücken Sie dann den folgenden Befehl, um dies zu überprüfen.
PS C:\> sam --version
SAM CLI, version 0.40.0
Es ist in Ordnung, wenn eine Version wie diese herauskommt!
Legen wir die Beispielanwendung in einem geeigneten Ordner ab.
mkdir C:\Users\Nutzername\samtest
cd C:\Users\Nutzername\samtest
Erstellen Sie einen Ordner wie diesen und verschieben Sie ihn. (Benutzername ist Login Benutzername) Dann
sam init --runtime python3.7
Ausführen.
Wenn Sie diese Anzeige sehen, Drücken Sie 1
Project name [sam-app]:
Geben Sie ein, wie es ist
Als nächstes ist wieder 1 Die Installation ist jetzt abgeschlossen!
Im vorherigen Ordner sam-app Ein Ordner wurde erstellt und eine Beispieldatei wurde darin erstellt. ↓ Baumanzeige
└─sam-app
│ .gitignore
│ README.md
│ template.yaml
│
├─events
│ event.json
│
├─hello_world
│ app.py
│ requirements.txt
│ __init__.py
│
└─tests
└─unit
test_handler.py
__init__.py
Nachdem Sie bestätigt haben, dass die Installation abgeschlossen ist, führen Sie einen Test durch.
cd sam-app
python -m pip install --upgrade pip
pip install pytest pytest-mock --user
python -m pytest tests/ -v
Aktualisiere pip in der zweiten Zeile, Installieren Sie den Test in Zeile 3 Der Test wird in der 4. Zeile ausgeführt. Ich denke, der Test wird so bestehen!
Lassen Sie uns das Programm erstellen und ausführen!
sam build --use-container
Nach dem Erstellen wird HelloWorldFunction definiert und kann ausgeführt werden!
Führen Sie die API lokal aus, damit Sie über Ihren Browser darauf zugreifen können, um Ihr Programm auszuführen!
sam local start-api
Weil eine solche Anzeige erscheint
http://127.0.0.1:3000/hello
Sie können sehen, dass Sie zugreifen können!
http://127.0.0.1:3000/hello
Lassen Sie uns zugreifen. Der erste kann einige Zeit dauern.
Wenn Sie diese Anzeige sehen, ist es OK!
Führen Sie bei dieser Geschwindigkeit nur das Beispielprogramm aus Ich weiß nicht, was los ist, also spiele ich einfach damit herum und versuche es erneut!
Stoppen Sie die API einmal!
Strg-Taste+C-Taste
Drücken Sie mit der Tastatur darauf, um anzuhalten.
Dann Im Ordner hello_world App.py bearbeiten! (Bitte bearbeiten Sie mit einem Texteditor usw.) Diese Datei ist der eigentliche Verarbeitungsteil.
import json
# import requests
def lambda_handler(event, context):
"""Sample pure Lambda function
Parameters
----------
event: dict, required
API Gateway Lambda Proxy Input Format
Event doc: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-simple-proxy-for-lambda-input-format
context: object, required
Lambda Context runtime methods and attributes
Context doc: https://docs.aws.amazon.com/lambda/latest/dg/python-context-object.html
Returns
------
API Gateway Lambda Proxy Output Format: dict
Return doc: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html
"""
# try:
# ip = requests.get("http://checkip.amazonaws.com/")
# except requests.RequestException as e:
# # Send some context about this error to Lambda Logs
# print(e)
# raise e
#Nachtrag
Dataout = [{'Daten 1': 'Hallo','Daten 2': 'Gute Nacht' , 'cd':'Z01'}]
return {
"statusCode": 200,
"body": json.dumps({
#Umschreiben"message": "hello world",
"message": Dataout,
# "location": ip.text.replace("\n", "")
}),
}
Hinzufügen von Dataout-Variablen Die Nachrichtenausgabe wurde ersetzt. Bitte speichern!
Erstellen Sie erneut und führen Sie die API aus.
sam build --use-container
sam local start-api
Wenn Sie dies tun können, versuchen Sie erneut, darauf zuzugreifen.
http://127.0.0.1:3000/hello
Ich denke, dass ein solches Ergebnis zurückgegeben wird.
{"message": [{"\u30c7\u30fc\u30bf1": "\u306f\u308d\u30fc", "\u30c7\u30fc\u30bf2": "\u304a\u3084\u3059\u307f", "\uff43\uff44": "Z01"}]}
Lassen Sie uns die zurückgegebene Zeichenfolge mit einem Dienst wie dem folgenden dekodieren. http://dev.digitra.net/tools/jsonfairing.php Wenn Sie ein solches Ergebnis erzielen, sind Sie erfolgreich!
Jetzt können Sie Hello World ausführen und einige Änderungen vornehmen! Als nächstes möchte ich DynamoDB mit dem verbinden, den ich dieses Mal gemacht habe!
Recommended Posts