博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三分钟学会如何在函数计算中使用 puppeteer
阅读量:6848 次
发布时间:2019-06-26

本文共 2517 字,大约阅读时间需要 8 分钟。

简介

使用 puppeteer 结合函数计算,可以快速的构建弹性的服务完成各种功能,包括:

  • 生成网页截图或者 PDF
  • 高级爬虫,可以爬取大量异步渲染内容的网页
  • 模拟键盘输入、表单自动提交、登录网页等,实现 UI 自动化测试
  • 捕获站点的时间线,以便追踪你的网站,帮助分析网站性能问题

接下来,将基于一个脚手架项目开发我们自己 puppeteer 项目。

下载项目

>>> git clone -o starter-kit https://github.com/awesome-fc/puppeteer-fc-starter-kit.git your_project_name

项目结构

├── lib                         chrome headless 依赖的共享库,打包的时候,拷贝到打包项目的根目录下├── chrome                           │   ├── buildChrome.sh          编译 chrome headless shell 脚本,基于它,可以编译最新的版本│   └── headless_shell.tar.gz   编译后的 chrome headless 二进制打包文件├── src│   ├── index.js                函数调用入口文件,函数 handler 为 index.handler,您的业务代码写在这里│   └── starter-kit│       ├── config.js           通过环境变量,获取相关配置属性,如:chrome 执行目录和安装目录等配置│       ├── local.js            本地测试操作 chrome headless 的 API 是否正确,通过执行命令:npm run local│       └── setup.js            安装 chrome headless 相关逻辑代码,如:基于 OSS 安装或者本地目录安装├── package.json└── package.zip                 输出函数计算打包文件,通过命令:npm run package 或 npm run package-nochrome

如何写业务代码

index.js 文件

const setup = require('./starter-kit/setup');exports.handler = async (event, context, callback) => {  const browser = await setup.getBrowser(context);  exports.run(browser).then(    (result) => callback(null, result)  ).catch(    (err) => callback(err)  );};exports.run = async (browser) => {  // 实现您自己的业务代码  // 下面是一个示例代码,需要替换成您自己的业务代码  // 示例实现了对固定网页截图并返回图片的功能  const page = await browser.newPage();  await page.goto('https://fc.console.aliyun.com');  const screenshot = await page.screenshot({    clip: {      x: 200,      y: 60,      width: 780,      height: 450    }  });  await page.close();  return screenshot;};

本地测试

执行命令: npm run local 。测试您操作 chrome headless 的相关 api 是否正确运行。

编译打包

包含 chrome headless

执行命令:npm run package 。命令会将 chrome headless 文件一起打包进项目,放在项目根目录,函数执行的时候,默认将 chrome headless 安装到 /tmp 目录。

不包含 chrome headless

执行命令:npm run package-nochrome 。命令不会将 chrome headless 文件一起打包进项目,你需要额外将 chrome-headless 上传到 OSS,通过环境变量告诉函数如何从 OSS 下载并安装,默认将 chrome headless 安装到 /tmp 目录。为函数计算设置环境变量:

  • CHROME_BUCKET(必填): chrome headless 上传到 OSS 的 bucket
  • CHROME_REGION(必填): chrome headless 上传到 OSS 的 region
  • CHROME_KEY(必填): chrome headless 上传到 OSS 的 key。 默认值: headless_shell.tar.gz

部署

编译打包输出的文件:package.zip,通过函数计算控制台或者 fcli 命令工具上传已打包文件。fcli 上传已打包文件命令:

# 在相应 service 目录下>>> mkf myFunction -h index.handler -f package.zip -t nodejs8 # 代码在本地的 package.zip 中

总结

函数计算有如下优势:

  • 无需采购和管理服务器等基础设施
  • 专注业务逻辑的开发
  • 提供日志查询、性能监控、报警等功能快速排查故障
  • 以事件驱动的方式触发应用响应用户请求
  • 毫秒级别弹性伸缩,快速实现底层扩容以应对峰值压力
  • 按需付费。只需为实际使用的计算资源付费,适合有明显波峰波谷的用户访问场景

联系方式

欢迎加入钉钉群:函数计算官网客户群(11721331)。

转载地址:http://mslul.baihongyu.com/

你可能感兴趣的文章
hibernate 懒加载异常
查看>>
python3的zip函数
查看>>
Paxos算法详细图解
查看>>
如何用Exchange Server 2003 构建多域名邮件系统
查看>>
httpd服务如何开机启动
查看>>
JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
查看>>
android 1.6中LinearLayout getBaseline函数的一个bug
查看>>
shell3
查看>>
分享几个好用的工具,有效提升工作效率
查看>>
论北京北漂的家人们
查看>>
delphi 检查用户输入必须是汉字串
查看>>
思科交换机和路由器设备实现DHCP功能
查看>>
MongoDB安装与操作大全
查看>>
人我的是好有是的好sula
查看>>
编译工程时报java:[1,0] illegal character: \65279问题排查与解决过
查看>>
RHEL6子接口及双网卡绑定配置
查看>>
常见系统故障排查
查看>>
正则验证手机号是否合法
查看>>
《Git权威指南》读书笔记 第四章 git初始化
查看>>
《Head first HTML与CSS 第二版》读书笔记 第九章 盒模型
查看>>