将外部资源加载到 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?
我在将 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?