Puppeteer-Lambda 项目教程
1. 项目的目录结构及介绍
puppeteer-lambda/
├── README.md
├── package.json
├── serverless.yml
├── src/
│ ├── handler.js
│ └── utils/
│ └── chrome-script.js
└── node_modules/
目录结构介绍
- README.md: 项目说明文件,包含项目的概述、安装和使用说明。
- package.json: 项目的依赖管理文件,定义了项目的依赖包和脚本命令。
- serverless.yml: Serverless 框架的配置文件,定义了 AWS Lambda 函数的配置和部署信息。
- src/: 项目的源代码目录。
- handler.js: Lambda 函数的主入口文件,包含 Puppeteer 的启动和执行逻辑。
- utils/chrome-script.js: 辅助脚本,用于处理 Chrome 的启动和连接。
- node_modules/: 项目的依赖包目录,包含所有安装的 Node.js 模块。
2. 项目的启动文件介绍
src/handler.js
handler.js
是 Puppeteer-Lambda 项目的主入口文件,负责启动 Puppeteer 并执行网页截图等操作。以下是文件的主要内容:
import puppeteer from "puppeteer-core";
const chromium = require("@sparticuz/chromium");
export const handler = async (event, context) => {
try {
const browser = await puppeteer.launch({
executablePath: await chromium.executablePath(),
headless: chromium.headless,
ignoreHTTPSErrors: true,
defaultViewport: chromium.defaultViewport,
args: chromium.args,
});
const page = await browser.newPage();
await page.goto("https://example.com");
const screenshot = await page.screenshot();
await browser.close();
return {
statusCode: 200,
body: screenshot.toString("base64"),
};
} catch (error) {
console.error(error);
return {
statusCode: 500,
body: JSON.stringify({ error: error.message }),
};
}
};
文件功能介绍
- Puppeteer 启动: 使用
puppeteer.launch
方法启动 Puppeteer,并配置 Chrome 的可执行路径、无头模式、忽略 HTTPS 错误等参数。 - 网页访问与截图: 使用
page.goto
方法访问指定网页,并使用page.screenshot
方法生成网页截图。 - Lambda 函数返回: 将截图转换为 Base64 格式并返回给调用者。
3. 项目的配置文件介绍
serverless.yml
serverless.yml
是 Serverless 框架的配置文件,定义了 AWS Lambda 函数的配置和部署信息。以下是文件的主要内容:
service: puppeteer-lambda
provider:
name: aws
runtime: nodejs14.x
region: us-east-1
memorySize: 1024
timeout: 30
functions:
puppeteer:
handler: src/handler.handler
events:
- http:
path: /screenshot
method: get
plugins:
- serverless-offline
配置文件功能介绍
- 服务名称:
service
字段定义了服务的名称。 - 提供者配置:
provider
字段定义了 AWS 作为云提供者,并配置了运行时、区域、内存大小和超时时间。 - 函数配置:
functions
字段定义了 Lambda 函数的名称、处理程序路径和触发事件。 - 插件配置:
plugins
字段定义了使用的 Serverless 插件,例如serverless-offline
用于本地开发和测试。
通过以上配置,项目可以在 AWS Lambda 上部署并运行 Puppeteer 相关的任务。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考