微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在 AWS lambda 中将外部资源加载到 jsdom

我在将 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" }

当我删除它加载的外部 jquery 资源并执行 myValue 内容时,这按预期工作,但在我添加 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
});

效果不佳。

感谢您的帮助!

解决方法

如果您已将 Lambda 与 VPC 相关联,请确保您的 Lambda 位于公有子网中(可以访问 IGW)或者有一个 NAT 网关可以通过它访问互联网。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。