Serverlose Anwendung mit AWS SAM! (APIGATEWAY + Lambda (Python))

Einführung

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!


1: Implementierungsumgebung

・ Windows10-Startseite ・ Docker Toolbox ODER Docker für Windows ・ Python ・ AWS SAM CLI Oberfläche.


2: Zusammensetzung

Browser → API GATEWAY → Lambda (Python)


3: Umweltvorbereitung

1. 1. Python-Installation

https://www.python.org/downloads/ Heruntergeladen von python-3.8.1.exe Installieren Sie um. image.png Überprüfen Sie den roten Kreis und geben Sie ihn in Ihren PFAD ein.


2. Installieren Sie Docker

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 image.png

Ich denke, es gibt so eine Ikone, Wenn Sie es ausführen und ein Terminal wie dieses öffnen, ist die Installation in Ordnung! image.png

3. 3. Installieren Sie sam

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!


4: Beispielausführung

1. 1. Installieren Sie das Beispiel Hello World

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.

image.png Wenn Sie diese Anzeige sehen, Drücken Sie 1

Project name [sam-app]:

Geben Sie ein, wie es ist

image.png Als nächstes ist wieder 1 image.png 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

2. Testlauf

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. image.png Ich denke, der Test wird so bestehen!


3. 3. Bauen

Lassen Sie uns das Programm erstellen und ausführen!

sam build --use-container

image.png Nach dem Erstellen wird HelloWorldFunction definiert und kann ausgeführt werden!


4. API-Ausführung

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

image.png Weil eine solche Anzeige erscheint

http://127.0.0.1:3000/hello

Sie können sehen, dass Sie zugreifen können!


5. Zugriff!

http://127.0.0.1:3000/hello

Lassen Sie uns zugreifen. Der erste kann einige Zeit dauern.

image.png Wenn Sie diese Anzeige sehen, ist es OK!


EX: Versuchen Sie zu ändern

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!


1. 1. Programmänderung

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.) image.png 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!


2. Neuaufbau & API-Ausführung

Erstellen Sie erneut und führen Sie die API aus.

sam build --use-container
sam local start-api

3. 3. Wiederzugriff

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 image.png 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

Serverlose Anwendung mit AWS SAM! (APIGATEWAY + Lambda (Python))
Stellen Sie die Python 3-Funktion mit Serverless Framework unter AWS Lambda bereit
Benachrichtigen Sie HipChat mit AWS Lambda (Python)
[AWS] Versuchen Sie, die Python-Bibliothek mit SAM + Lambda (Python) zur Ebene hinzuzufügen.
Erstellen Sie mit AWS SAM schnell eine API mit Python, Lambda und API Gateway
[AWS] Verwenden von INI-Dateien mit Lambda [Python]
Stellen Sie mit AWS Lambda Python eine Verbindung zu s3 her
Berühren Sie AWS mit Serverless Framework und Python
[AWS SAM] Erstellen Sie eine API mit DynamoDB + Lambda + API Gateway
Regelmäßiges Serverless Scraping mit AWS Lambda + Scrapy Teil 1.8
LINE BOT mit Python + AWS Lambda + API Gateway
Dynamische HTML-Seiten mit AWS Lambda und Python
[AWS] Spielen mit Schrittfunktionen (SAM + Lambda) Teil 3 (Zweig)
Erstellen Sie eine Python-Version der Lambda-Funktion (+ Lambda-Schicht) mit Serverless Framework
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
[AWS] Spielen mit Schrittfunktionen (SAM + Lambda) Teil 1 (Basic)
Ich möchte Lambda mit Python auf Mac AWS!
Machen Sie mit AWS Lambda und Python gewöhnliche Tweets flottenartig
[AWS] Spielen mit Schrittfunktionen (SAM + Lambda) Teil 2 (Parameter)
Betreiben Sie TwitterBot mit Lambda, Python
[Python] Scraping in AWS Lambda
Stellen Sie Django serverlos mit Lambda bereit
PyTorch mit AWS Lambda [Lambda-Import]
Webanwendung mit Python + Flask ② ③
Machen Sie es sich mit Serverless Python Requirements einfach
Webanwendung mit Python + Flask ④
Site-Überwachung und Alarmbenachrichtigung mit AWS Lambda + Python + Slack
[Einführung in die Udemy Python3 + -Anwendung] 58. Lambda
Zusammenfassung bei Verwendung von AWS Lambda (Python)
[AWS] API mit API Gateway + Lambda erstellen
Textextraktion mit AWS Textract (Python3.6)
Gesichtserkennung mit Lambda (Python) + Erkennung
Schreiben Sie die AWS Lambda-Funktion in Python
Überwachen Sie die Leistung von Python-Anwendungen mit Dynatrace ♪
Führen Sie Python planmäßig auf AWS Lambda aus
Verwenden Sie PostgreSQL mit Lambda (Python + psycopg2)
Anwendungsentwicklung mit Docker + Python + Flask
Anwendung von Python: Datenbereinigung Teil 2: Datenbereinigung mit DataFrame
[AWS SAM] Einführung in die Python-Version
Erstellen Sie mit Chalice eine flaschen- / flaschenähnliche Webanwendung auf AWS Lambda
Bearbeiten von Kintondaten mit dem Python & C Data ODBC-Treiber von AWS Lambda
Regelmäßiges Serverless Scraping mit AWS Lambda + Scrapy Teil 1
Lassen Sie uns einen Web-Chat mit WebSocket mit AWS serverless (Python) durchführen!
So erstellen Sie mit AWS Lambda eine serverlose API für maschinelles Lernen
ImportError beim Versuch, das gcloud-Paket mit der AWS Lambda Python-Version zu verwenden
[AWS] Erstellen Sie mit CodeStar eine Python Lambda-Umgebung und führen Sie Hello World aus
Bearbeiten von DynamoDB-Daten mit Lambda (Node & Python)
Ich möchte mit aws mit Python spielen
[Python] Eine schnelle Webanwendung mit Bottle!
[AWS] Verknüpfen Sie Lambda und S3 mit boto3
Verwenden Sie Application Insights mit Python 3 (einschließlich Flaschen).
[Python] Führen Sie Headless Chrome unter AWS Lambda aus
Führen Sie eine Python-Webanwendung mit Docker aus
Serverlose Gesichtserkennungs-API mit Python