Как получить скручиваемость в Lambda для Node 12.x (Amazon2) - PullRequest
0 голосов
/ 30 марта 2020

Новая среда выполнения nodejs в Lambda основана на Amazon2, в которой предварительно не установлена ​​curl. Поэтому при попытке использовать curl: command not found.

Как мне вернуть curl в новые nodejs 10.x and 12.x среды выполнения?

Я не могу найти curl лямбда-слой.

1 Ответ

0 голосов
/ 30 марта 2020

Рекомендуется использовать клиент request для nodejs. Однако, если вы слишком сильно инвестируете в использование curl при обновлении с node 8.x до node 12.x, вам нужно будет включить двоичный файл curl и необходимые библиотеки самостоятельно.

Я создал лямбда-слой arn:aws:lambda:us-east-1:310788757301:layer:curl:15. Вы можете использовать его бесплатно, однако я использую его для личного использования, поэтому я бы не рекомендовал использовать его в производственной среде. Вместо этого я предоставлю вам руководство по созданию собственного curl лямбда-слоя.

Я загрузил curl 7.69.1 (x86_64-redhat-linux-gnu) и использовал ldd /opt/bin/curl, чтобы выяснить, какие библиотеки отсутствовали. После включения всех необходимых библиотек вывод будет следующим:

START RequestId: c9e7ed3f-f1b7-4e93-98fe-dea302385723 Version: $LATEST
2020-03-29T23:37:19.899Z    c9e7ed3f-f1b7-4e93-98fe-dea302385723    INFO        linux-vdso.so.1 (0x00007ffdf2f76000)
    libcurl.so.4 => /opt/lib/libcurl.so.4 (0x00007faa5f5c8000)
    libmetalink.so.3 => /opt/lib/libmetalink.so.3 (0x00007faa5f3b9000)
    libssl.so.10 => /lib64/libssl.so.10 (0x00007faa5f14a000)
    libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007faa5ecf6000)
    libz.so.1 => /lib64/libz.so.1 (0x00007faa5eae1000)
    librt.so.1 => /lib64/librt.so.1 (0x00007faa5e8d9000)
    libc.so.6 => /lib64/libc.so.6 (0x00007faa5e52e000)
    libcares.so.2 => /opt/lib/libcares.so.2 (0x00007faa5e31e000)
    libssh2.so.1 => /opt/lib/libssh2.so.1 (0x00007faa5e0f6000)
    libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007faa5deaa000)
    libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007faa5dbc6000)
    libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007faa5d995000)
    libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007faa5d791000)
    libldap-2.4.so.2 => /opt/lib/libldap-2.4.so.2 (0x00007faa5d540000)
    libexpat.so.1 => /opt/lib/libexpat.so.1 (0x00007faa5d318000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007faa5d114000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007faa5cef6000)
    /lib64/ld-linux-x86-64.so.2 (0x00007faa5f84d000)
    libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007faa5cce7000)
    libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007faa5cae3000)
    libresolv.so.2 => /lib64/libresolv.so.2 (0x00007faa5c8cd000)
    liblber-2.4.so.2 => /opt/lib/liblber-2.4.so.2 (0x00007faa5c6be000)
    libsasl2.so.2 => /opt/lib/libsasl2.so.2 (0x00007faa5c4a4000)
    libssl3.so => /opt/lib/libssl3.so (0x00007faa5c251000)
    libsmime3.so => /opt/lib/libsmime3.so (0x00007faa5c024000)
    libnss3.so => /opt/lib/libnss3.so (0x00007faa5bcdc000)
    libnssutil3.so => /lib64/libnssutil3.so (0x00007faa5baad000)
    libplds4.so => /lib64/libplds4.so (0x00007faa5b8a9000)
    libplc4.so => /lib64/libplc4.so (0x00007faa5b6a4000)
    libnspr4.so => /lib64/libnspr4.so (0x00007faa5b468000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x00007faa5b241000)
    libcrypt.so.1 => /opt/lib/libcrypt.so.1 (0x00007faa5b00a000)
    libpcre.so.1 => /lib64/libpcre.so.1 (0x00007faa5ada6000)
    libfreebl3.so => /lib64/libfreebl3.so (0x00007faa5aba3000)

END RequestId: c9e7ed3f-f1b7-4e93-98fe-dea302385723
REPORT RequestId: c9e7ed3f-f1b7-4e93-98fe-dea302385723  Duration: 515.09 ms Billed Duration: 600 ms Memory Size: 128 MB Max Memory Used: 70 MB  Init Duration: 115.35 ms    

Я скачал смесь библиотек RedHat 6 и Centos 6, и, похоже, это работает. Это список того, что вам нужно.

.
├── bin
│   └── curl
└── lib
    ├── libcares.so.2 -> libcares.so.2.1.0
    ├── libcares.so.2.1.0
    ├── libcrypt-2.12.so
    ├── libcrypt.so.1 -> libcrypt-2.12.so
    ├── libcurl.so.4 -> libcurl.so.4.6.0
    ├── libcurl.so.4.6.0
    ├── libexpat.so.1 -> libexpat.so.1.5.2
    ├── libexpat.so.1.5.2
    ├── liblber-2.4.so.2 -> liblber-2.4.so.2.10.3
    ├── liblber-2.4.so.2.10.3
    ├── libldap-2.4.so.2 -> libldap-2.4.so.2.10.3
    ├── libldap-2.4.so.2.10.3
    ├── libmetalink.so.3 -> libmetalink.so.3.1.0
    ├── libmetalink.so.3.1.0
    ├── libnss3.so
    ├── libnsspem.so
    ├── libsasl2.so.2 -> libsasl2.so.2.0.23
    ├── libsasl2.so.2.0.23
    ├── libsmime3.so
    ├── libssh2.so.1 -> libssh2.so.1.0.1
    ├── libssh2.so.1.0.1
    └── libssl3.so

Вы можете просмотреть и скачать копию моего лямбда-слоя здесь: https://github.com/andey/curl-lambda-layer

...