AWS SDK for Ruby v3をLambdaで使おうとしたらタイムアウト(確認したのは128MBで1分)した。
切り分けをしたところ、以下だけの簡単なコードでもタイムアウトしてしまって、どうやらAWS SDKのライブラリ全体を require しようとすると時間がめちゃめちゃかかってしまうみたい(手元だと全然時間がかかるようなことは無いのだが、理由はよく分からない…深追いはしていない)。
main.rb
require 'aws-sdk'
# エントリポイント
def lambda_handler(event:, context:)
{ statusCode: 200, body: JSON.generate('Hello from Lambda!') }
end
なので
main.rb(抜粋)
require 'aws-sdk-s3'
みたいに必要なサービスのみ require するようにしたら問題無くすぐに実行された。
と思って上記記事を書いた後にもう少しぐぐってみたところ同じような部分で格闘していた方がいらっしゃった↓。こちらはより詳しく検証している。やはり結論としては大きめのgemのロードには(初回は)時間を要するみたい。
続・日本で 128 番目くらいに Ruby で AWS Lambda を試したメモ 〜俺のライブラリを Lambda で動かしたいけど...〜 - ようへいの日々精進XP https://inokara.hateblo.jp/entry/2018/12/01/091005