Selenium を動かすときにはまったので、備忘録として。
の内容の追加になります。
Lambda のレイヤーでは対応できない場合
Lambda のレイヤーを使えば、250MB までのライブラリを比較的簡単にインストールできます。
ですが、250MB 以上になった場合は、どうしても EFS を使って EC2 も使って ライブラリを呼び出す必要があります。
使い方は、
に載っている通りなのですが、いくつかハマるポイントがあるので、それを説明します。
2049番ポートからのアクセスを開放しているセキュリティグループ
EC2 のセキュリティルールで、インバウンド 2049・アウトバウンド全許可のルールを作りましょう。SSH も忘れずに。
Lambda への ポリシーのアタッチ
にポリシーへのアタッチの方法が書いてあります。
2つ続けて、基本的なことですが。
インターネット接続できない
Selenium で何回やっても、空のHTML しか出力されないのでおかしいと思ったら、VPC Lambda を設定する場合は、自分でインターネット接続をできるように設定をしないといけないようです。
プライベートサブネットの作り方。
??.??.0.0/20 と ??.??.??.0/20 の2つのパブリックサブネットが作られていますが、インターネットに接続するには、プライベートサブネットを作る必要もあります。
そこで問題になるのが、CIDR に何を入れるかです。
自分の場合は、??.??.32.0/20 で動くものができました 。間違っていたりしたら、ご指摘お願いします。
その他 Selenium の設定
Selenium の設定で、空のHTMLが出力される場合
日本語文字化け対策
/mnt/efs/ 直下で、
を適用して、Lambda の環境変数を、/mnt/efs
にすれば直ります。Selenium も ChromeDriver 2.43以降 & Chromium 68以降 だと基本的に EFS 使わないと、250MB超えてしまうので、.fonts
も headless
も /mnt/efs
配下に置きます。
他のものも思い出したら、追記します。