最近、AWS SAM を使用して API と AWS Lambda を構築し始めました。コードは AWS で正常に動作していますが、ローカルでのテストとデバッグの設定に問題があります (これが、最初に SAM を使用したかった主な理由の 1 つです)。
lambda_handler 関数は非常に単純です。以下のように見えます。依存関数の1つで「リクエスト」モジュールを使用しているsome_function_hereのような関数を実行しているだけです。私のSAMプロジェクトのrequirements.txtには、他の依存関係とともに「リクエスト」があります。リクエストが AWS Lambda にインストールされているのを確認できるので、これで問題ないようです (下のスクリーンショット)。
驚くべきことに、ローカルで SAM を実行しているときに問題が発生します (VsCode では、F5 を押します)。実行するとsam local invoke
(イベントは必要ないため)、AWS クラウドで実行しているように「requirements.txt」に基づいてリクエストをダウンロードする必要があるのに、「リクエストという名前のモジュールがありません」というエラーが表示されます。どんな提案でも大歓迎です。
Lambda ハンドラ コード
def lambda_handler(event, context):
try:
some_function_here()
return {
"statusCode": 200,
"body": json.dumps({
"message": "Job ran successfully."
}),
}
except Exception as e:
return {
"statusCode": 500,
"body": json.dumps({
"message": "Something went wrong!"
}),
}
エラー
(base) anojshrestha% sam local invoke
Invoking app.lambda_handler (python3.8)
Skip pulling image and use local one: amazon/aws-sam-cli-emulation-image-python3.8:rapid-1.7.0.
Mounting /... as /var/task:ro,delegated inside runtime container
START RequestId: 17ce7573-87ed-1ce0-5584-31a7f3f0823d Version: $LATEST
[ERROR] Runtime.ImportModuleError: Unable to import module 'app': No module named 'requests'
END RequestId: 17ce7573-87ed-1ce0-5584-31a7f3f0823d
REPORT RequestId: 17ce7573-87ed-1ce0-5584-31a7f3f0823d Init Duration: 188.03 ms Duration: 3.89 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 24 MB
{"errorType":"Runtime.ImportModuleError","errorMessage":"Unable to import module 'app': No module named 'requests'"}