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

我试图在 Visaul Studio Code 中使用 lambda (python) 的调试功能。我按照 AWS Docs 上的说明进行操作,但无法在调试模式下触发 python 应用程序。

请看看您是否知道这个问题以及我是否设置错误,谢谢。

观察

  • 开始申请

似乎应用程序未在指定的调试端口上启动?

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

  • 请求致电

无法到达端点并且未进入python应用程序

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

如果通过端口 3000 访问,应用程序可以成功完成

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

已执行设置

  1. 初始化项目并按照指示安装ptvsd

  2. 在 python 代码上启用 ptvsd

  3. 添加启动配置

项目结构

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

Python源码

这基本上只是 python 的官方 helloworld 示例


import json


# import requests

import ptvsd


# Enable ptvsd on 0.0.0.0 address and on port 5890 that we'll connect later with our IDE

ptvsd.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", "")

        }),

    }


杨__羊羊
浏览 55回答 1
1回答

慕标琳琳

看来我正在按照文档的指导方针编辑“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 脚本放在一起(如果您不使用层)。文件夹结构在 Visual Studio Code 中进入调试模式步骤一:调用并启动本地API网关服务器第 2 步:发送测试请求客户第 3 步:收到请求、触发 lambda、待激活 Visual Studio Code 中的调试模式服务器步骤 4:触发 Lambda 函数,在 Visual Studio Code 中进入调试模式在 IDE 中,打开“运行”透视图,选择该文件的启动配置(“SAM CLI Python Hello World”)。开始调试。第5步:单步执行函数,返回响应服务器客户
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python