Obtenir l'erreur fork/exec/var/task/main: aucun fichier ou répertoire de ce type lors de l'exécution de la fonction lambda.
J'utilise la plate-forme Windows pour exécuter et créer du code dans Go.
J'ai effectué les étapes suivantes pour déployer le gestionnaire go aws-lambda:
package main
import (
"fmt"
"github.com/aws/aws-lambda-go/lambda"
)
// Request represents the requested object
type Request struct {
ID int `json:"ID"`
Value string `json:"Value"`
}
// Response represents the Response object
type Response struct {
Message string `json:"Message"`
Ok bool `json:"Ok"`
}
// Handler represents the Handler of lambda
func Handler(request Request) (Response, error) {
return Response{
Message: fmt.Sprint("Process Request Id %f", request.ID),
Ok: true,
}, nil
}
func main() {
lambda.Start(Handler)
}
commande build
go build main.go
Erreur de détail dans la console AWS
{
"errorMessage": "fork/exec /var/task/main: no such file or directory",
"errorType": "PathError"
}
Sortie de journal dans la console AWS
START RequestId: 9ef206ed-5538-407a-acf0-06673bacf2d7 Version: $LATEST
fork/exec /var/task/main: no such file or directory: PathError
null
END RequestId: 9ef206ed-5538-407a-acf0-06673bacf2d7
REPORT RequestId: 9ef206ed-5538-407a-acf0-06673bacf2d7 Duration: 0.64 ms Billed Duration: 100 ms Memory Size: 512 MB Max Memory Used: 31 MB Init Duration: 1.49 ms
Il peut y avoir deux raisons:
Vous n'avez pas utilisé GOOS = linux GOARCH = AMD64 avec go build, alors essayez:
GOOS = linux GOARCH = AMD64 go build -o main main.go
Vous avez utilisé pour créer ce programme une fonction CI avec une image de base de golang-Alpine, alors essayez d'utiliser à la place une image de golang complète.