我已经查看了here和here,因为我一直试图弄清楚如何在AWS lambda上运行pymysql
。到目前为止,我看过的例子都非常复杂,在我开始遇到权限错误之前,我已经使用GitHub教程了解IAM,我不知道如何解决。
从字面上看,我希望能够做的就是在预建的AWS lambda控制台模板中调用import pymysql
。
这似乎是一个简单的问题,但我很难找到一个明确的,逐步的工作,如何让新的依赖项为我的lambda函数工作。理想情况下,示例将通过AWS CLI 不,因为显然有一个控制台选项,这似乎需要一些令人头疼的过程。
干杯,
亚伦
答案 0 :(得分:12)
我遇到了与 Redis python库类似的问题。 我按照您在第二个链接中提到的相同文档说明进行操作。
这里有一个示例代码段供您参考:
创建新目录 MyPythonLambda 并将 MyPythonLambda.py 放在同一个目录中。
假设 MyPythonLambda / MyPythonLambda.py 是包含处理程序的主lambda。
cd MyPythonLambda/
pip install redis -t .
zip -r MyPythonLambda.zip *
从S3或本地文件系统创建lambda中的zip / import zip。
我认为您需要以类似的方式创建包含python mysql库的zip文件。
答案 1 :(得分:3)
TheYoungSoul有一个fantastic YouTube example如何逐步完成此操作。一旦我按照这些说明操作,这很容易做到。
步骤:
编写我想在lambda上实现的例程的本地可测试版本并调用此函数main.py
。 main.py
内部有lambda_handler
函数,其基本结构为def lambda_handler(event, context): ...
使用他的repo上提供的脚本create_deployment.py
与requirements.txt
一起创建部署zip文件。请注意,如果您使用的是Mac,并且首次尝试may need to do this时出错。
运行本地可测试示例后,在AWS和上创建lambda函数,而不是从头开始编写函数,选择控制台菜单选项以上载.zip文件。
确保创建可以访问RDS资源的自定义角色,并确保将要连接的数据库放在同一个VPC组中。设置函数时,请指定您希望lambda函数具有VPC访问权限。
答案 2 :(得分:0)
由于我是新人,因此我无法直接评论亚伦的回应,因此在此添加。 TheYoungSoul有一百个回购。 包含“ create_deployment.py”的存储库为:AlexaDeploymentSample