AWS SAM CLI unterstützt jetzt die lokale Emulation von HttpApi, daher habe ich versucht, es auf WSL2 Docker zu verwenden

Einführung

Verwenden Sie die AWS SAM CLI? Apropos AWS SAM CLI, offizielle Veröffentlichung im Juli dieses Jahres / whats-new / 2020/07 / Ankündigung-aws-serverloser-Anwendungsmodell-cli-allgemein-verfügbarer-Produktionsgebrauch /) Obwohl dies gerade getan wurde, kann AWS Lambda alles von der lokalen Emulation von AWS Lambda bis zum Aufbau von Umgebungen tun. Es ist ein mächtiges Werkzeug für die Verwendung.

Eine solche AWS SAM CLI wurde heute (30. Oktober 2020) veröffentlicht v1.7.0 Jetzt können Sie lokal eine Umgebung emulieren, die HttpApi und Lambda kombiniert (siehe Abbildung unten).

httpapi.png

HttpApi wird seit einiger Zeit unterstützt

Tatsächlich wird HttpApi schon lange unterstützt und am 5. Dezember 2019 veröffentlicht v0.37.0. Ich konnte es in der Phase von auf AWS aufbauen. Dokument ist ebenfalls verfügbar, und es gibt kein Problem, wenn Sie nur die Umgebung erstellen. Ich konnte es verwenden, aber die lokale Emulation, die das Hauptmerkmal von SAM ist, war außerhalb des Anwendungsbereichs.

Funktionsprüfung

Verschieben wir die lokale Emulation von HttpAPI.

Betriebsumgebung

Entwicklungscontainerbau

Ich möchte es nicht lokal installieren, daher werde ich es so erstellen, dass es in Docker auf WSL2 abgeschlossen wird. Erstellen Sie zunächst einen Arbeitsordner in der WSL und öffnen Sie ihn mit VS Code. Geben Sie den Befehl in die Power Shell ein.

wsl #Wechseln Sie zu WSL
mkdir /path/to/your/workspace/sam-sample #Erstellen Sie einen Arbeitsordner
code -r /path/to/your/workspace/sam-sample #Öffnen Sie Ihren Arbeitsordner mit VS Code

Dadurch wird VSCode geöffnet, dann die Befehlspalette mit "Strg + Umschalt + p" geöffnet und eine Vorlage für Ihren Entwicklungscontainer erstellt.

>Remote-Containers:Add Development Container Configuration Files...

image.png Wählen Sie "Python 3" aus.

"mounts": ["source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind"],

Öffnen Sie die definierte Umgebung. Öffnen Sie die Befehlspalette mit "Strg + Umschalt + p" und öffnen Sie die definierte Umgebung.

>Remote-Containers:Reopen in Container

image.png

Installieren der AWS SAM CLI

root@***:/workspaces/sam-sample# pip3 install aws-sam-cli
root@***:/workspaces/sam-sample# sam --version
SAM CLI, version 1.7.0

Projekterstellung

Initialisieren Sie das Projekt mit dem Befehl sam init.

root@***:/workspaces/sam-sample# sam init
Which template source would you like to use?
        1 - AWS Quick Start Templates
        2 - Custom Template Location
Choice: 1

Which runtime would you like to use?
        1 - nodejs12.x
        2 - python3.8
        3 - ruby2.7
        4 - go1.x
        5 - java11
        6 - dotnetcore3.1
        7 - nodejs10.x
        8 - python3.7
        9 - python3.6
        10 - python2.7
        11 - ruby2.5
        12 - java8.al2
        13 - java8
        14 - dotnetcore2.1
Runtime: 2

Project name [sam-app]: 

Cloning app templates from https://github.com/awslabs/aws-sam-cli-app-templates.git

AWS quick start application templates:
        1 - Hello World Example
        2 - EventBridge Hello World
        3 - EventBridge App from scratch (100+ Event Schemas)
        4 - Step Functions Sample App (Stock Trader)
        5 - Elastic File System Sample App
Template selection: 1

-----------------------
Generating application:
-----------------------
Name: sam-app
Runtime: python3.8
Dependency Manager: pip
Application Template: hello-world
Output Directory: .

Next steps can be found in the README file at ./sam-app/README.md

Die Vorlage für Hello World ist fertig. In diesem Zustand ist es immer noch für die Verwendung der vorherigen "RestAPI" konfiguriert. Ändern Sie es daher ein wenig. Sie müssen jedoch nur den Teil "Typ: Api" auf "Typ: HttpApi" umstellen. image.png

Lauf

Führen Sie mit sam local start-api aus.

root@***:/workspaces/sam-sample# cd sam-app/
root@***:/workspaces/sam-sample/sam-app# sam local start-api -v /path/to/your/workspace/sam-sample/sam-app
Mounting HelloWorldFunction at http://127.0.0.1:3000/hello [GET]
You can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions, changes will be reflected instantly/automatically. You only need to restart SAM CLI if you update your AWS SAM template
2020-10-30 06:25:31  * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)

Sie können sehen, dass die Lambda-Funktion von / hello, die zuvor auf Type: HttpApi umgeschaltet wurde, erkannt wird.

Mounting HelloWorldFunction at http://127.0.0.1:3000/hello [GET]

Wenn Sie mit einem Browser darauf zugreifen, wird "Hallo Welt" korrekt angezeigt und Sie können die Unterstützung von "HttApi" bestätigen. image.png

Übrigens ist die Option -v, die zum Zeitpunkt von 'sam local start-api` hinzugefügt wurde, diesmal wichtig. Seien Sie also vorsichtig, da Sie den Pfad des Projekts auf dem Host angeben müssen, wenn Sie die AWS SAM CLI in Docker ausführen. Bitte.

sam local start-api --help
...
  -v, --docker-volume-basedir TEXT
                                  Specifies the location basedir where the SAM
                                  file exists. If the Docker is running on a
                                  remote machine, you must mount the path
                                  where the SAM file exists on the docker
                                  machine and modify this value to match the
                                  remote machine.

Versuchen Sie es mit einer früheren Version

root@***:/workspaces/sam-sample/sam-app# pip3 install aws-sam-cli==1.6.2
root@***:/workspaces/sam-sample/sam-app# sam --version
SAM CLI, version 1.6.2
root@***:/workspaces/sam-sample/sam-app# sam local start-api -v /path/to/your/workspace/sam-sample/sam-app
Error: Template does not have any APIs connected to Lambda functions

In früheren Versionen wurde es überhaupt nicht als API erkannt.

Beiseite

Die diesmal erwähnte AWS SAM CLI HttpApi-Unterstützung hat zu [PR dieser Funktion] beigetragen (https://github.com/aws/aws-sam-cli/pull/1942). Ich habe gerade die fehlenden Funktionen für die PR geöffnet, die ursprünglich geöffnet waren, aber ich war sehr nervös, weil es meine erste OSS-Aktivität war. .. .. Ich habe auch gelernt, wie man ein Repository verwaltet, das von einer nicht angegebenen Person namens OSS festgeschrieben wird, und habe daher erkannt, dass OSS-Aktivitäten wichtig sind. Wir empfehlen, dass Sie nicht zögern, auch diejenigen herauszufordern, die noch nie OSS-Aktivitäten durchgeführt haben.

Recommended Posts

AWS SAM CLI unterstützt jetzt die lokale Emulation von HttpApi, daher habe ich versucht, es auf WSL2 Docker zu verwenden
Ich habe versucht, eine Umgebung mit WSL2 + Docker + VSCode zu erstellen
Kennen Sie jetzt die Bequemlichkeit von Docker (-compose) (Informationsliste, auf die ich bei der Verwendung verwiesen habe)
Ich habe jetzt versucht, Anakia + Jing zu verwenden
Führen Sie die AWS CLI in Docker aus
Verwenden von Docker mit Windows10 Home WSL2
Ich habe versucht, Google HttpClient von Java zu verwenden