我正在调试一个Python脚本。我的配置如下所示:
{
"name": "debug script.py",
"type": "python",
"request": "launch",
"program": "/path/to/script.py",
"console": "integratedTerminal"
}
运行脚本时,我需要在它前面加上一个可执行aws-access
,以便让自己访问 AWS 上的某些资源(否则会出现Permission Denied
错误(:
aws-access python script.py
如何将此前缀添加到调试命令中?
请注意,在使用代码运行器插件执行我的代码时,这很容易做到:
"code-runner.executorMap": {
"python": "aws-access $pythonPath -u $fullFileName"
}
它比平时不太流畅,但这是如何做到的:
您需要安装调试
若要启动调试,需要一个单独的函数或脚本来等待调试器附加。我有一个单独的脚本,如下所示:
import debugpy
debugpy.listen(5678)
debugpy.wait_for_client()
from foo import bar
bar.run()
bar.run()
是你尝试调试的内容。
然后,您需要为 VSCode 指定一个launch.json
配置 - 您可以在尝试在/.vscode/launch.json
下调试的项目目录中自行创建此配置,也可以从 VSCode 中创建一个
launch.json
应如下所示:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Attach Standard",
"type": "python",
"request": "attach",
"connect": {
"host": "localhost",
"port": 5678
}
}
]
}
一般的调试流程是:
- 在 VSCode 终端中,使用环境变量或类似
aws-vault
的内容(反过来,将设置环境变量(设置 AWS 凭证 - 从同一终端,运行调试函数或脚本,例如
python debug_script.py
- 通过从VSCode UI调试运行函数或脚本(同样,我使用脚本,因为它使这部分更容易,对代码的侵入性更小(
它将响应 VSCode 中设置的 UI 调试点,以及代码中的debugpy.breakpoint()
。更重要的是,它将使用您在其中设置 AWS 环境变量的同一终端会话。
另一种选择是运行:
saml2aws exec --exec-profile [your-profile-name] --session-duration=3600 -- $SHELL
在您的 VS 终端中。在后续调试执行时,您将保持身份验证(直到会话持续时间(。