functions は何をしますか?
Browserbase を使用してサーバーレスブラウザ自動化をクラウド関数としてデプロイします。ユーザーがスケジュールまたは cron で実行するブラウザ自動化のデプロイ、ブラウザタスク用の Webhook エンドポイントの作成、ローカルではなくクラウドでの自動化の実行、または Browserbase Functions について質問した場合に使用します。
概要
Browserbase Functions を使用すると、インフラストラクチャを管理することなく、ブラウザ自動化タスクをサーバーレス関数としてデプロイできます。これらの関数は、以下によってトリガーできます。
- スケジュール (cron) - 定期的なジョブの実行
- Webhook - 外部イベントへの応答
- API 呼び出し - オンデマンド実行
前提条件
始める前に、以下が必要です。
- Browserbase アカウント
BROWSERBASE_API_KEYとBROWSERBASE_PROJECT_IDが設定された環境- Node.js 18 以降
インストール
npm install @browserbasehq/sdk playwright
使用法
1. 関数の作成
ブラウザ自動化を実行する関数を作成します:
import { Browserbase } from '@browserbasehq/sdk';
import { chromium } from 'playwright';
export default async function handler(event, context) {
const bb = new Browserbase({
apiKey: process.env.BROWSERBASE_API_KEY,
projectId: process.env.BROWSERBASE_PROJECT_ID,
});
// Browserbase セッションを作成
const session = await bb.sessions.create({
projectId: process.env.BROWSERBASE_PROJECT_ID,
});
// Playwright でブラウザに接続
const browser = await chromium.connectOverCDP(session.debuggerUrl);
const page = await browser.newPage();
await page.goto('https://example.com');
const title = await page.title();
await browser.close();
await session.end();
return {
statusCode: 200,
body: JSON.stringify({ title }),
};
}
2. 関数のデプロイ
browserbase CLI を使用して関数をデプロイします:
npx browserbase deploy
CLI により、関数名とトリガータイプ(cron スケジュールまたは Webhook)の設定を求められます。
3. トリガーの設定
Cron スケジュール
定期的な実行のために cron 式を指定します:
# browserbase.yaml
triggers:
- type: cron
schedule: "0 9 * * 1-5" # 平日の午前 9 時
Webhook
Webhook エンドポイントを作成します:
# browserbase.yaml
triggers:
- type: webhook
path: /my-hook
4. 環境変数
関数で安全な方法で機密データにアクセスするには、環境変数を使用します:
browserbase secrets set MY_API_KEY=my-secret-key
ベストプラクティス
- エラーハンドリング: 関数内で適切なエラーハンドリングを実装します。
- ログ記録: デバッグのために
console.logを使用します。 - タイムアウト: 関数のデフォルトタイムアウトは 5 分です。より長いタスクの場合は、
browserbase.yamlで調整します。 - コスト管理: 1 秒あたりのセッション料金が発生します。セッションが不要になったら必ず終了してください。
制限事項
- サポートされているランタイム: Node.js 18 以降
- 最大関数実行時間: 15 分
- 関数あたりの最大メモリ: 1 GB
- 対応ブラウザ: Chromium (Playwright 経由)
例
その他の例については、Browserbase Functions のドキュメント を参照してください。
トラブルシューティング
- 接続エラー:
BROWSERBASE_API_KEYとBROWSERBASE_PROJECT_IDが正しく設定されていることを確認します。 - タイムアウトエラー: 関数のタイムアウト設定を増やすか、ロジックを最適化します。
- デプロイエラー: Node.js バージョンが 18 以降であることを確認し、すべての依存関係がインストールされていることを確認します。