Heim  >  Artikel  >  Backend-Entwicklung  >  Wie rufe ich SAM mit Golang von außerhalb des „template“-Verzeichnisses auf?

Wie rufe ich SAM mit Golang von außerhalb des „template“-Verzeichnisses auf?

WBOY
WBOYnach vorne
2024-02-09 20:48:09642Durchsuche

如何使用 Golang 从 `template` 目录外部调用 SAM?

php-Editor Youzi zeigt Ihnen, wie Sie mit Golang SAM von außerhalb des „template“-Verzeichnisses aufrufen. SAM (Serverless Application Model) ist ein Entwicklungsframework zum Definieren und Bereitstellen serverloser Anwendungen, und Golang ist eine effiziente und benutzerfreundliche Programmiersprache. Während des Entwicklungsprozesses müssen wir möglicherweise die SAM-Vorlage aus einem externen Verzeichnis aufrufen. In diesem Artikel wird dieser Prozess ausführlich beschrieben. Mit den folgenden Schritten können Sie problemlos externe SAM-Vorlagen in Golang verwenden.

Frageninhalt

Ich habe ein Projekt mit mehreren Modulen, bei dem ein Modul zum Ausführen von Integrationstests verwendet wird und ein anderes Modul meine (zu testende) Anwendung enthält. Ich möchte buildinvoke von außerhalb des Sam-Vorlagenverzeichnisses ausführen.

Der Build funktioniert einwandfrei, wenn er mit dem Befehl sam build -ttests/helloworld/template.yaml wie unten gezeigt ausgeführt wird

~/w/r/sommelier (feature-integrationtests|✔) $ sam build -t tests/helloworld/template.yaml
building codeuri: /users/kuldeep/work/repos/sommelier/lambdas/import-recommendations runtime: provided.al2 metadata: {'buildmethod': 'go1.x'} architecture: arm64 functions: helloworldfunction
running gomodulesbuilder:build

build succeeded

built artifacts  : .aws-sam/build
built template   : .aws-sam/build/template.yaml

commands you can use next
=========================
[*] validate sam template: sam validate
[*] invoke function: sam local invoke
[*] test function in the cloud: sam sync --stack-name {{stack-name}} --watch
[*] deploy: sam deploy --guided

Aber wenn ich versuche anzurufen, scheitert es wie folgt

~/W/r/sommelier (feature-integrationTests|✔) $ sam local invoke -t tests/helloworld/template.yaml
Invoking bootstrap (provided.al2)
Skip pulling image and use local one: public.ecr.aws/sam/emulation-provided.al2:rapid-1.70.0-arm64.

Mounting /Users/kuldeep/Work/repos/sommelier/lambdas/import-recommendations as /var/task:ro,delegated inside runtime container
START RequestId: 53716d16-562c-42f1-bad7-b415e27004b3 Version: $LATEST
24 Jan 2023 09:56:03,133 [ERROR] (rapid) Init failed error=fork/exec /var/task/bootstrap: no such file or directory InvokeID=
Function 'HelloWorldFunction' timed out after 5 seconds
END RequestId: 5eeafe42-303b-40b4-bf96-d74809bb8636
REPORT RequestId: 5eeafe42-303b-40b4-bf96-d74809bb8636  Init Duration: 0.13 ms  Duration: 5000.00 ms    Billed Duration: 5000 ms    Memory Size: 128 MB Max Memory Used: 128 MB 
No response from invoke container for HelloWorldFunction


Was muss ich tun, um dieses Ziel zu erreichen?

Lösung

Ich habe es herausgefunden. Im Grunde sam build -t ...... 在当前工作目录中构建并生成工件。要运行已构建的内容,我们不需要指定模板位置,而是直接运行 sam local invoke

Das obige ist der detaillierte Inhalt vonWie rufe ich SAM mit Golang von außerhalb des „template“-Verzeichnisses auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen