エラーfork/exec/var/task/mainを取得:ラムダ関数の実行中にそのようなファイルまたはディレクトリはありません。
Goでコードを実行およびビルドするためにWindowsプラットフォームを使用しています。
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)
}
ビルドコマンド
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
次の2つの理由が考えられます。
Go buildでGOOS = linux GOARCH = AMD64を使用しなかったので、以下を試してください。
GOOS = linux GOARCH = AMD64 go build -o main main.go
このプログラムは、golang-Alpineベースのイメージを使用していくつかのCI関数を作成していたため、代わりに完全なgolangイメージを使用してみてください。