我有一个运行在EMR主节点上的Jupyter服务器,在那里我可以毫无问题地运行python和pyspark代码。当试图让VS Code Python扩展连接到同一个Jupyter服务器时,我得到了以下错误:
Failed to connect to remote Jupyter notebook.
Check that the Jupyter Server URI setting has a valid running server specified.
http://***.***.***.***:8888/lab
Error: Invalid response: 405 Method Not Allowed
我按照IBM的这些说明在EMR集群上创建了自己的自签名证书。然后按照其他用户在GitHub上链接到的堆栈溢出指令将证书添加到Chrome。
来自EMR主节点的bash终端:
# create key and cert
openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem
# combine key and cert
openssl pkcs12 -inkey key.pem -in certificate.pem -export -out certificate.p12
已将certificate.p12
下载到我的本地计算机,然后添加到Chrome:chrome://settings/privacy
>管理证书>导入>选择并导入certificate.p12
>重新启动VS代码。
我仍然会犯同样的错误。
- 我应该在本地创建
key.pem
和certificate.pem
,然后组合成证书吗 - 我是否需要使用创建电子病历集群时发出的原始
.pem
密钥
Jupyter的新版本启动了类似于基于终端的lynx
浏览器的功能。
无论我选择哪个终端外壳,在我启动Jupyter后,输出都非常混乱,因为终端"浏览器"正在查看的"文档"与Jupyter服务器的输出混合在一起。
在所有这些噪音中,我可以使用箭头键和输入的组合,以某种方式"导航"到以下内容与Jupyter输出(通常突出显示,但取决于哪个终端程序(混合显示在终端中的某个位置:
cookie: username-***-***-***-***-****=2|1:0|10:***********|27:username-***-***-***-***-****|44:***********************************k1ZmE=|****************************1bef31e Allow? (Y/N/Always/neVer)
我键入A,然后按输入。
有时,有时不,我会在航站楼短时间内看到以下内容:
Data transfer complete
然后我可以按q,退出Jupyter启动的任何终端浏览器,只看到正常的Jupyter服务器输出。将完整的url复制到Jupyter服务器,并将其粘贴到VS Code Python扩展python.dataScience.jupyterServerURI
中。
之后一切如预期
不需要证书或密钥。