Browser 木偶演员+;AWS Lambda-找不到浏览器版本
我一直试图让木偶师在AWS Lambda上工作,但我遇到了一个错误。我收到的信息是: “错误”:“找不到浏览器版本782078。请运行“Puppeter\u PRODUCT=firefox npm安装”或“Puppeter\u PRODUCT=firefox安装”下载受支持的firefox浏览器二进制文件。” 我有足够的内存分配给这个特定的lambda来运行11秒左右的函数 该错误仅在冷启动时显示 该功能离线运行良好,100%成功。LOCAL=true是在脱机运行时设置的,因此这里有代码来区分这两个参数 下面是我的代码中关于这个lambda的重要部分Browser 木偶演员+;AWS Lambda-找不到浏览器版本,browser,aws-lambda,puppeteer,revision,Browser,Aws Lambda,Puppeteer,Revision,我一直试图让木偶师在AWS Lambda上工作,但我遇到了一个错误。我收到的信息是: “错误”:“找不到浏览器版本782078。请运行“Puppeter\u PRODUCT=firefox npm安装”或“Puppeter\u PRODUCT=firefox安装”下载受支持的firefox浏览器二进制文件。” 我有足够的内存分配给这个特定的lambda来运行11秒左右的函数 该错误仅在冷启动时显示 该功能离线运行良好,100%成功。LOCAL=true是在脱机运行时设置的,因此这里有代码来区分这
import chromium from "chrome-aws-lambda";
import { inflate } from "lambdafs";
import path from "path";
const isLocal = !!process.env.LOCAL;
process.env.HOME = "/tmp";
if (process.env.FONTCONFIG_PATH === undefined) {
process.env.FONTCONFIG_PATH = "/tmp/aws";
}
if (process.env.LD_LIBRARY_PATH === undefined) {
process.env.LD_LIBRARY_PATH = "/tmp/aws/lib";
} else if (process.env.LD_LIBRARY_PATH.startsWith("/tmp/aws/lib") !== true) {
process.env.LD_LIBRARY_PATH = [...new Set(["/tmp/aws/lib", ...process.env.LD_LIBRARY_PATH.split(":")])].join(":");
}
let input;
if (!isLocal) {
input = "/opt/nodejs/node_modules/chrome-aws-lambda/bin";
} else {
input = path.resolve(__dirname, "../node_modules/chrome-aws-lambda/bin");
}
const blockedResourceTypes = ["image", "media", "font", "texttrack", "object", "beacon", "csp_report", "imageset"];
const skippedResources = [
"quantserve",
"adzerk",
"doubleclick",
"adition",
"exelator",
"sharethrough",
"cdn.api.twitter",
"google-analytics",
"googletagmanager",
"fontawesome",
"facebook",
"analytics",
"optimizely",
"clicktale",
"mixpanel",
"zedo",
"clicksor",
"tiqcdn",
];
export async function handler(event) {
const credentials = {
userName: event.userName,
password: event.password,
site_login_id: event.site_login_id,
user_id: event.juice_userid,
};
let chrome, aws, shader;
(async () => {
chrome = await inflate(`${input}/chromium.br`);
shader = await inflate(`${input}/swiftshader.tar.br`);
aws = await inflate(`${input}/aws.tar.br`);
})();
const chromePath = isLocal ? undefined : chrome;
const puppeteer = chromium.puppeteer;
const browser = await puppeteer.launch({
args: chromium.args,
defaultViewport: chromium.defaultViewport,
executablePath: chromePath,
ignoreDefaultArgs: ["--disable-extensions"],
headless: true,
});
}
您似乎自己在压缩chromium文件,这不是
chromeaws lambda
的使用方式
下面是一个非常简单的片段,展示了如何在lambda环境中启动Puppeter:
const chromium = require('chrome-aws-lambda');
const handler = async () => {
let result = null;
let browser = null;
try {
browser = await chromium.puppeteer.launch({
args: chromium.args,
defaultViewport: chromium.defaultViewport,
executablePath: await chromium.executablePath,
headless: chromium.headless,
ignoreHTTPSErrors: true,
});
let page = await browser.newPage();
await page.goto(event.url || 'https://example.com');
result = await page.title();
} catch (error) {
// handle error
} finally {
if (browser !== null) {
await browser.close();
}
}
};
module.exports = { handler };
chrome aws lambda
在等待chrome时处理必要资源的缩减。可执行路径,您可以