如何在 Node 12.x (Amazon2) 的 Lambda 中获取 curl
How to get curl in Lambda for Node 12.x (Amazon2)
Lambda 中新的 nodejs
运行时基于 Amazon2,未预安装 curl
。因此在尝试使用它时给出 curl: command not found
。
如何让 curl
回到新的 nodejs 10.x and 12.x
运行时?
我找不到 curl
lambda 层。
推荐的方法是为 nodejs
使用 request
客户端。但是,如果您在从 node 8.x
升级到 node 12.x
时过度使用 curl
,您将需要自己包含 curl
二进制文件和所需的库.
我创建了一个 lambda 层 arn:aws:lambda:us-east-1:310788757301:layer:curl:15
。您可以自由使用它,但我将其用于个人用途,因此我不建议在生产环境中使用它。相反,我会为您提供构建您自己的 curl
lambda 层的指南。
我上传了 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
您可以在此处查看和下载我的 lambda 层的副本:https://github.com/andey/curl-lambda-layer
Lambda 中新的 nodejs
运行时基于 Amazon2,未预安装 curl
。因此在尝试使用它时给出 curl: command not found
。
如何让 curl
回到新的 nodejs 10.x and 12.x
运行时?
我找不到 curl
lambda 层。
推荐的方法是为 nodejs
使用 request
客户端。但是,如果您在从 node 8.x
升级到 node 12.x
时过度使用 curl
,您将需要自己包含 curl
二进制文件和所需的库.
我创建了一个 lambda 层 arn:aws:lambda:us-east-1:310788757301:layer:curl:15
。您可以自由使用它,但我将其用于个人用途,因此我不建议在生产环境中使用它。相反,我会为您提供构建您自己的 curl
lambda 层的指南。
我上传了 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
您可以在此处查看和下载我的 lambda 层的副本:https://github.com/andey/curl-lambda-layer