[英]How to locally debug AWS SAM Lambda function (Python) which references layer that exists on different git repo/project
我的問題總結:
項目配置:
我目前能做的:
當我嘗試從層進入方法時會發生什么:
我使用的技術/庫:
我運行的命令(在通過 vscode 連接到調試會話之前)是:
sam local generate-event apigateway aws-proxy | sam local invoke MyFunction -d 5890 --event inputs/my_event.json
AWS SAM 模板(功能部分)如下所示:
MyFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub "${Environment}_${Branch}_my_function"
CodeUri: my_function.zip
Handler: app.handler
Timeout: 180
MemorySize: 512
Layers: # to be substituted with layer arn
- <LAYER_ARN>:<LAYER_VERSION>
如果我是正確的,當我從上面運行命令時,會發生以下情況:
我的理論是,只要從AWS下載層,我在vscode中調試session就看不到那個代碼了? 因此,我正在考慮但不確定是否可能的一件事是,我不是引用 LAYER_ARN,而是引用本地計算機上存在層代碼的特定文件夾。
問題1:如果我的理論是正確的,是否有可能做到這一點以及如何做到這一點? 問題2:如果我的理論不正確,有沒有其他方法可以在這個設置中實現層代碼的調試?
我不確定我們是否可以使用 SAM 調用 lambda 層。 我上次檢查時它不起作用。 但是,您可以像這樣調用 lambda:
sam build "mylambda" && sam local invoke "mylambda"
以上僅適用於 Python。 對於 node.js 你可以做
sam local invoke "mylambda"
如果你想傳遞事件,你可以做
sam build "mylambda" && sam local invoke "mylambda" -e mylambdaevt.json
您甚至可以在另一個 json 文件中傳遞環境變量。
sam build "mylambda" && sam local invoke "mylambda" --env-vars local-env.json -e events/mylambdaevt.json
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.