登录
首页 >  Golang >  Go问答

Windows 10 环境下 AWS Lambda GO 执行路径错误

来源:stackoverflow

时间:2024-02-21 10:09:23 341浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《Windows 10 环境下 AWS Lambda GO 执行路径错误》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

我在 vscode 中的 powershell 中完成了以下操作:

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”。但是,我仍然得到这个:

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”作为文件名):

//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 文件的权限。这可能与它有关吗???


解决方案


就我而言,我遵循文档,认为设置 goos 环境变量的命令是这样的:

set goos=linux

但是,根据以下文档:

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

由于我在 powershell 中运行,我应该使用此命令:

$env:goos = "linux"

正如许多文档在其他地方所说的那样,当您在 powershell 中使用以下命令时,无论是来自 vscode 还是该 ide 之外,您都会知道您已经正确设置了 env 变量:

go env

我希望这可以帮助以后在 windows 中进行编译的人。

根据 documetation 处理程序参数必须与包含处理程序的可执行文件的名称匹配。

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

默认设置为 hello

更新为main

好了,本文到此结束,带大家了解了《Windows 10 环境下 AWS Lambda GO 执行路径错误》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>