如何解决在 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 举报,一经查实,本站将立刻删除。