繁体   English   中英

如何在 aws lambda 中从 aws s3 读取 csv 文件

[英]How do I read a csv file from aws s3 in aws lambda

我是 AWS 服务的新手。我正在尝试从 AWS S3 存储桶读取 csv 文件,但我无法从 AWS lambda 读取或获取任何 output。

import json
import boto3
import csv
s3_client = boto3.client('s3')
def lambda_handler(event, context):
    # TODO implement
    try:
        bucket_name = event["Records"][0]["s3"]["bucket"]["name"]
        s3_file_name = event["Records"][0]["s3"]["object"]["key"]
    
        csv_file = s3_client.get_object(Bucket=bucket_name, Key=s3_file_name)
        data = csv_file['Body'].read().splitlines(True)
        reader = csv.reader(data)
        print(reader)
    except Exception as err:
        print(err)
    

    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
}

我得到这个 output 但我没有从我的打印行中获取数据,这是为什么?
请帮我!

问题

这是 s3req 测试事件在此处输入图像描述

https://docs.python.org/3/library/csv.html

根据文档,我认为你使用了错误的方式 csv 模块。 所以读者是空的,这就是为什么你的代码不返回任何东西

读取 csv 的一种简单方法是使用 pandas。

import boto3
import pandas as pd

s3 = boto3.client('s3')
response = s3.get_object(Bucket=bucket, Key=path)
content = pd.read_csv(response.get("Body"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM