Node.js, Java, Python以外の言語(主にPHP)をAWS Lambdaで動かしたかった。
やったことのまとめ。
Perlを動かした話
AWS Lambdaの環境(Amazon Linux)にはPerlがインストールされている。
Lambda関数からperlコマンドを叩けば、perlのスクリプトを実行できる。
perlの他にも、インストールされているいろいろなコマンドを実行できる。
PHP CLIを動かした話
AWS Lambdaの環境にはPHPはインストールされていない。
でもPHPerなのでPHPを動かしたかった。
Linux用にコンパイルしたPHPコマンドをアップロードすれば、PHPが使用できる。
必要な共有ライブラリがAWS Lambdaの環境にない場合は、アップロードしてライブラリPATHを通す必要がある。
同様の方法で、AWS Lambdaにインストールされていないコマンドを実行することが可能。
PHP Webアプリケーションを動かした話
処理の流れ
API Gatewayでリクエストを受ける
→ AWS LambdaはPHPコマンドでbuilt-in serverを起動
→ curlコマンドでbuilt-in serverにアクセス
→ 出力されたHTMLをAPI Gatewayで返す
built-in serverの起動、built-in serverへのリクエスト・レスポンスに時間がかかり、トータルで結構待たされる。
実用的ではない。
まとめ
Node.js, Java, Pythonをあまり知らなくても、好きな言語で書けば良い。
AWS Lambdaの内部環境が変わる可能性はあるはず。自分でコンパイルしたプログラムを動かす場合、必要な共有ライブラリが無くなるなどの理由で、突然動かなくなることがあるかもしれない。