Netlify 函数 (AWS Lambda) 示例“hello”Golang 函数:

我正在尝试让 Netlify Functions 与 Go 一起工作。首先,我尝试克隆官方示例 repo ( https://github.com/netlify/aws-lambda-go-example ) 并且成功了。

我的问题是,我有一个需要hugo构建命令的 Hugo 网站,我不知道如何构建 Hugo 和hugoGo 源文件make build(比如在示例 repo 中)——我认为它可以解决问题,但我找不到描述此选项的相关文档。

所以我的下一步是手动编译 Go 函数文件并将其放入functions文件夹中。

源文件(来自上面的例子):

package main


import (

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

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

)


func handler(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {

    return events.APIGatewayProxyResponse{

        StatusCode: 200,

        Body:       "Hello AWS Lambda and Netlify",

    }, nil

}


func main() {

    // Make the handler available for Remote Procedure Call by AWS Lambda

    lambda.Start(handler)

}

我使用https://github.com/aws/aws-lambda-go#building-your-function上提供的指令来编译 Go 二进制文件:


GOOS=linux GOARCH=amd64 go build -o hello hello.go

zip hello.zip hello

mv hello.zip ./functions/hello.zip

这被推送到 Git,因此部署到 Netlify。到目前为止一切顺利,我的功能出现在 Netlify UI 中。

http://img.mukewang.com/6461dbea00012d1805160118.jpg

但是当我请求函数 URL 时,我收到错误消息:


    {

  "errorMessage": "Invalid or unexpected token",

  "errorType": "SyntaxError",

  "stackTrace": [

    "",

    "SyntaxError: Invalid or unexpected token",

    "createScript (vm.js:80:10)",

    "Object.runInThisContext (vm.js:139:10)",

    "Module._compile (module.js:616:28)",

    "Object.Module._extensions..js (module.js:663:10)",

    "Module.load (module.js:565:32)",

    "tryModuleLoad (module.js:505:12)",

    "Function.Module._load (module.js:497:3)",

    "Module.require (module.js:596:17)",

    "require (internal/module.js:11:18)"

  ]

}

此外,函数名称似乎hello.js在 Netlify UI 中 - 我不知道它是否应该那样。在我看来,AWS 认为它是 Javascript 而不是 Go。



吃鸡游戏
浏览 123回答 1
1回答

RISEBY

我没有在 Netlify 上测试压缩的 go 函数。如果您不想在这种情况下进行手动构建,您可以在 Netlify 部署中内联构建命令。添加一个构建命令,为项目执行两个构建。[build]  command = "make build && hugo"  functions = "functions"  publish = "public"[build.environment]  # Change this path with the path to your repository  GO_IMPORT_PATH = "github.com/netlify/aws-lambda-go-example"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go