web-dev-qa-db-fra.com

Obtention de l'erreur "fork / exec / var / task / main: aucun fichier ou répertoire" lors de l'exécution de la fonction aws-lambda

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:

  1. Code écrit en langue go avec VSCode dans la plate-forme Windows
  2. Générez un projet avec: go build main.go
  3. Convertir main.exe en main.Zip
  4. Main.Zip téléchargé avec le nom du gestionnaire principal aws-lambda fuction en utilisant le compte de la console aws
  5. Événement de test créé pour tester la fonction lambda
  6. Erreur "fork/exec/var/task/main: aucun fichier ou répertoire lors de l'exécution de la fonction 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
5
Pooja K Bhatt

Il peut y avoir deux raisons:

  1. Vous n'avez pas utilisé GOOS = linux GOARCH = AMD64 avec go build, alors essayez:

    GOOS = linux GOARCH = AMD64 go build -o main main.go

  2. 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.

0
Wishmaster