背景
AWS Lambdaを利用してバックエンド開発を行っていた際、ローカルサーバーを起動した時にエラーが発生。PythonランタイムでPuLPと呼ばれるライブラリを使用していたのだが、デプロイ環境やpytest時には問題なく計算できるのに、ローカルサーバー起動時のみ計算できない。
目的
AWS SAM にてPythonランタイムのLambda関数でPuLPライブラリを用いる際、ローカルサーバーでのプログラム実行時に発生した'PULP_CBC_CMD: Not AvailableによるPulpSolverErrorを調査した結果、原因と、間に合わせだが解決方法が分かったので共有する。
なお、私のデバイスのみでしか発生しない、もしくは解決しない可能性もある。
結論
原因
sam build実行時に生成される\.aws-sam\build\pulp\solverdir\cbc\linux\64\内のcbcというファイルのパーミッションが-rw-r--r--になっている。
このcbcファイルは-rwxr-xr-xでなければ使用できず、pip install pulp等でインストールすると-rwxr-xr-xになっているはずのファイル。
解決方法
下記のようにコマンドを実行。カレントディレクトリはプロジェクトディレクトリ直下。
sam build
chmod +x /.aws-sam/build/pulp/solverdir/cbc/linux/64/cbc
sam local start-api