在这个Wing技巧中,我们将开始研究如何使用Wing Pro来远程开发运行在AWS实例上的Python代码。通过最小的配置,Wing Pro可以编辑、调试、测试、检查和导航驻留在AWS实例上的Python代码,就像它在本地主机上一样。
最低要求
你需要一个安装了Python的AWS实例,运行32位或64位Intel Linux,并且可以使用OpenSSH或PuTTY连接。建议在Windows上使用PuTTY,因为它往往容易出现较少的问题。为了配置Wing Pro来使用你的AWS实例,你将需要以下东西。
(1)用于连接AWS实例的用户名和静态IP地址或DNS名称。亚马逊Lightsail通常使用一个IP地址,而EC2和AWS的其他变体也可能提供一个DNS名称。静态IP地址在任何情况下都可以使用。
(2)从AWS下载的*.pem文件中的SSH密钥对。
如果你还没有安装Wing Pro,现在就下载吧。
设置AWS
如果你已经有一个AWS实例可以使用,你可以跳过这一部分。
亚马逊Lightsail是获得AWS实例的最简单方法,大约5分钟就可以完成。你将需要建立一个账户。然后创建一个Linux/Unix实例,选择 " 仅操作系统"选项和最新的Ubuntu或任何其他带有Python 2或3的Intel Linux。
在设置你的实例时,你可以在AWSSSH 密钥对 管理器下下载你的SSH密钥对。你需要在你的本地机器上,也就是Wing运行的地方,获得这个密钥,以便能够连接到这个实例。
实例创建后,它将保持一分钟左右的待定状态。 一旦它启动并运行,在AWS Lightsail管理区的网络标签下创建一个静态IP地址,并将其附加到你的实例上。
至此,你就拥有了在AWS上使用Wing Pro所需要的一切:(1)你下载的SSH密钥对,以及(2)用户名和IP地址,它们都显示在Lightsail实例管理页面上。
测试SSH连接
在尝试从Wing Pro中使用你的新实例之前,你应该先尝试用ssh或PuTTY的plink.exe在命令行中进行连接,以确保这些连接是有效的。这很重要,因为Wing会调用这些命令行来连接到实例。
OpenSSH
在使用ssh的Linux或macOS上,你需要使你的*.pemSSH密钥对文件只能被运行Wing的用户读取,例如用。
chmod 600 aws.pem
否则,ssh会拒绝它,认为它可能被破坏。
一旦完成,尝试按以下方式连接,用你下载的SSH密钥对的实际路径和你的实例的用户名和IP地址或DNS名称代替:
ssh -i /path/to/mykey.pem ubuntu@11.22.33.44
你会被要求将实例的身份添加到你的已知主机文件中,你应该通过输入"是"来完成。如果没有这样做,SSH将无法连接,Wing也将无法连接到实例。
PuTTY
在 Windows 上使用 PuTTY,你需要首先将 SSH 密钥转换为 PuTTY 可以使用的格式。这是通过启动puttygen,按下Load按钮来读取你从AWS管理网站下载的.pemSSH密钥文件,然后使用Save Private Key来编写一个.ppk文件。
然后你调用plink.exe连接到AWS实例,如下所示,替换成你下载的SSH密钥对的实际路径和AWS实例的正确用户名和IP地址或DNS名称。
plink.exe -i C:\path\to\mykey.ppk ubuntu@11.22.33.44
在你第一次连接时,你会被要求接受AWS实例的身份,这必须在Wing的远程开发支持与AWS实例一起工作之前完成。
创建一个Wing项目
现在你准备在Wing Pro中创建一个项目。这是通过项目菜单中的新 项目完成的。从主机下拉菜单中选择创建 配置。然后选择AWS作为远程主机类型,并输入远程主机的标识符(在Wing的用户界面中识别它的任何短字符串),以及用于连接到该主机的用户名和IP地址或DNS名称。

如上面的例子,Python Executable通常是使用 默认值,它首先尝试python3,然后是python。如果Python不在你的AWS实例的PATH上,或者你想指定一个特定的Python可执行文件或激活一个虚拟环境,你可以在这里做。
你还需要将Wing指向你之前从AWS下载的SSH密钥对文件。 这在选项标签下使用 私钥字段完成,如下所示。

在 "新建 远程 主机"对话框中按下"确定"将创建你的远程配置并在AWS实例上安装Wing的远程代理。
接下来,你可以通过选择或创建一个源目录继续完成项目的创建过程,然后可以选择创建一个新的Python环境来使用该项目。
测试一个Hello World
为了尝试在远程AWS实例上编辑和调试代码的一个简单例子,在实例上临时创建一个文件helloworld.py。 这可以通过右键点击Wing Pro中项目工具中的一个文件并选择创建 新 文件来完成。 输入文件名(在某些键绑定中,这是在Wing窗口底部的数据输入区)并在新文件中输入或粘贴以下内容。
import time
print("Hello World! {}".format(time.time()))
保存文件后,在编辑器中点击最左边的空白处,在第二行设置一个断点。

然后从调试菜单中选择开始/继续来开始调试,或者使用工具栏中的绿色播放图标
。
在启动过程中会有一点延迟,这取决于你与AWS实例的网络距离,但随后你应该看到Wing在断点上停止。

这里没有什么可看的,但你可以使用Wing Pro的调试 控制台,从工具菜单中,在暂停的调试进程的实时运行状态中探究一下。

一旦你继续调试,进程将退出并打印到调试 I/O工具。
