连接到Google Compute Engine实例以运行Python脚本

时间:2019-07-17 19:38:37

标签: python google-compute-engine gcloud

我对云计算非常陌生,我不是来自软件工程领域,所以如果我说的话有误,请原谅。

我曾经在Spyder之类的IDE上工作,我希望保持这种状态。最近,在我的组织中,我们正在尝试Google Cloud,我想做的是在云上而不是在我的计算机上使用Google Cloud的API运行简单的脚本。

说我想通过Spyder在云上运行它:

x=3
y=2
print(f'your result is {x+y}') 

我猜我可以做类似的事情:

from googleapiclient import discovery

compute = discovery.build('compute', 'v1')
request = compute.instances().start(project=project, zone=zone, instance=instance)
request.execute()
#Do something to connect to instance


x=3
y=2
print(f'your result is {x+y}') 

有没有办法做到这一点?还是告诉python运行script.py?谢谢,如果我不清楚,请告诉我。

1 个答案:

答案 0 :(得分:1)

您无需道歉;每个人在某个时候都是云计算的新手。

我鼓励阅读有关云计算的内容,以更好地了解它的含义以及将其与您当前的经验进行比较。

您包含的代码无法按原样工作。

与Compute Engine有两种交互方式,这是Google Cloud Platform中的several compute services之一。

从根本上讲,与Compute Engine实例进行交互的方式与您与笔记本电脑进行交互的方式类似。要运行python程序,您可以启动Python的REPL或创建一个脚本,然后通过python解释器运行该脚本。这也是在Compute Engine实例上的工作方式。

您可以在Linux上一行完成此操作:

python -c "x=2; y=3; print(x+y)"

但是,首先,您必须告诉Compute Engine创建一个实例。您可以使用Google Cloud Console(http://console.cloud.google.com),Google Cloud SDK(也称为“ gcloud”)或使用例如Google的Compute Engine Python库(这是您的代码所要做的)。无论您使用哪种方法, all 最终都会针对Google Cloud进行REST调用,例如设置实例:

from googleapiclient import discovery

compute = discovery.build('compute', 'v1')
request = compute.instances().start(project=PROJECT, zone=ZONE, instance=INSTANCE)
request.execute()
#Do something to connect to instance

您的示例以connect to instance结尾,这标志着在提供实例和与之交互之间的过渡。上面代码的替代方法是使用通常称为“ gcloud”的Google命令行,例如:

gcloud compute instances create ${INSTANCE} \
--project=${PROJECT} \
--zone=${ZONE}

gcloud提供了一个方便的命令,允许您使用ssh,但它会为您进行身份验证:

gcloud compute ssh ${INSTANCE} \
--project=${PROJECT} \
--zone=${ZONE} \
--command='python -c "x=2; y=3; print(x+y)"'

NB 此命令ssh进入Compute Engine实例,然后运行您的Python程序。

这不是实现此目标的最佳方法,但我希望它向您展示了一种可以实现此目标的方法。

当您了解Google Cloud Platform时,会发现还有其他计算服务。这些其他计算服务提供了更高级别的抽象。您可以直接将代码部署到例如Python运行时。 Google App Engine和Google Cloud Functions都提供了一种无需配置实例即可直接将程序部署到计算服务的方法。由于这些服务在更高级别上运行,因此您也可以在IDE内进行编写,测试甚至部署代码的工作。

Google Cloud Platform根据您的要求提供了众多compute services。这些伴随着storage servicesmachine-learninganalyticsinternet-of-thingsdeveloper tools等。它可能不胜枚举,但您应该从基础开始一些“ hello world”教程),然后从那里开始学习。

HTH!