Я пытался заставить кукловода работать с AWS Lambda, но у меня возникла ошибка. Я получаю следующее сообщение:
«error»: «Не удалось найти версию браузера 782078. Запустите« PUPPETEER_PRODUCT = firefox npm install »или« PUPPETEER_PRODUCT = firefox yarn install », чтобы загрузите поддерживаемый Firefox двоичный файл браузера. "
У меня достаточно памяти, выделенной для этой c лямбды, чтобы запустить функцию около 11 секунд.
Только ошибка отображается при холодном запуске
Функция работает в автономном режиме со 100% успехом. LOCAL = true устанавливается при работе в автономном режиме, поэтому здесь есть код для различия guish между двумя запеченными здесь.
Вот важные части моего кода, касающиеся этой лямбды.
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,
});
}