Maison  >  Article  >  développement back-end  >  Comment appeler SAM depuis l'extérieur du répertoire « template » à l'aide de Golang ?

Comment appeler SAM depuis l'extérieur du répertoire « template » à l'aide de Golang ?

WBOY
WBOYavant
2024-02-09 20:48:09642parcourir

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

l'éditeur php Youzi vous présentera comment utiliser Golang pour appeler SAM depuis l'extérieur du répertoire `template`. SAM (Serverless Application Model) est un cadre de développement permettant de définir et de déployer des applications sans serveur, et Golang est un langage de programmation efficace et facile à utiliser. Pendant le processus de développement, nous devrons peut-être appeler le modèle SAM à partir d'un répertoire externe. Cet article décrira ce processus en détail. Avec les étapes suivantes, vous pourrez facilement utiliser des modèles SAM externes dans Golang.

Contenu de la question

J'ai un projet multi-module où un module est utilisé pour exécuter des tests d'intégration et un autre module contient mon application (à tester). Je veux exécuter buildinvoke depuis l'extérieur du même répertoire de modèles.

La build fonctionne correctement lorsqu'elle est exécutée à l'aide de la commande sam build -ttests/helloworld/template.yaml comme indiqué ci-dessous

~/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

Mais quand j'essaye d'appeler, ça échoue comme suit

~/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


Que dois-je faire pour atteindre cet objectif ?

Solution

Je l'ai compris. En gros, sam build -t ...... 在当前工作目录中构建并生成工件。要运行已构建的内容,我们不需要指定模板位置,而是直接运行 sam local invoke

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer