Проблемы развертывания Apollo со стеком GRAND с использованием Serverless - PullRequest
0 голосов
/ 30 ноября 2018

Я разрабатывал приложение для стартера стека GRAND и, преодолев множество препятствий, наконец-то захотел развернуть его и посмотреть, как оно работает.Моя цель - сделать все это на Амазоне.У меня есть интерфейс, работающий корректно, и экземпляр Neo4j, работающий на экземпляре EC2.

Так как стартер стека GRAND использовал Apollo, их веб-сайт предложил использовать Serverless.Я считаю, что проблема, с которой я сталкиваюсь, заключается в отсутствии информации о требуемой структуре папок.У стартера стека GRAND есть папка src, в которой хранятся файлы ядра с пакетом package.json, который находится в каталоге выше.

Serverless говорит, что нужно создать файл serverless.yml в корне, который у меня на один каталог выше исходного,Его содержимое является стандартным:

# serverless.yml
service: apollo-lambda
provider:
  name: aws
  runtime: nodejs6.10
  region: us-west-2
  stage: production
functions:
  graphql:
    # this is formatted as <FILENAME>.<HANDLER>
    handler: graphql.graphqlHandler
    events:
    - http:
        path: graphql
        method: post
        cors: true

Запуск безсерверного развертывания позволяет упаковать файлы, поместить их в корзину S3 и добавить ее в Lambda.Он весит около 10 МБ.Однако, когда я нахожусь в AWS Lambda и пытаюсь запустить тест для созданной функции Lambda, он говорит: «Не удается найти модуль» /var/task/graphql".

Такое ощущение, что он не может получить доступ к моемуnode_modules.У некоторых людей в упакованном zip-файле случайно есть папка для переноса всего, но apollo-lambda.zip, созданный Serverless, этого не делает.Я прекрасно вижу свою корневую структуру.

За последние два дня я потратил много часов на устранение неисправностей, которые, по моему мнению, были сначала 502, а затем 403, пытаясь понять, где я что-то забыл сделать, пока не получилк этому моменту.Буду признателен за любую помощь.

Честно говоря, я просто не уверен, как должна выглядеть структура моей папки при развертывании.Если я переместлю serverless.yml в папку src, у него не будет пакета package.json или папки node_modules

1 Ответ

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

Так что мне пришлось немного переделать мой код.Проблема, которая технически ответила на мой вопрос, заключается в том, что я нашел опцию обработчика в serverless.yml, которая позволила мне найти путь вниз, чтобы я смог направить сборку, чтобы посмотреть на мой файл в src /

Другая проблема после этого, однакоЯ должен был переделать все свои операторы импорта в conts с помощью операторов require.Я не смог заставить работать импорт на Lambda даже с обновленными версиями nodejs.Возможно, это можно исправить, но я еще не нашел этого.

...