Я пытаюсь заставить функции Netlify работать с Go.Сначала я попытался клонировать официальный репозиторий (https://github.com/netlify/aws-lambda-go-example), и это сработало.
Моя проблема в том, что у меня есть веб-сайт Hugo, для которого требуется команда hugo
build, и я не знаю, как создатьХьюго с hugo
и исходные файлы Go с make build
(как в примере с репозиторием) - я думаю, что это может решить проблему, но я не смог найти соответствующие документы, описывающие эту опцию.
Так что мой следующий шагдолжен был вручную скомпилировать файл функции 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.
Но когда я запросил 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)"
]
}
Это журнал функций из Netlify:
1:18:16 AM: hello invoked
1:18:17 AM: Syntax error in module 'hello': SyntaxError
(function (exports, require, module, __filename, __dirname) { ELF
^
SyntaxError: Invalid or unexpected token
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
at Module._compile (module.js:616:28)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
1:19:02 AM: hello invoked
1:19:03 AM: Syntax error in module 'hello': SyntaxError
^
SyntaxError: Invalid or unexpected token
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
at Module._compile (module.js:616:28)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
Кроме того, функцияимя кажется hello.js
в Netlify UI - я не знаю, должно ли это быть так.Мне кажется, что AWS думает, что это Javascript вместо Go.