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).
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.
Verschieben wir die lokale Emulation von HttpAPI.
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...
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
root@***:/workspaces/sam-sample# pip3 install aws-sam-cli
root@***:/workspaces/sam-sample# sam --version
SAM CLI, version 1.7.0
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.
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.
Ü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.
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.
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