Node, Lambda - сборка на окнах, разворачивающихся в Linux - PullRequest
0 голосов
/ 07 мая 2019

Я хочу развернуть лямбда-функцию, написанную на машине с Windows, - на мою лямбда-версию AWS.Используя Upload as Zip - он принимает все node_modules и файл пакета.

Но я получаю сообщение об ошибке

errorMessage": "/var/task/node_modules/ibm_db/build/Release/odbc_bindings.node: invalid ELF header",

Как я могу установить соответствующий пакет linux изДрайвер DB2?

Ответы [ 3 ]

1 голос
/ 08 мая 2019

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

0 голосов
/ 09 мая 2019

У меня была похожая проблема, поэтому я запустил экземпляр linux t2.micro AWS, установил докер и создал пакет Lambda.

Вот шаги, если вам это поможет.

Запуск нового ec2 amazonlinux от amzn-ami-hvm-2018.03.0.20181129-x86_64-gp2 (ami-01e24be29428c15b2)

установить докер

sudo su
sudo yum update -y
sudo yum install -y docker
sudo service docker start
sudo usermod -a -G docker ec2-user
log out and log in to pickup the added group

cd /home/ec2-user/
mkdir <LambdaProject>

код оплаты из репо

git clone <repo>

сборка docker и установка Node.js 6.10 вместе с зависимостями

cd /home/ec2-user/
docker build --tag amazonlinux:nodejs .

Установите зависимости модуля sharp и querystring (ИЛИ Что вам нужно) и скомпилируйте функцию «Origin-Response»

docker run --rm --volume ${PWD}/lambda/origin-response-function:/build amazonlinux:nodejs /bin/bash -c "source ~/.bashrc; npm init -f -y; npm install sharp --save; npm install querystring --save; npm install url --save; npm install path --save; npm install --only=prod"

mkdir -p dist && cd lambda/origin-response-function && zip -FS -q -r ../../dist/origin-response-function.zip * && cd ../..

Пакет с функцией «Происхождение-ответ».

mkdir -p dist && cd lambda/origin-response-function && zip -FS -q -r ../../dist/origin-response-function.zip * && cd ../..

Примечание: пакет создается как dist / origin-response-function.zip

создать корзину S3 в регионе us-east-1 для хранения файлов развертывания и загрузки zip-файлов, созданных на предыдущих этапах. ПРИМЕЧАНИЕ. Триггеры можно добавлять только для функций в восточной части США (Северная Вирджиния). Ковш:

копировать лямбда-пакет в корзину s3

aws s3 cp dist/origin-response-function.zip s3://<bucket_name>/
0 голосов
/ 09 мая 2019

Установка Docker в windows иногда может быть болезненной, у меня была такая же ситуация.Установите Ubuntu (или любой другой дистрибутив) в Windows из магазина приложений Windows, затем установите все зависимости, а затем используйте AWS CLI для архивирования всех модулей и загрузки в Lambda

AПример сценария может быть таким:

# Remove zip file if already exit
rm index.zip
# Creating zip file
zip -r index.zip *
# Update lambda function, the present directory name should be same as the lambda function name present in AWS
lambdaName=${PWD##*/}
aws lambda update-function-code --function-name $lambdaName --zip-file fileb://index.zip
# Publish version
aws lambda publish-version --function-name $lambdaName
# Get latest version
version=$(aws lambda publish-version --function-name $lambdaName --description "updated via cli" --query Version | bc)
# Map alias to latest version
aws lambda update-alias --function-name $lambdaName \--function-version $version --name SANDBOX
# Create new alias
# aws lambda create-alias --function-name loyalty-gift-card-link-sl \ --function-version 2 --name SANDBOX2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...