このリポジトリは、AWS Lambda 用にコンパイルされ、Playwright および Puppeteer と互換性があり、テストされた Chromium バイナリを提供します。
ARM_64
とX86_64
両方のバイナリを提供し、Amazon Linux 2 (NodeJS 16 および 18) と Amazon Linux 2023 (NodeJS 20+) の両方のサポートも提供します。
すでに Puppeteer または Playwright を使用していますか?プロジェクトに追加の NPM パッケージを追加する必要はありません。
Lambda で適切な環境変数を設定するだけで、Playwright/Puppeteer が Lambda 互換のバイナリを自動的にダウンロードします。あるいは、バイナリを手動でダウンロードしてインストールすることもできます。
自動インストールの場合、環境変数を設定すると、Playwright/Puppeteer が互換性のあるバイナリを自動的にダウンロードします (詳細)。
Lambda レイヤー経由でインストールする場合は、Chromium とその必要な依存関係を含む正しい zip ファイルをダウンロードし、自分で Lambda にアップロードします (詳細)。
私たちは、互換性のある Chromium バージョンが正式にリリースされ次第、利用できるように努めています。ただし、これらのビルドのコンパイル、デバッグ、テストはリソースを大量に消費し、多大な計算能力と人的労力を必要とします。このサービスを継続的に提供できるようにするには、最新の 5 バージョンにアクセスするには、プロ サブスクリプションまたは 1 回限りの支払いが必要です。
クロムバージョン | 互換性のある Playwright のバージョン | 互換性のある Puppeteer のバージョン | ARM ダウンロード | X86ダウンロード |
---|---|---|---|---|
130.0.6723 | v1.48.0 、 v1.48.1 、 v1.48.2 | v23.6.0 | AL2* をダウンロード AL2023* をダウンロード | AL2* をダウンロード 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 | AL2* をダウンロード AL2023* をダウンロード | AL2* をダウンロード 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 | AL2* をダウンロード AL2023* をダウンロード | AL2* をダウンロード 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 | AL2* をダウンロード AL2023* をダウンロード | AL2* をダウンロード 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 | AL2* をダウンロード AL2023* をダウンロード | AL2* をダウンロード AL2023* をダウンロード | |
125.0.6422 | v1.44.0 、 v1.44.1 | v22.10.0 、 v22.10.1 、 v22.9.0 | AL2をダウンロード AL2023をダウンロード | AL2をダウンロード 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 | AL2をダウンロード AL2023をダウンロード | AL2をダウンロード 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 | AL2をダウンロード AL2023をダウンロード | AL2をダウンロード AL2023をダウンロード |
122.0.6261 | v22.2.0 、 v22.3.0 、 v22.4.0 、 v22.4.1 、 v22.5.0 | AL2をダウンロード AL2023をダウンロード | AL2をダウンロード 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 | AL2をダウンロード AL2023をダウンロード | AL2をダウンロード AL2023をダウンロード |
120.0.6099 | v1.40.0 、 v1.40.1 | v21.8.0 | AL2をダウンロード AL2023をダウンロード | AL2をダウンロード AL2023をダウンロード |
*最新の 5 つの Chromium メジャー リリース バイナリにアクセスするには、プロ サブスクリプションまたは 1 回限りの支払いが必要です。
Puppeteer と Playwright には、互換性のあるブラウザを CDN からダウンロードする機能が組み込まれています。デフォルトの CDN を使用する代わりに、Puppeteer / Playwright にfiles.chromiumforlambda.org
からブラウザをダウンロードするように指示する環境変数を設定します。 Lambda では /tmp ディレクトリのみが書き込み可能であるため、そこにブラウザを保存する必要があります。
Playwright をまだインストールしていない場合は、 npm install playwright-core@
。
次の環境変数を設定します。さらに、Playwright が新しいヘッドレス モードをアクティブにするために使用するPLAYWRIGHT_CHROMIUM_USE_HEADLESS_NEW
を構成することも選択できます。
PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST=https://files.chromiumforlambda.org/amazon-linux-2/arm64 # (ARM64 で NodeJS 16/18 を使用している場合)PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST=https://files.chromiumforlambda.org/amazon-linux-2023 /arm64 # (使用している場合) ARM64 上の NodeJS 20)PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST=https://files.chromiumforlambda.org/amazon-linux-2/x86_64 # (ARM64 上で NodeJS 16/18 を使用している場合) x86_64)PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST=https://files.chromiumforlambda.org/amazon-linux-2023/x86_64 # (x86_64 で NodeJS 20 を使用している場合)PLAYWRIGHT_BROWSERS_PATH=/tmp
// 以下のことを確認してください::// - サポートされている Playwright バージョンを使用していること (https://github.com/chromium-for-lambda/binaries?tab=readme-ov-file#versions を参照)。// - あなた「playwright-core」;export から process.env.PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST と process.env.PLAYWRIGHT_BROWSERS_PATH.import { chromium } を設定しましたconst ハンドラー = async () => { const install = require('playwright-core/lib/server').installBrowsersForNpmInstall; インストールを待つ(['chromium']); const browser = await chromium.launch({args: ['--use-gl=angle', '--use-angle=swiftshader', '-single-process'], }); const page = ブラウザを待ちます.newPage(); // いつものように Playwright コードを書きます}
Puppeteer をまだインストールしていない場合は、 npm install puppeteer@
。
次の環境変数を設定します。
PUPPETEER_CHROME_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2/arm64 # (ARM64 で NodeJS 16/18 を使用している場合)PUPPETEER_CHROME_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2023 /arm64 # (使用している場合) ARM64 上の NodeJS 20)PUPPETEER_CHROME_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2/x86_64 # (ARM64 上で NodeJS 16/18 を使用している場合) x86_64)PUPPETEER_CHROME_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2023/x86_64 # (NodeJS 20 を使用している場合) x86_64)PUPPETEER_CHROME_HEADLESS_SHELL_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2/arm64 # (NodeJS 16/18 を使用している場合) ARM64)PUPPETEER_CHROME_HEADLESS_SHELL_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2023/arm64 # (NodeJS 20 を使用している場合) ARM64)PUPPETEER_CHROME_HEADLESS_SHELL_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2/x86_64 # (NodeJS 16/18 を使用している場合) x86_64)PUPPETEER_CHROME_HEADLESS_SHELL_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2023/x86_64 # (x86_64 で NodeJS 20 を使用している場合)PUPPETEER_SKIP_CHROME_HEADLESS_SHELL_DOWNLOAD=true # (使用している場合)新しいヘッドレス モードを使用している場合)PUPPETEER_SKIP_CHROME_DOWNLOAD=true # (古いヘッドレス モードを使用している場合)PUPPETEER_CACHE_DIR=/tmp
// 以下のことを確認してください::// - サポートされている Puppeteer バージョンを使用していること (https://github.com/chromium-for-lambda/binaries?tab=readme-ov-file#versions を参照)。// - あなたprocess.env.PUPPETEER_CHROME_DOWNLOAD_BASE_URL、process.env.PUPPETEER_CHROME_HEADLESS_SHELL_DOWNLOAD_BASE_URL、およびprocess.env.PUPPETEER_CACHE_DIR.import puppeteer から "puppeteer";export const handler = async () => { const install = require(`puppeteer/internal/node/install.js`).downloadBrowsers; インストールを待つ() const browser = await puppeteer.launch({args: ['--use-gl=angle', '--use-angle=swiftshader', '-single-process', '--no-sandbox'],headless : 'shell' true // true は新しいヘッドレス モードでブラウザを起動し、'shell' は古いヘッドレス モードとして知られるシェルを起動します。 }); const page = ブラウザを待ちます.newPage(); // いつものように Puppeteer コードを作成します}
Puppeteer をまだインストールしていない場合は、 npm install puppeteer@
。
次の環境変数を設定します。
PUPPETEER_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2/arm64 # (ARM64 で NodeJS 16/18 を使用している場合)PUPPETEER_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2023 /arm64 # (NodeJS 20 を使用している場合) ARM64)PUPPETEER_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2/x86_64 # (x86_64 で NodeJS 16/18 を使用している場合)PUPPETEER_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux -2023/x86_64 # (場合x86_64 で NodeJS 20 を使用しています)PUPPETEER_SKIP_CHROME_HEADLESS_SHELL_DOWNLOAD=true # (新しいヘッドレス モードを使用している場合)PUPPETEER_SKIP_CHROME_DOWNLOAD=true # (古いヘッドレス モードを使用している場合)PUPPETEER_CACHE_DIR=/tmp
// 以下のことを確認してください::// - サポートされている Puppeteer バージョンを使用していること (https://github.com/chromium-for-lambda/binaries?tab=readme-ov-file#versions を参照)。// - あなたprocess.env.PUPPETEER_DOWNLOAD_BASE_URL と process.env.PUPPETEER_CACHE_DIR を設定しました。import puppeteer from "puppeteer";export const ハンドラー = async () => { const install = require(`puppeteer/internal/node/install.js`).downloadBrowser; インストールを待つ() const browser = await puppeteer.launch({args: ['--use-gl=angle', '--use-angle=swiftshader', '-single-process', '--no-sandbox'],headless : 'shell' true // true は新しいヘッドレス モードでブラウザを起動し、'shell' は古いヘッドレス モードとして知られるシェルを起動します。 }); const page = ブラウザを待ちます.newPage(); // いつものように Puppeteer コードを作成します}
Puppeteer をまだインストールしていない場合は、 npm install puppeteer@
。
次の環境変数を設定します。
PUPPETEER_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2/arm64 # (ARM64 で NodeJS 16/18 を使用している場合)PUPPETEER_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2023 /arm64 # (NodeJS 20 を使用している場合) ARM64)PUPPETEER_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2/x86_64 # (x86_64 で NodeJS 16/18 を使用している場合)PUPPETEER_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux -2023/x86_64 # (場合x86_64 で NodeJS 20 を使用しています)PUPPETEER_SKIP_CHROME_HEADLESS_SHELL_DOWNLOAD=true # (新しいヘッドレス モードを使用している場合)PUPPETEER_SKIP_CHROME_DOWNLOAD=true # (古いヘッドレス モードを使用している場合)PUPPETEER_CACHE_DIR=/tmp
// 以下のことを確認してください::// - サポートされている Puppeteer バージョンを使用していること (https://github.com/chromium-for-lambda/binaries?tab=readme-ov-file#versions を参照)。// - あなたprocess.env.PUPPETEER_DOWNLOAD_BASE_URL と process.env.PUPPETEER_CACHE_DIR を設定しました。import puppeteer from "puppeteer";export const ハンドラー = async () => { const install = require(`puppeteer/internal/node/install.js`).downloadBrowser; インストールを待つ() const browser = await puppeteer.launch({args: ['--use-gl=angle', '--use-angle=swiftshader', '-single-process', '--no-sandbox'],headless : true | 'new' // 'new' は新しいヘッドレス モードでブラウザを起動し、true は古いヘッドレス モードとして知られるシェルを起動します。 }); const page = ブラウザを待ちます.newPage(); // いつものように Puppeteer コードを作成します}
Lambda レイヤーは、補足コードまたはデータを含む .zip ファイル アーカイブです。 Lambda レイヤーを使用して、Chromium ブラウザーを関数とともにパッケージ化できます。サイズ制限のため、Chromium は古いヘッドレス モード (chrome-headless-shell バイナリ経由) でのみ使用できます。残念ながら、新しいヘッドレス モードで使用される完全な Chromium バイナリは大きすぎるため、レイヤーを介してインストールできません。
Playwright / Puppeteer のバージョンに一致する headless_shell-*.zip をダウンロードし、レイヤーとしてアップロードできます。
Playwright をまだインストールしていない場合は、 npm install playwright-core@
。
新しいヘッドレス モードはレイヤー経由でサポートされていないため、 PLAYWRIGHT_CHROMIUM_USE_HEADLESS_NEW
環境変数が設定されていないことを確認してください。
// 以下のことを確認してください::// - サポートされている Playwright バージョンを使用していること (https://github.com/chromium-for-lambda/binaries?tab=readme-ov-file#versions を参照)。// - あなたheadless_shell-*.zip ファイルを Lambda レイヤーとしてアップロードし、そのレイヤーを使用するように Lambda を設定しました。import { chromium } from "playwright-core";export const handler = async () => { const browser = await chromium.launch({args: ['--use-gl=angle', '--use-angle=swiftshader', '--single-process'],executablePath: '/opt/chrome-headless -shell-linux64/chrome-headless-shell' }); const page = ブラウザを待ちます.newPage(); // いつものように Playwright コードを書きます}
Puppeteer をまだインストールしていない場合は、 npm install puppeteer@
。
// 以下のことを確認してください::// - サポートされている Puppeteer バージョンを使用していること (https://github.com/chromium-for-lambda/binaries?tab=readme-ov-file#versions を参照)。// - あなたheadless_shell-*.zip ファイルを Lambda レイヤーとしてアップロードし、そのレイヤーを使用するように Lambda を設定しました。import puppeteer from "puppeteer";export const handler = async () => { const browser = await puppeteer.launch({args: ['--use-gl=angle', '--use-angle=swiftshader', '-single-process', '--no-sandbox'],headless : 'shell',executablePath: '/opt/chrome-headless-shell-linux64/chrome-headless-shell' }); const page = ブラウザを待ちます.newPage(); // いつものように Puppeteer コードを作成します}
Puppeteer をまだインストールしていない場合は、 npm install puppeteer@
。
// 以下のことを確認してください::// - サポートされている Puppeteer バージョンを使用していること (https://github.com/chromium-for-lambda/binaries?tab=readme-ov-file#versions を参照)。// - あなたheadless_shell-*.zip ファイルを Lambda レイヤーとしてアップロードし、そのレイヤーを使用するように Lambda を設定しました。import puppeteer from "puppeteer";export const handler = async () => { const browser = await puppeteer.launch({args: ['--use-gl=angle', '--use-angle=swiftshader', '-single-process', '--no-sandbox'],headless : true,executablePath: '/opt/chrome-headless-shell-linux64/chrome-headless-shell' }); const page = ブラウザを待ちます.newPage(); // いつものように Puppeteer コードを作成します}
公開前にバイナリを徹底的にテストします。ただし、予期しない動作が発生した場合は、遠慮なく問題を作成してください。
私たちのバイナリは Github アクションでコンパイルされています。これは、ソースからデプロイメントまで、Chromium バイナリがどのように構築されるかを正確に追跡できることを意味します。これは、バイナリの整合性と品質を検証し、バイナリの作成プロセスをより深く理解できることを意味します。
自動インストールでは、環境変数を使用して Playwright/Puppeteer が CDN から Lambda 互換のバイナリをダウンロードするように設定します。手動インストールでは、必要な依存関係を含む正しい zip ファイルをダウンロードし、Lambda レイヤー経由で手動で Lambda にアップロードする必要があります。
Amazon Linux 2 (AL2) と Amazon Linux 2023 (AL2023) の Chromium バイナリは、異なるバージョンの Linux カーネルと依存関係でコンパイルされているため異なります。
主な違いは次のとおりです。
カーネル バージョン: AL2 は 4.14 カーネルに基づいていますが、AL2023 は 5.10 カーネルに基づいています。これは、AL2023 バイナリが新しいカーネル バージョンでコンパイルされ、新しいハードウェアと機能のサポートが強化されることを意味します。
依存関係のバージョン: Chromium バイナリのビルドに使用される依存関係 (glibc、libstdc++、その他のライブラリなど) も、AL2 と AL2023 では異なります。これらの違いは、Chromium ブラウザの互換性と機能に影響を与える可能性があります。
Amazon Linux 2 (AL2) を使用している場合は、AL2 用に特別にコンパイルされた Chromium バイナリをダウンロードする必要があります。 Amazon Linux 2023 (AL2023) を使用している場合は、AL2023 用に特別にコンパイルされた Chromium バイナリをダウンロードする必要があります。
Node.js を使用している場合は、次の点に注意してください。
Node.js 16 および 18 Lambda ランタイムは Amazon Linux 2 (AL2) を使用しています
Node.js 20 ランタイムは Amazon Linux 2023 (AL2023) を使用しています
はい。ぜひご覧ください。