将jupyter笔记本部署到AWS lambda
#aws #python #jupyter #terraform

🐙 GitHub

更常见,我发现自己在面对数学或算法问题时打开Jupyter笔记本。也许对您来说也是如此。首先,您会想到:``我将在笔记本中只制作研究/可视化部分,然后将所有内容移至普通的Python。几年前,当没有云lambdas时,您最终将在某个地方移动代码。希望这些天,可以在不到一分钟的时间内部署用木星笔记本编写的功能。

AWS和Terraform

我们将使用Terraform将基础架构定义为代码,因此我们最终会减少DevOps例程。当然,您需要拥有一个AWS帐户。

脚步

  1. 使Lambda功能准备好部署。
  2. 使用AWS lambda和API网关创建基础架构。
  3. 测试我们的功能。
  4. 创建一个用于部署的bash脚本。

准备部署的功能

首先,我们需要将handler函数添加到我们的笔记本上,该功能将接收请求并返回计算结果。

gist:167b2f197bbb56ccea3843da7dbdf68d

正如我们所能看到的,功能解析JSON,运行algorithm_on_steroids,然后以JSON格式返回结果。接下来,我们需要创建一个名称libs.txt的文件。在那里,我们将添加我们使用的所有第三方libs的名称(numpymatplotlibpandas,â)。然后,我们添加一个bash script,该bash script将创建一个准备部署到Lambda的.zip文件。脚本做什么:

  1. 创建一个目录。
  2. 将笔记本转换为Python文件并将其移至目录。
  3. libs.txt中指定的每个lib运行pip install
  4. zip文件夹。

AWS lambda + API网关

要使用AWS lambda,我们需要创建基础架构。它包括:

  1. S3存储该函数。
  2. 将运行该功能的lambda。
  3. 与该功能通信的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中删除的所有内容。我希望这篇文章对您有用!