更常见,我发现自己在面对数学或算法问题时打开Jupyter笔记本。也许对您来说也是如此。首先,您会想到:``我将在笔记本中只制作研究/可视化部分,然后将所有内容移至普通的Python。几年前,当没有云lambdas时,您最终将在某个地方移动代码。希望这些天,可以在不到一分钟的时间内部署用木星笔记本编写的功能。
AWS和Terraform
我们将使用Terraform将基础架构定义为代码,因此我们最终会减少DevOps例程。当然,您需要拥有一个AWS帐户。
脚步
- 使Lambda功能准备好部署。
- 使用AWS lambda和API网关创建基础架构。
- 测试我们的功能。
- 创建一个用于部署的bash脚本。
准备部署的功能
首先,我们需要将handler
函数添加到我们的笔记本上,该功能将接收请求并返回计算结果。
gist:167b2f197bbb56ccea3843da7dbdf68d
正如我们所能看到的,功能解析JSON,运行algorithm_on_steroids
,然后以JSON格式返回结果。接下来,我们需要创建一个名称libs.txt
的文件。在那里,我们将添加我们使用的所有第三方libs的名称(numpy
,matplotlib
,pandas
,â)。然后,我们添加一个bash script,该bash script将创建一个准备部署到Lambda的.zip
文件。脚本做什么:
- 创建一个目录。
- 将笔记本转换为Python文件并将其移至目录。
- 为
libs.txt
中指定的每个lib运行pip install
。 - zip文件夹。
AWS lambda + API网关
要使用AWS lambda,我们需要创建基础架构。它包括:
- S3存储该函数。
- 将运行该功能的lambda。
- 与该功能通信的API网关。
为简单起见,我们将省略最佳实践,并将所有内容放入one terraform file。但是在运行它之前,我们需要在文件中指定凭据。特别注意该文件:
gist:5772a3d448c7b3de399acb3b9c539605
创建lambda并测试它!
现在,我们可以使用Lambda和前面提到的所有文件打开目录中的终端。
gist:4a4cd7a87b6325c2deda24a0de5d17a4
这不是魔术吗?三个命令,我们已经部署了函数。在输出末端运行terraform apply
后,我们将看到带有URL的绿线。这是我们可以用来运行该功能的URL。让我们通过提出帖子请求进行测试。
curl - request post -data'{“ a”:3,“ b”:4}' /function < /p>
OK, but what if we make changes to the function and want to see a new version deployed? Let’s write a script for deployment.
`gist:3c9af5d6a4cdaea8f52712f4eac21be3`
Now we could run it by typing:
```shell{promptUser: radzion}
. ./deploy.sh tf-lambda tf-lambdas function.zip
结论
在这篇文章中,我们制作了用于部署Jupyter笔记本电脑功能的自动化工具。这不是理想的。例如,最好添加一个可以自动在笔记本中找到第三方libs并将其添加到libs.txt
中的脚本,但这是本文的范围。为了删除我们从AWS制造的所有内容,我们可以运行terraform destroy
。并从AWS中删除的所有内容。我希望这篇文章对您有用!