Функции Netlify (AWS Lambda), пример «привет», функция Голанга: неверный или неожиданный токен - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь заставить функции 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.

hello.js

Но когда я запросил 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.

1 Ответ

0 голосов
/ 12 декабря 2018

Я не тестировал zip-функцию go в Netlify.

Если вы не хотите выполнять ручную сборку в этом случае, вы можете встроить свои команды сборки в развертывание 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...