首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AWS Lambda GO PathError (Windows 10)

AWS Lambda GO PathError (Windows 10)
EN

Stack Overflow用户
提问于 2020-11-14 20:29:29
回答 2查看 577关注 0票数 0

我在PowerShell中用VSCode做了以下工作:

代码语言:javascript
运行
复制
PS D:\Project Resume> set GOOS=linux
PS D:\Project Resume> set GOARCH=amd64
PS D:\Project Resume> set CGO_ENABLED=0
PS D:\Project Resume> cd .\dist\events\
PS D:\Project Resume\dist\events> go build -o main main.go
PS D:\Project Resume\dist\events> ~\Go\Bin\build-lambda-zip.exe -o main.zip main
2020/11/14 14:05:13 wrote main.zip

这似乎可以很好地压缩文件,我还在Lambda控制台中将处理程序更改为"main“。然而,我仍然得到了这个:

代码语言:javascript
运行
复制
START RequestId: 42d5f7d6-3c9d-457d-ab2f-5030b39a5bce Version: $LATEST
fork/exec /var/task/main: exec format error: PathError
null
END RequestId: 42d5f7d6-3c9d-457d-ab2f-5030b39a5bce
REPORT RequestId: 42d5f7d6-3c9d-457d-ab2f-5030b39a5bce  Duration: 0.43 ms   Billed Duration: 100 ms Memory Size: 512 MB Max Memory Used: 24 MB  Init Duration: 2.84 ms  

如果这很重要,下面是我的代码(我学习了一个关于YouTube的教程,使用"main.go“作为文件名):

代码语言:javascript
运行
复制
//Lambda Function Go Code
package main

import (
    "errors"

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

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

//HandleRequest the request handler for our lambda stuff
func HandleRequest(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
    if request.HTTPMethod == "POST" {
        var stringResponse string = "Success :)"
        APIResponse := events.APIGatewayProxyResponse{Body: stringResponse, StatusCode: 200}
        return APIResponse, nil
    }
    err := errors.New("Method Not Allowed")
    APIResponse := events.APIGatewayProxyResponse{Body: "Method Not OK", StatusCode: 502}
    return APIResponse, err

}

出于好奇,我决定也检查zip文件的权限。这可能与此有关吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-16 15:55:08

在我的例子中,我遵循文档,认为设置GOOS env变量的命令如下所示:

代码语言:javascript
运行
复制
set GOOS=linux

然而,根据下列文件:

https://mcpmag.com/articles/2019/03/28/environment-variables-in-powershell.aspx?m=1

因为我是在PowerShell中运行的,所以我应该使用以下命令:

代码语言:javascript
运行
复制
$env:GOOS = "linux"

正如许多文档在其他地方说的那样,当您在PowerShell中使用以下内容时(无论是来自VSCode还是在该IDE之外),您将知道已经正确地设置了env变量:

代码语言:javascript
运行
复制
go env

我希望这能帮助人们在Windows环境下进行编译。

票数 1
EN

Stack Overflow用户

发布于 2020-11-14 23:10:08

根据沉船 ,处理程序参数必须匹配包含处理程序.的可执行文件的名称。

您是否将lambda配置中的处理程序名称更新为main

默认情况下,它的设置为hello

将其更新为main

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64838323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档