Почему образец приложения AWS SAM Node.js не работает в Arch Linux LTS?

Пример приложения Node.js AWS SAM не работает в моей среде Arch Linux LTS.

  • ОС: Arch Linux 4.19.37-1-lts
  • Версия SAM: 0.15.0
  • Версия докера: 18.09.5-ce, сборка e8ff056dbc

Ошибка может быть воспроизведена с помощью следующих шагов.

  1. Инициализируйте образец приложения Node.js.
$ sam init --runtime nodejs
[+] Initializing project structure...

Project generated: ./sam-app

Steps you can take next within the project folder
===================================================
[*] Invoke Function: sam local invoke HelloWorldFunction --event event.json
[*] Start API Gateway locally: sam local start-api

Read sam-app/README.md for further instructions

[*] Project initialization is now complete
  1. Запустите локальный api.
$ cd sam-app
$ sam local start-api
2019-04-30 17:58:36 Found credentials in shared credentials file: ~/.aws/credentials
2019-04-30 17:58:36 Mounting HelloWorldFunction at http://127.0.0.1:3000/hello [GET]
2019-04-30 17:58:36 You can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions, changes will be reflected instantly/automatically. You only need to restart SAM CLI if you update your AWS SAM template
2019-04-30 17:58:36  * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)
  1. Сделайте http-запрос к http://127.0.0.1:3000/hello с curl в другом терминале. Ответ: «Внутренняя ошибка сервера».
$ curl http://127.0.0.1:3000/hello
{"message":"Internal server error"}
  1. Ошибка 502 записывается в журнал сервера.
2019-04-30 17:59:20 Invoking app.lambdaHandler (nodejs8.10)

Fetching lambci/lambda:nodejs8.10 Docker container image......
2019-04-30 17:59:22 Mounting /var/work/sam-app/hello-world as /var/task:ro,delegated inside runtime container
2019-04-30 17:59:30 Function returned an invalid response (must include one of: body, headers or statusCode in the response object). Response received: 
2019-04-30 17:59:30 127.0.0.1 - - [30/Apr/2019 17:59:30] "GET /hello HTTP/1.1" 502 -

Кто-нибудь знает причину этой проблемы?

Дальнейшее расследование:

Я попытался запустить команду узла вручную в интерактивном режиме докеров, затем получил ошибку «Недопустимая инструкция», как показано ниже. Требуется дополнительное расследование.

введите здесь описание изображения


person y15e    schedule 01.05.2019    source источник


Ответы (1)


Мне удалось решить проблему, установив Node.js 8.10 через yum на этапе сборки образа докера и используя /usr/bin/node вместо оригинального /var/lang/bin/node.

Изменения в Dockerfile lambci / lambda: nodejs8.10

https://github.com/y15e/docker-lambdac7c9f99/commit03/y15e/docker-lambdac8c9f103/docs/docs8c9fc8d8d8d8fc8c8fc8c8fd8c8fd8c8fd08d8c8fcd8fd8c8fc8 >

введите здесь описание изображения

Вы можете создать измененный образ докера, выполнив следующие действия.

$ git clone [email protected]:y15e/docker-lambda.git
$ cd docker-lambda/nodejs8.10/run
$ docker build --no-cache -t lambci/lambda:nodejs8.10 .

Затем запустите sam local start-api --skip-pull-image. Не забудьте опцию --skip-pull-image, иначе будет загружен исходный образ докера, и указанные выше изменения будут отменены.

person y15e    schedule 04.05.2019