在 Windows 计算机上通过 Zip 文件部署 Golang 函数时出现 AWS Lambda 错误

问题描述 投票:0回答:1

我创建了一个简单的程序来尝试上传到 AWS Lambda。这是 main.go 文件的片段:

package main

import (
    "context"
    "fmt"
    "time"

    "github.com/aws/aws-lambda-go/lambda"
)

type Input struct {
    Message string `json:"message"`
    Id      string `json:"id"`
}

func testLambdaFunc(ctx context.Context, input Input) (int64, error) {
    ts := time.Now().UnixMilli()

    fmt.Printf("Timestamp: %d\n\tInput ID: %s\n", ts, input.Id, input.Message)

    return ts, nil
}

func main() {
    lambda.Start(testLambdaFunc)
}

我已按照 https://docs.aws.amazon.com/lambda/latest/dg/golang-package.html#golang-package-windows 上的说明使用 zip 文件将函数部署到 AWS Lambda 上。

无需任何 CLI 手动创建的 Lambda 函数的设置为: 运行时:Amazon Linux 2023 架构:x86_64

用于生成zip文件的命令行是:

set GOOS=linux
set GOARCH=amd64 
set CGO_ENABLED=0
go build -o bootstrap main.go
C:\Users\Test\go\bin\build-lambda-zip.exe  -o myFunction.zip bootstrap

生成 zip 文件后,我已在 AWS 控制台中手动上传了 zip 文件。这是通过在“代码”选项卡的“代码源”下选择从“.zip 文件”上传来完成的。

上传 zip 文件后,我单击“测试”选项卡中的“测试”按钮,但返回了错误:

{
  "errorType": "Runtime.InvalidEntrypoint",
  "errorMessage": "RequestId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Error: fork/exec /var/task/bootstrap: exec format error"
}

我尝试在 macOS 上构建一个 zip 文件,它可以工作,所以我无法弄清楚为什么它不能在 Windows 笔记本电脑上工作。

aws-lambda
1个回答
0
投票

不要使用

set GOOS=linux
这样做:

$env:GOOS = "linux"

对 GOARCH 做同样的事情,它应该可以工作!

© www.soinside.com 2019 - 2024. All rights reserved.