我可以通过以下代码读取csv文件
import csv, io, boto3
s3 = boto3.resource('s3')
client = boto3.client('s3',aws_access_key_id=Access_Key,aws_secret_access_key=Secret_Access_Key)
buf = io.BytesIO()
s3.Object('bucketname','filename.csv').download_fileobj(buf)
buf.seek(0)
while True:
line = buf.readlines(1)
print(line)
我无法导入必要的python库,例如psycopg2,openpyxl等 当我尝试导入psycopg2
import psycopg2
我得到了错误信息:
Unable to import module 'myfilemane': No module named 'psycopg2._psycopg'
首先,我没有导入模块“ psycopg2._psycopg”,而是导入了“ psycopg2”。我不知道后缀“ _psycopg”在哪里
其次,我遵循了文档中的所有步骤: https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html(1.创建一个目录。2.在该目录的根目录下保存所有Python源文件(.py文件)。3.在目录的根目录下使用pip安装任何库。 4.压缩project-dir目录的内容)
我还阅读了此文档: https://docs.aws.amazon.com/lambda/latest/dg/vpc-rds-deployment-pkg.html
其他模块或库也是如此。经常被告知“没有名为“ OneNameThatIHaveNotImported”的模块”
那么,有没有人有其他想法或知道另一种方式,如何通过lambda函数编辑s3上的csv文件并将已编辑的版本导入rds数据库?
谢谢您的帮助!
答案 0 :(得分:0)
此SO answer references的答案线程将使您走上正确的道路。基本上,您需要在与AWS lambda函数运行所在的Linux映像匹配的EC2中创建部署程序包。更好的是,您可以在通过AWS CLI创建部署程序包的同一EC2登台实例中部署lambda函数。
如果您想立即使用修复程序,也可以使用[预编译的lambda程序包] [2]。
[2]:https://github.com/jkehler/awslambda-psycopg2或更笼统的https://github.com/Miserlou/lambda-packages