为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Visual Studio Code 上使用 Python 设置 AWS SAM 本地调试?

如何在 Visual Studio Code 上使用 Python 设置 AWS SAM 本地调试?

杨__羊羊 2023-10-05 16:36:25
我试图在 Visaul Studio Code 中使用 lambda (python) 的调试功能。我按照 AWS Docs 上的说明进行操作,但无法在调试模式下触发 python 应用程序。请看看您是否知道这个问题以及我是否设置错误,谢谢。观察开始申请似乎应用程序未在指定的调试端口上启动?请求致电无法到达端点并且未进入python应用程序如果通过端口 3000 访问,应用程序可以成功完成已执行设置初始化项目并按照指示安装ptvsd在 python 代码上启用 ptvsd添加启动配置项目结构Python源码这基本上只是 python 的官方 helloworld 示例import json# import requestsimport ptvsd# Enable ptvsd on 0.0.0.0 address and on port 5890 that we'll connect later with our IDEptvsd.enable_attach(address=('localhost', 5890), redirect_output=True)ptvsd.wait_for_attach()def lambda_handler(event, context):    """Sample pure Lambda function    Parameters    ----------    event: dict, required        API Gateway Lambda Proxy Input Format        Event doc: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-simple-proxy-for-lambda-input-format    context: object, required        Lambda Context runtime methods and attributes        Context doc: https://docs.aws.amazon.com/lambda/latest/dg/python-context-object.html    Returns    ------    API Gateway Lambda Proxy Output Format: dict        Return doc: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html    """    # try:    #     ip = requests.get("http://checkip.amazonaws.com/")    # except requests.RequestException as e:    #     # Send some context about this error to Lambda Logs    #     print(e)    #     raise e    return {        "statusCode": 200,        "body": json.dumps({            "message": "hello world",            # "location": ip.text.replace("\n", "")        }),    }
查看完整描述

1 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

看来我正在按照文档的指导方针编辑“python-debugging/hello_world/build”中的python文件(文档中有一个步骤要求您将python文件复制到“python-debugging/hello_world/build” )。

但是,当您运行“sam local start-api”时,它实际上在 CloudFormation 模板 (tempalted.yaml) 指定的位置运行 python 文件,该位置位于“python-debugging/hello_world”(检查“CodeUri”属性) )。

当我将所有库移至与 python 文件相同的文件夹时,它就可以工作了。

因此,我想您必须确保正在运行哪个 python(或 lambda)脚本,并确保库与 python 脚本放在一起(如果您不使用层)。

文件夹结构

https://img1.sycdn.imooc.com//651e75f30001d0f206520373.jpg

在 Visual Studio Code 中进入调试模式

步骤一:调用并启动本地API网关

  • 服务器

https://img1.sycdn.imooc.com//651e76060001a58825430182.jpg

第 2 步:发送测试请求

  • 客户

https://img1.sycdn.imooc.com//651e76110001d95806450027.jpg

第 3 步:收到请求、触发 lambda、待激活 Visual Studio Code 中的调试模式

  • 服务器

https://img1.sycdn.imooc.com//651e761e0001fe6f25080159.jpg

步骤 4:触发 Lambda 函数,在 Visual Studio Code 中进入调试模式

在 IDE 中,打开“运行”透视图,选择该文件的启动配置(“SAM CLI Python Hello World”)。开始调试。

https://img1.sycdn.imooc.com//651e763b0001824d20641290.jpg

第5步:单步执行函数,返回响应

  • 服务器


https://img1.sycdn.imooc.com//651e764d0001167925540233.jpg

  • 客户


https://img1.sycdn.imooc.com//651e765b0001b90925600246.jpg

查看完整回答
反对 回复 2023-10-05
  • 1 回答
  • 0 关注
  • 50 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信