マジで簡単だったのでメモ
Functionの作成
GCPの管理画面から「Functions」を開く
- 名前:任意
- 割り当てるメモリ量:1GB
- トリガー:HTTP
- ランタイム:Nodejs 今回は8にした
index.jsの中身を以下
const puppeteer = require('puppeteer'); exports.screenshot = async (req, res) => { const url = req.query.url; if (!url) { return res.send('params error'); } const args = [ '--no-sandbox', '--disable-setuid-sandbox', '--disable-gpu', '--ignore-certificate-errors', '--disable-infobars', '--lang=ja' ]; const browser = await puppeteer.launch({ args: args, // headless: false }); const page = await browser.newPage(); await page.setExtraHTTPHeaders({ 'Accept-Language': 'ja' }); await page.goto(url, {waitUntil: 'domcontentloaded', timeout: 15 * 1000}); const imageBuffer = await page.screenshot({ fullPage: true, quality: 10, type: 'jpeg' }); res.set('Content-Type', 'image/jpeg'); res.send(imageBuffer); };
package.jsonは以下
{ "name": "screenshot", "version": "0.0.1", "dependencies": { "puppeteer": "1.14.0" } }
- 実行する関数:screenshot
これだけでキャプチャサーバー作れるの強すぎる。。。 けどなんかタイムアウト多いし、表示までが遅い気がする(メモリ1GBが少ない説はある