Bomjin Not Found

ボンジンが日々の徒然を書いていきます

AWS Lambda+Lambda Layerでpuppeteerを簡単に動かす方法

Lambda Layerが出るまでは、headless browserのchrominiumがサイズが大きいので50MB以内にしないといけないので様々な工夫が必要でした。

以前までは、

github.com

qiita.com

あたりを参考に色々と試行錯誤しながら動かしていた。

ですが!

Lambda Layerが出たおかげで、こんな四苦八苦せずとも簡単に動かすことができることを最近知りった。

基本構成

  • Lambda Layerにchrominium専用のLayerを作成
  • いつものLambdaにnodejsのコマンドを作成

の2つ。

参考にしたページはこれ。

qiita.com

serveless frameworkを使用しますので、使ったことない人は絶対これを使いましょう。

serverless.com

やること

いたって簡単です。参考にしたページを基本的にはトレースすれば終わり。

私が行った修正点

コマンドが間違っている

yarn add @serverless-chrome/lambda
sls deploy

addがなかったので追加

Layerとプロジェクトを分ける

これは好みの問題だと思いますが、同じプロジェクト内にLayerがあるのがちょっと他の人にわかりづらかったので、Layerとnodejsの部分を分離した。

nodejsの方で使うときは、serverless.yml

functions:
  hello:
    handler: handler.hello
    layers:
      arn:aws:lambda:${self:provider.region}:xxxxxxxxxxx:layer:{service名}-{layer名}:{バージョン}

のように指定してあげると使える。

starter kitベースから移植

github.com

これがいいところは、簡単にlocalから動かして動作をチェックできるところ。

なので、ベースはこれを使ってコマンドもそのまま使えるようにした。

まとめ

めっちゃ簡単にpuppeteerを使うことができた。

AWS Lambdaめっちゃ簡単なので、簡単なバッチ処理とかも全部Lambdaでいいかもなぁと思ってる。