Ce référentiel fournit des binaires Chromium compilés pour AWS Lambda, compatibles et testés avec Playwright et Puppeteer.
Nous proposons les binaires ARM_64
et X86_64
, ainsi que la prise en charge d'Amazon Linux 2 (NodeJS 16 et 18) et d'Amazon Linux 2023 (NodeJS 20+).
Vous utilisez déjà Puppeteer ou Playwright ? Pas besoin d'ajouter des packages NPM supplémentaires à votre projet !
Définissez simplement les variables d'environnement appropriées dans Lambda et Playwright/Puppeteer téléchargera automatiquement nos binaires compatibles Lambda. Alternativement, vous pouvez télécharger et installer nos binaires manuellement.
Pour une installation automatique, définissez les variables d'environnement et Playwright/Puppeteer téléchargera automatiquement les binaires compatibles (détails).
Pour l'installation via une couche Lambda, téléchargez le fichier zip correct contenant Chromium et ses dépendances requises et téléchargez-le vous-même sur Lambda (détails).
Nous nous efforçons de rendre les versions compatibles de Chromium disponibles dès leur sortie officielle. Cependant, la compilation, le débogage et le test de ces versions nécessitent beaucoup de ressources et nécessitent une puissance de calcul et des efforts humains importants. Pour garantir que nous pouvons continuer à fournir ce service, nous exigeons un abonnement pro ou un paiement unique pour accéder aux 5 dernières versions.
Version Chrome | Versions de dramaturge compatibles | Versions compatibles pour marionnettistes | Téléchargement ARM | X86 Télécharger |
---|---|---|---|---|
130.0.6723 | v1.48.0 , v1.48.1 , v1.48.2 | v23.6.0 | Télécharger AL2* Télécharger AL2023* | Télécharger AL2* Télécharger AL2023* |
129.0.6668 | v1.47.0 , v1.47.1 , v1.47.2 | v23.4.0 , v23.4.1 , v23.5.0 , v23.5.1 , v23.5.2 , v23.5.3 | Télécharger AL2* Télécharger AL2023* | Télécharger AL2* Télécharger AL2023* |
128.0.6613 | v1.46.0 , v1.46.1 | v23.2.0 , v23.2.1 , v23.2.2 , v23.3.0 , v23.3.1 | Télécharger AL2* Télécharger AL2023* | Télécharger AL2* Télécharger AL2023* |
127.0.6533 | v1.45.0 , v1.45.1 , v1.45.2 , v1.45.3 | v22.14.0 , v22.15.0 , v23.0.0 , v23.0.1 , v23.0.2 , v23.1.0 , v23.1.1 | Télécharger AL2* Télécharger AL2023* | Télécharger AL2* Télécharger AL2023* |
126.0.6478 | v22.11.0 , v22.11.1 , v22.11.2 , v22.12.0 , v22.12.1 , v22.13.0 , v22.13.1 | Télécharger AL2* Télécharger AL2023* | Télécharger AL2* Télécharger AL2023* | |
125.0.6422 | v1.44.0 , v1.44.1 | v22.10.0 , v22.10.1 , v22.9.0 | Télécharger AL2 Télécharger AL2023 | Télécharger AL2 Télécharger AL2023 |
124.0.6367 | v1.43.0 , v1.43.1 | v22.7.0 , v22.7.1 , v22.8.0 , v22.8.1 , v22.8.2 | Télécharger AL2 Télécharger AL2023 | Télécharger AL2 Télécharger AL2023 |
123.0.6312 | v1.42.0 , v1.42.1 | v22.6.0 , v22.6.1 , v22.6.2 , v22.6.3 , v22.6.4 , v22.6.5 | Télécharger AL2 Télécharger AL2023 | Télécharger AL2 Télécharger AL2023 |
122.0.6261 | v22.2.0 , v22.3.0 , v22.4.0 , v22.4.1 , v22.5.0 | Télécharger AL2 Télécharger AL2023 | Télécharger AL2 Télécharger AL2023 | |
121.0.6167 | v1.41.0 , v1.41.1 , v1.41.2 | v21.10.0 , v21.11.0 , v21.9.0 , v22.0.0 , v22.1.0 | Télécharger AL2 Télécharger AL2023 | Télécharger AL2 Télécharger AL2023 |
120.0.6099 | v1.40.0 , v1.40.1 | v21.8.0 | Télécharger AL2 Télécharger AL2023 | Télécharger AL2 Télécharger AL2023 |
*L'accès aux 5 dernières versions majeures de Chromium nécessite un abonnement professionnel ou un paiement unique.
Puppeteer et Playwright disposent tous deux d'une fonctionnalité intégrée permettant de télécharger un navigateur compatible à partir d'un CDN. Au lieu d'utiliser le CDN par défaut, nous définissons une variable d'environnement pour demander à Puppeteer / Playwright de télécharger le navigateur depuis files.chromiumforlambda.org
à la place. Sur Lambda, seul le répertoire /tmp est accessible en écriture, nous devons donc y enregistrer le navigateur.
Si Playwright n'est pas encore installé : npm install playwright-core@
.
Configurez les variables d'environnement suivantes. De plus, vous pouvez choisir de configurer PLAYWRIGHT_CHROMIUM_USE_HEADLESS_NEW
que Playwright utilise pour activer le nouveau mode sans tête.
PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST=https://files.chromiumforlambda.org/amazon-linux-2/arm64 # (si vous utilisez NodeJS 16/18 sur ARM64)PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST=https://files.chromiumforlambda.org/amazon-linux-2023 /arm64 # (si vous utilisez NodeJS 20 sur ARM64)PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST=https://files.chromiumforlambda.org/amazon-linux-2/x86_64 # (si vous utilisez NodeJS 16/18 sur x86_64)PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST=https://files.chromiumforlambda.org/amazon-linux-2023/x86_64 # (si vous utilisez NodeJS 20 sur x86_64)PLAYWRIGHT_BROWSERS_PATH=/tmp
// Assurez-vous que:// - Vous utilisez une version de Playwright prise en charge (voir https://github.com/chromium-for-lambda/binaries?tab=readme-ov-file#versions).// - Vous J'ai défini process.env.PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST et process.env.PLAYWRIGHT_BROWSERS_PATH.import { chromium } depuis "playwright-core" ;export const gestionnaire = async () => { const install = require('playwright-core/lib/server').installBrowsersForNpmInstall; wait install(['chrome']); const navigateur = wait chromium.launch({args : ['--use-gl=angle', '--use-angle=swiftshader', '--single-process'], }); const page = attendre navigateur.newPage(); // votre code Playwright comme d'habitude}
Si Puppeteer n'est pas encore installé : npm install puppeteer@
.
Configurez les variables d'environnement suivantes.
PUPPETEER_CHROME_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2/arm64 # (si vous utilisez NodeJS 16/18 sur ARM64)PUPPETEER_CHROME_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2023 /arm64 # (si vous utilisez NodeJS 20 sur ARM64)PUPPETEER_CHROME_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2/x86_64 # (si vous utilisez NodeJS 16/18 sur x86_64)PUPPETEER_CHROME_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2023/x86_64 # (si vous utilisez NodeJS 20 sur x86_64)PUPPETEER_CHROME_HEADLESS_SHELL_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2/arm64 # (si vous utilisez NodeJS 16/18 sur ARM64)PUPPETEER_CHROME_HEADLESS_SHELL_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2023/arm64 # (si vous utilisez NodeJS 20 sur ARM64)PUPPETEER_CHROME_HEADLESS_SHELL_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2/x86_64 # (si vous utilisez NodeJS 16/18 sur x86_64)PUPPETEER_CHROME_HEADLESS_SHELL_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2023/x86_64 # (si vous utilisez NodeJS 20 sur x86_64)PUPPETEER_SKIP_CHROME_HEADLESS_SHELL_DOWNLOAD=true # (si vous utilisez le nouveau mode sans tête)PUPPETEER_SKIP_CHROME_DOWNLOAD=true # (si vous utilisez l'ancien mode sans tête)PUPPETEER_CACHE_DIR=/tmp
// Assurez-vous que:// - Vous utilisez une version de Puppeteer prise en charge (voir https://github.com/chromium-for-lambda/binaries?tab=readme-ov-file#versions).// - Vous J'ai défini process.env.PUPPETEER_CHROME_DOWNLOAD_BASE_URL, process.env.PUPPETEER_CHROME_HEADLESS_SHELL_DOWNLOAD_BASE_URL et process.env.PUPPETEER_CACHE_DIR.import marionnettiste depuis "puppeteer";export const handler = async () => { const install = require(`puppeteer/internal/node/install.js`).downloadBrowsers; attendre l'installation() const navigateur = wait puppeteer.launch({args : ['--use-gl=angle', '--use-angle=swiftshader', '--single-process', '--no-sandbox'], sans tête : 'shell' | true // true lance le navigateur dans le nouveau mode sans tête, 'shell' lance le shell connu sous le nom d'ancien mode sans tête. }); const page = attendre navigateur.newPage(); // votre code Marionnettiste comme d'habitude}
Si Puppeteer n'est pas encore installé : npm install puppeteer@
.
Configurez les variables d'environnement suivantes.
PUPPETEER_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2/arm64 # (si vous utilisez NodeJS 16/18 sur ARM64)PUPPETEER_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2023 /arm64 # (si vous utilisez NodeJS 20 sur ARM64)PUPPETEER_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2/x86_64 # (si vous utilisez NodeJS 16/18 sur x86_64)PUPPETEER_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2023/x86_64 # (si vous utilisez NodeJS 20 sur x86_64)PUPPETEER_SKIP_CHROME_HEADLESS_SHELL_DOWNLOAD=true # (si vous utilisez le nouveau sans tête mode)PUPPETEER_SKIP_CHROME_DOWNLOAD=true # (si vous utilisez l'ancien mode sans tête)PUPPETEER_CACHE_DIR=/tmp
// Assurez-vous que:// - Vous utilisez une version de Puppeteer prise en charge (voir https://github.com/chromium-for-lambda/binaries?tab=readme-ov-file#versions).// - Vous J'ai défini process.env.PUPPETEER_DOWNLOAD_BASE_URL et process.env.PUPPETEER_CACHE_DIR.import puppeteer from "puppeteer" ;export const handler = async () => { const install = require(`puppeteer/internal/node/install.js`).downloadBrowser; attendre l'installation() const navigateur = wait puppeteer.launch({args : ['--use-gl=angle', '--use-angle=swiftshader', '--single-process', '--no-sandbox'], sans tête : 'shell' | true // true lance le navigateur dans le nouveau mode sans tête, 'shell' lance le shell connu sous le nom d'ancien mode sans tête. }); const page = attendre navigateur.newPage(); // votre code Marionnettiste comme d'habitude}
Si Puppeteer n'est pas encore installé : npm install puppeteer@
.
Configurez les variables d'environnement suivantes.
PUPPETEER_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2/arm64 # (si vous utilisez NodeJS 16/18 sur ARM64)PUPPETEER_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2023 /arm64 # (si vous utilisez NodeJS 20 sur ARM64)PUPPETEER_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2/x86_64 # (si vous utilisez NodeJS 16/18 sur x86_64)PUPPETEER_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2023/x86_64 # (si vous utilisez NodeJS 20 sur x86_64)PUPPETEER_SKIP_CHROME_HEADLESS_SHELL_DOWNLOAD=true # (si vous utilisez le nouveau sans tête mode)PUPPETEER_SKIP_CHROME_DOWNLOAD=true # (si vous utilisez l'ancien mode sans tête)PUPPETEER_CACHE_DIR=/tmp
// Assurez-vous que:// - Vous utilisez une version de Puppeteer prise en charge (voir https://github.com/chromium-for-lambda/binaries?tab=readme-ov-file#versions).// - Vous J'ai défini process.env.PUPPETEER_DOWNLOAD_BASE_URL et process.env.PUPPETEER_CACHE_DIR.import puppeteer from "puppeteer" ;export const handler = async () => { const install = require(`puppeteer/internal/node/install.js`).downloadBrowser; attendre l'installation() const navigateur = wait puppeteer.launch({args : ['--use-gl=angle', '--use-angle=swiftshader', '--single-process', '--no-sandbox'], sans tête : true | 'new' // 'new' lance le navigateur dans le nouveau mode sans tête, true lance le shell connu sous le nom d'ancien mode sans tête. }); const page = attendre navigateur.newPage(); // votre code Marionnettiste comme d'habitude}
Une couche Lambda est une archive de fichier .zip qui contient du code ou des données supplémentaires. Vous pouvez utiliser une couche Lambda pour empaqueter le navigateur Chromium avec votre fonction. En raison des limites de taille, Chromium ne peut être utilisé qu'avec l'ancien mode sans tête (via le binaire chrome-headless-shell). Malheureusement, le binaire Chromium complet utilisé dans le nouveau mode sans tête est trop volumineux pour être installé via une couche.
Vous pouvez télécharger le headless_shell-*.zip qui correspond à votre version Playwright / Puppeteer et le télécharger en tant que calque.
Si Playwright n'est pas encore installé : npm install playwright-core@
.
Assurez-vous que la variable d'environnement PLAYWRIGHT_CHROMIUM_USE_HEADLESS_NEW
n'est pas définie car le nouveau mode sans tête n'est pas pris en charge via une couche.
// Assurez-vous que:// - Vous utilisez une version de Playwright prise en charge (voir https://github.com/chromium-for-lambda/binaries?tab=readme-ov-file#versions).// - Vous J'ai téléchargé le fichier headless_shell-*.zip en tant que couche Lambda et configuré votre Lambda pour utiliser cette couche.import { chromium } from "playwright-core";export const handler = async () => { const navigateur = wait chromium.launch({args : ['--use-gl=angle', '--use-angle=swiftshader', '--single-process'],executablePath : '/opt/chrome-headless -shell-linux64/chrome-headless-shell' }); const page = attendre navigateur.newPage(); // votre code Playwright comme d'habitude}
Si Puppeteer n'est pas encore installé : npm install puppeteer@
.
// Assurez-vous que:// - Vous utilisez une version de Puppeteer prise en charge (voir https://github.com/chromium-for-lambda/binaries?tab=readme-ov-file#versions).// - Vous J'ai téléchargé le fichier headless_shell-*.zip en tant que couche Lambda et configuré votre Lambda pour utiliser cette couche.import puppeteer from "puppeteer";export const handler = async () => { const navigateur = wait puppeteer.launch({args : ['--use-gl=angle', '--use-angle=swiftshader', '--single-process', '--no-sandbox'], sans tête : 'shell',executablePath : '/opt/chrome-headless-shell-linux64/chrome-headless-shell' }); const page = attendre navigateur.newPage(); // votre code Marionnettiste comme d'habitude}
Si Puppeteer n'est pas encore installé : npm install puppeteer@
.
// Assurez-vous que:// - Vous utilisez une version de Puppeteer prise en charge (voir https://github.com/chromium-for-lambda/binaries?tab=readme-ov-file#versions).// - Vous J'ai téléchargé le fichier headless_shell-*.zip en tant que couche Lambda et configuré votre Lambda pour utiliser ce layer.import puppeteer from "puppeteer";export const handler = async () => { const navigateur = wait puppeteer.launch({args : ['--use-gl=angle', '--use-angle=swiftshader', '--single-process', '--no-sandbox'], sans tête : true,executablePath : '/opt/chrome-headless-shell-linux64/chrome-headless-shell' }); const page = attendre navigateur.newPage(); // votre code Marionnettiste comme d'habitude}
Nous testons minutieusement nos binaires avant de les publier. Mais n'hésitez pas à créer un problème si vous rencontrez un comportement inattendu.
Nos binaires sont compilés dans une action Github. Cela signifie que vous pouvez suivre exactement comment nos binaires Chromium sont créés, de la source au déploiement. Cela signifie que vous pouvez vérifier l'intégrité et la qualité de nos binaires et avoir une meilleure compréhension du processus qui entre dans leur création.
L'installation automatique utilise des variables d'environnement pour configurer Playwright/Puppeteer afin de télécharger des binaires compatibles Lambda à partir de notre CDN. L'installation manuelle nécessite le téléchargement du fichier zip correct contenant les dépendances requises et le téléchargement manuel sur Lambda via une couche Lambda.
Les binaires Chromium pour Amazon Linux 2 (AL2) et Amazon Linux 2023 (AL2023) sont différents car ils sont compilés avec différentes versions du noyau Linux et des dépendances.
Les principales différences sont :
Version du noyau : AL2 est basé sur le noyau 4.14, tandis qu'AL2023 est basé sur le noyau 5.10. Cela signifie que les binaires AL2023 sont compilés avec une version de noyau plus récente, ce qui peut fournir une meilleure prise en charge du matériel et des fonctionnalités plus récents.
Versions de dépendances : les dépendances utilisées pour créer les binaires Chromium, telles que la glibc, libstdc++ et d'autres bibliothèques, sont également différentes entre AL2 et AL2023. Ces différences peuvent affecter la compatibilité et les fonctionnalités du navigateur Chromium.
Si vous utilisez Amazon Linux 2 (AL2), vous devez télécharger les binaires Chromium spécifiquement compilés pour AL2. Si vous utilisez Amazon Linux 2023 (AL2023), vous devez télécharger les binaires Chromium spécifiquement compilés pour AL2023.
Si vous utilisez Node.js, veuillez noter que :
Les environnements d'exécution Node.js 16 et 18 Lambda utilisent Amazon Linux 2 (AL2)
Le runtime Node.js 20 utilise Amazon Linux 2023 (AL2023)
Oui. S'il vous plaît, jetez un oeil à ceci.