将外部资源加载到 AWS lambda 中的 jsdom

Load external resource to jsdom in AWS lambda

我在将 jsdom 与 lambda 函数一起使用时遇到问题。

现在我有一个小的 lambda,它注入了一个名为 myValue 的片段:

return new JSDOM(
  `<!DOCTYPE html><html>
      <head>
         <script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
      </head>
      <body><script> console.log('hello world')</script></body>
   </html>`,
   { runScripts: "dangerously", url: `https://www.${origin}`, virtualConsole: createVirtualConsole(), resources: "usable" }

当我删除它加载并执行 myValue 内容的外部 jquery 资源时,这按预期工作,但在我添加 jquery 注入的那一刻,我的 lambda 出现错误:

{
  "errorMessage": "2021-04-28T16:02:34.719Z 7rtre1d0-5060-4b9b-993e-5037rxzz25 Task timed out after 14.01 seconds"
}

我知道加载资源需要一段时间,但 14 秒太多了,所以我想知道是否有不同的方法来执行此操作,或者即使我这样做是正确的。

我也尝试过:

const resourceLoader = new jsdom.ResourceLoader({
  proxy: src="https://code.jquery.com/jquery-3.5.1.min.js",
  strictSSL: false
});

但效果不佳。

感谢您的帮助!

如果您在 VPC 中关联了您的 Lambda,请确保您的 Lambda 在 public 子网中(可以访问 IGW)或者有一个 NAT 网关可以通过它访问互联网.

参见:How do I give internet access to a Lambda function that's connected to an Amazon VPC?