使用boto3创建AWS Lambda函数

3

我想要按照这篇教程 AWS Lambda Functions Made Easy - codeburst 进行操作。

然而我不太理解这段代码:

export VIRTUALENV='venv_lambda'
export ZIP_FILE='lambda.zip'
export PYTHON_VERSION='python2.7'# Zip dependencies from virtualenv, and main.py
cd $VIRTUALENV/lib/$PYTHON_VERSION/site-packages/
zip -r9 ../../../../$ZIP_FILE *
cd ../../../../
zip -g $ZIP_FILE main.py
  1. 我只需要将虚拟环境和main.py导出为zip文件吗?

  2. 这里的导出是什么意思?

  3. zip -r9 ../../../../$ZIP_FILE *的中间部分,我应该用什么来替换?

2个回答

0

这是一个非常老的教程。我强烈建议放弃它,尝试一些框架(例如ServerlessAWS SAM)。这里有一个很好的AWS SAM官方教程

请注意,boto3是一个Python包,是AWS API的Python驱动程序(中间件)。理论上,您可以使用它创建一个函数,但您仍然必须单独进行Lambda代码的打包和部署。而且,框架可以为您完成许多额外的配置工作。绝对不是初学者级别。

根据您的问题:上面示例中的export命令是操作系统(而不是Python)命令,用于创建/更新OS会话中的某些环境变量。它们可以从在该会话期间调用的任何语言/应用程序中使用。在此代码片段中,您首先export ZIP_FILE,然后将其用作$ZIP_FILE,这是bash语法。同样适用于VIRTUALENVPYTHON_VERSION - 这些只是字符串变量。
附言:Python 2.7很快就要退役了:https://pythonclock.org/也要放弃它。AWS Lambda原生支持Python的最新两个版本:3.6和3.7。

是的,它看起来相当过时。你能告诉我 zip -r9 ../../../../$ZIP_FILE 应该替换成什么吗?它是在要求我指定要压缩的目录还是创建一个包含压缩文件的目录? - Qwertford

0

1) 您正在创建一个zip文件,其中包括您的main.py以及虚拟环境中site_packages目录中的所有内容(即pip安装的依赖项)。

2) export是bash内置命令,它在当前环境和任何未来的子进程环境中设置变量。在这种情况下,它似乎没有在任何子进程中使用,可能不需要。

3) 没有什么。那个../../../../$ZIP_FILE是相对路径,返回到结果zip文件在原始目录(cd命令之前)中的位置。

关键是要创建一个zip文件,其中包含您的代码和依赖项,全部位于zip存档的顶层,而不是像本地一样将依赖项嵌套在site_packages中的多个级别中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接