要約
SAMの内部にあるpipのversionとローカルのpipのversionが合わないと動かない時があるので、ローカルのpipのversionを修正する必要がある。
実行環境
項目名 | バージョン |
---|---|
OS | MacOS High Sierra 10.13.6 |
VSCode | 1.40.2 |
SAM | 0.37.0 |
Python | 3.7.3 |
pip | 19.3.1(記事内で19.2.3に変更) |
問題
VSCodeの「Run Locally」からAWS Toolkitを使用してローカル環境で試験したい時に動かない場合があります。例えば以下のようなエラーです。
Local invoke of SAM Application has ended.
Preparing to run app.lambda_handler locally...
Building SAM Application...
An error occurred trying to run SAM Application locally: Error with child process: Building resource 'awsToolkitSamLocalResource'
,Running PythonPipBuilder:ResolveDependencies
,Error: PythonPipBuilder:ResolveDependencies - Traceback (most recent call last):
File "<string>", line 1, in <module>
TypeError: 'module' object is not callable
原因(おそらく)
SAMの方で起きていたIssueがVSCodeのAWS Toolkitではまだ解決していないみたいです。
GitHub : sam build fails for python3.7 functions with pip==19.3 installed
試しに同じ設定で、ターミナルから以下のコマンドで実行した場合はSAMとpipのverisonは同じでも問題ありませんでした。
$ sam local invoke HelloWorldFunction --event events/event.json
対処
一時的な対処とはなりますが、pipのversionを以下に修正するとVSCodeからでも正常に実行することが可能になります
$ pip install pip==19.2.3
pipのversion変更後にVSCodeから「Run Locally」したログ
Fetching lambci/lambda:python3.7 Docker container image......
Mounting /tmp/aws-toolkit-vscode/vsctkytL1AY/output/awsToolkitSamLocalResource as /var/task:ro,delegated inside runtime container
...(中略)...
{"statusCode":200,"body":"{\"message\": \"hello worldXXX\"}"}