背景
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