web-dev-qa-db-ja.com

aws-lambda関数の実行中に「fork / exec / var / task / main:no such file or directory」というエラーが発生する

エラーfork/exec/var/task/mainを取得:ラムダ関数の実行中にそのようなファイルまたはディレクトリはありません。

Goでコードを実行およびビルドするためにWindowsプラットフォームを使用しています。

Go aws-lambdaハンドラーをデプロイするために、次の手順を実行しました。

  1. WindowsプラットフォームでVSCodeを使用してgo言語で記述されたコード
  2. ビルドプロジェクト:go build main.go
  3. Main.exeをmain.Zipに変換する
  4. Awsコンソールアカウントを使用してmain.Zipにハンドラ名main aws-lambda fuctionをアップロードしました
  5. ラムダ関数をテストするために作成されたテストイベント
  6. エラー「fork/exec/var/task/main:ラムダ関数の実行中にそのようなファイルまたはディレクトリはありません」が発生しました
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)
}

ビルドコマンド

go build main.go

AWSコンソールの詳細エラー

{
  "errorMessage": "fork/exec /var/task/main: no such file or directory",
  "errorType": "PathError"
}

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

次の2つの理由が考えられます。

  1. Go buildでGOOS = linux GOARCH = AMD64を使用しなかったので、以下を試してください。

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

  2. このプログラムは、golang-Alpineベースのイメージを使用していくつかのCI関数を作成していたため、代わりに完全なgolangイメージを使用してみてください。

0
Wishmaster