AWS Lambda+Lambda Layerでpuppeteerを簡単に動かす方法
Lambda Layerが出るまでは、headless browserのchrominiumがサイズが大きいので50MB以内にしないといけないので様々な工夫が必要でした。
以前までは、
あたりを参考に色々と試行錯誤しながら動かしていた。
ですが!
Lambda Layerが出たおかげで、こんな四苦八苦せずとも簡単に動かすことができることを最近知りった。
基本構成
- Lambda Layerにchrominium専用のLayerを作成
- いつものLambdaにnodejsのコマンドを作成
の2つ。
参考にしたページはこれ。
serveless frameworkを使用しますので、使ったことない人は絶対これを使いましょう。
やること
いたって簡単です。参考にしたページを基本的にはトレースすれば終わり。
私が行った修正点
コマンドが間違っている
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ベースから移植
これがいいところは、簡単にlocalから動かして動作をチェックできるところ。
なので、ベースはこれを使ってコマンドもそのまま使えるようにした。
まとめ
めっちゃ簡単にpuppeteerを使うことができた。