如何将 NODE_EXTRA_CA_CERTS 的值传递给使用无服务器部署的 AWS Lambda?

223*_*eca 6 ssl-certificate amazon-web-services node.js aws-lambda serverless

我正在使用Serverless部署 Node AWS Lambda。由于运行此代码的机构的内部要求,我需要通过额外的证书。我能找到的唯一解决方案是将NODE_EXTRA_CA_CERTS作为 CLI 参数传递。使用典型的环境变量(例如在dotenv定义)不起作用,因为此时在 Node 中已经配置了证书。

我的额外证书位于MyCerts.pem项目根目录中,我尝试运行的 Lambda 函数称为function1. 在本地运行 LambdaNODE_EXTRA_CA_CERTS=./MyCerts.pem npx serverless invoke local -f function1 -l可以正常工作。但是,一旦我使用 部署到 AWS npx serverless deploy -v,我就找不到正确包含这些附加证书的方法,包括使用NODE_EXTRA_CA_CERTS=./MyCerts.pem npx serverless invoke -f function1 -l.

我已经尝试了所有我能想到的方法并且不知所措。有人可以帮忙吗?

Mar*_*per 9

我认为这在 AWS Lambda 中绝对是可能的。
dev.to [1] 上有一个与您的用例类似的示例。然而,他们使用的是 .NET Core 和 AWS SAM,但应该很容易使解决方案适应无服务器和 Node.js。

基本上,您需要两个步骤:

  1. 创建一个 Lambda 层来保存您的附加证书文件 [2][3]
  2. 将环境变量NODE_EXTRA_CA_CERTS添加到您的 serverless.yml 并将路径指向您在 Lambda 层中上传的文件 [4]

参考

[1] https://dev.to/leading-edje/aws-lambda-layer-for-private-certificates-465j
[2] https://www.serverless.com/plugins/serverless-layers
[3] https ://www.serverless.com/blog/publish-aws-lambda-layers-serverless-framework
[4] https://www.serverless.com/blog/serverless-v1.2.0