이 리포지토리는 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개 버전에 액세스하려면 프로 구독이나 일회성 결제가 필요합니다.
크롬 버전 | 호환되는 극작가 버전 | 호환되는 인형극 버전 | 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 릴리스 바이너리에 액세스하려면 Pro 구독 또는 일회성 결제가 필요합니다.
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 # (x86_64에서 NodeJS 16/18을 사용하는 경우)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"에서 process.env.PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST 및 process.env.PLAYWRIGHT_BROWSERS_PATH.import { chromium }을 설정했습니다;export const handler = async () => { const install = require('playwright-core/lib/server').installBrowsersForNpmInstall; wait install(['chromium']); const 브라우저 = chromium.launch({args: ['--use-gl=angle', '--use-angle=swiftshader', '--single-process']를 기다립니다. }); const 페이지 = browser.newPage()를 기다립니다; // 평소대로 극작가 코드}
아직 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 # (x86_64에서 NodeJS 16/18을 사용하는 경우)PUPPETEER_CHROME_DOWNLOAD_BASE_URL=https ://files.chromiumforlambda.org/amazon-linux-2023/x86_64 # (x86_64에서 NodeJS 20을 사용하는 경우)PUPPETEER_CHROME_HEADLESS_SHELL_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2/arm64 # (if ARM64에서 NodeJS 16/18을 사용하고 있습니다)PUPPETEER_CHROME_HEADLESS_SHELL_DOWNLOAD_BASE_URL=https://files.chromiumforlambda.org/amazon-linux-2023/arm64 # (ARM64에서 NodeJS 20을 사용하는 경우)PUPPETEER_CHROME_HEADLESS_SHELL_DOWNLOAD_BASE_URL=https://files. chromiumforlambda.org/amazon-linux-2/x86_64 # (x86_64에서 NodeJS 16/18을 사용하는 경우)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 참조).// - 귀하 "puppeteer"에서 process.env.PUPPETEER_CHROME_DOWNLOAD_BASE_URL, process.env.PUPPETEER_CHROME_HEADLESS_SHELL_DOWNLOAD_BASE_URL 및 process.env.PUPPETEER_CACHE_DIR.import 인형극을 설정했습니다. const 핸들러 내보내기 = async () => { const install = require(`puppeteer/internal/node/install.js`).downloadBrowsers; 설치를 기다립니다() const 브라우저 = puppeteer.launch({args: ['--use-gl=angle', '--use-angle=swiftshader', '--single-process', '--no-sandbox'],headless를 기다립니다. : 'shell' | true // true는 새로운 헤드리스 모드에서 브라우저를 시작하고, 'shell'은 이전 헤드리스 모드로 알려진 쉘을 시작합니다. }); const 페이지 = browser.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 # (ARM64에서 NodeJS 20을 사용하는 경우)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를 "puppeteer"에서 설정했습니다;export const handler = async () => { const install = require(`puppeteer/internal/node/install.js`).downloadBrowser; 설치를 기다립니다() const 브라우저 = puppeteer.launch({args: ['--use-gl=angle', '--use-angle=swiftshader', '--single-process', '--no-sandbox'],headless를 기다립니다. : 'shell' | true // true는 새로운 헤드리스 모드에서 브라우저를 시작하고, 'shell'은 이전 헤드리스 모드로 알려진 쉘을 시작합니다. }); const 페이지 = browser.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 # (ARM64에서 NodeJS 20을 사용하는 경우)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를 "puppeteer"에서 설정했습니다;export const handler = async () => { const install = require(`puppeteer/internal/node/install.js`).downloadBrowser; 설치를 기다립니다() const 브라우저 = puppeteer.launch({args: ['--use-gl=angle', '--use-angle=swiftshader', '--single-process', '--no-sandbox'],headless를 기다립니다. : true | 'new' // 'new'는 브라우저를 새로운 헤드리스 모드로 시작하고, true는 이전 헤드리스 모드로 알려진 쉘을 시작합니다. }); const 페이지 = browser.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 계층으로 업로드하고 해당 layer.import { chromium } from "playwright-core";export const handler = async () => {를 사용하도록 Lambda를 구성했습니다. const 브라우저 = chromium.launch({args: ['--use-gl=angle', '--use-angle=swiftshader', '--single-process'],executablePath: '/opt/chrome-headless를 기다립니다. -shell-linux64/chrome-headless-shell' }); const 페이지 = browser.newPage()를 기다립니다; // 평소대로 극작가 코드}
아직 Puppeteer가 설치되어 있지 않은 경우: npm install puppeteer@
.
// 다음 사항을 확인하세요:// - 지원되는 Puppeteer 버전을 사용하고 있습니다(https://github.com/chromium-for-lambda/binaries?tab=readme-ov-file#versions 참조).// - 귀하 headless_shell-*.zip 파일을 Lambda 레이어로 업로드하고 "puppeteer"에서 해당 레이어를 사용하도록 Lambda를 구성했습니다.export const handler = async () => { const 브라우저 = 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 페이지 = browser.newPage()를 기다립니다; // 평소대로 Puppeteer 코드}
아직 Puppeteer가 설치되어 있지 않은 경우: npm install puppeteer@
.
// 다음 사항을 확인하세요:// - 지원되는 Puppeteer 버전을 사용하고 있습니다(https://github.com/chromium-for-lambda/binaries?tab=readme-ov-file#versions 참조).// - 귀하 headless_shell-*.zip 파일을 Lambda 레이어로 업로드하고 "puppeteer"에서 해당 레이어를 사용하도록 Lambda를 구성했습니다.export const handler = async () => { const 브라우저 = 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 페이지 = browser.newPage()를 기다립니다; // 평소대로 Puppeteer 코드}
우리는 게시하기 전에 바이너리를 철저히 테스트합니다. 하지만 예상치 못한 동작이 발생하면 자유롭게 문제를 만들어 보세요.
우리 바이너리는 Github 작업으로 컴파일됩니다. 즉, 소스부터 배포까지 Chromium 바이너리가 어떻게 구축되었는지 정확히 따를 수 있습니다. 이는 귀하가 바이너리의 무결성과 품질을 확인하고 이를 생성하는 프로세스를 더 잘 이해할 수 있음을 의미합니다.
자동 설치는 환경 변수를 사용하여 CDN에서 Lambda 호환 바이너리를 다운로드하도록 Playwright/Puppeteer를 구성합니다. 수동 설치를 위해서는 필요한 종속성이 포함된 올바른 zip 파일을 다운로드하고 Lambda 계층을 통해 수동으로 Lambda에 업로드해야 합니다.
Amazon Linux 2(AL2) 및 Amazon Linux 2023(AL2023)용 Chromium 바이너리는 서로 다른 버전의 Linux 커널 및 종속 항목으로 컴파일된다는 점에서 다릅니다.
주요 차이점은 다음과 같습니다.
커널 버전: AL2는 4.14 커널을 기반으로 하고 AL2023은 5.10 커널을 기반으로 합니다. 이는 AL2023 바이너리가 최신 커널 버전으로 컴파일되어 최신 하드웨어 및 기능에 대한 더 나은 지원을 제공할 수 있음을 의미합니다.
종속성 버전: glibc, libstdc++ 및 기타 라이브러리와 같은 Chromium 바이너리를 빌드하는 데 사용되는 종속성도 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)을 사용하고 있습니다.
예. 이것 좀 봐주세요.