读取由s3触发的csv文件甚至

2024-04-20 01:34:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我想读取一个由s3事件触发的csv文件,换句话说,当csv文件上传到s3时,我的lambda函数将读取这个文件并发送包含信息和内容的电子邮件。我的代码在没有读取csv文件的情况下工作得很好,但是每当我把读取部分放在那里,我就无法接收邮件。 我使用的是serverless framework v--1.22.0**和**Python2.7。

这是我的代码:

def csvfile(event, context):
    s3 = boto3.client('s3')
    email_from = '****@****.com'
    email_to = '****@*****.com'
    email_subject = 'new file is uploaded'
    for record in event['Records']:
        filename = record['s3']['object']['key']
        filesize = record['s3']['object']['size']
        source = record['requestParameters']['sourceIPAddress']
        eventTime = record['eventTime']    
    with open(str(filename), 'rb') as csvfile:  
        spamreader = csv.reader(csvfile, delimiter='|')
        for row in spamreader:
            print row 

    email_body = "File Name :" + filename + "\n" + "File Size :" + 
    str(filesize) + "\n" +  "Upload Time :" + eventTime + "\n" + "User 
    Details :" + source + "\n" + "content of the csv file :" + row 
    ses = boto3.client('ses')
    ses.send_email(Source = email_from,
                Destination = {'ToAddresses': [email_to,],}, 
                    Message = {'Subject': {'Data': email_subject}, 'Body':
                              {'Text' : {'Data': email_body}}}
                          )
    print('Function execution Completed !!!')

这是我的无服务器.yml文件:

^{pr2}$

Tags: 文件csvcsvfile代码fromclientevents3