我正在尝试读取上传到S3存储桶的CSV文件内容。为此,我从触发Lambda函数的事件中获取存储桶名称和文件键,并逐行读取它。以下是我的代码:
import json
import os
import boto3
import csv
def lambda_handler(event, context):
for record in event['Records']:
bucket = record['s3']['bucket']['name']
file_key = record['s3']['object']['key']
s3 = boto3.client('s3')
csvfile = s3.get_object(Bucket=bucket, Key=file_key)
csvcontent = csvfile['Body'].read().split(b'\n')
data = []
with open(csvfile['Body'], 'r') as csv_file:
csv_file = csv.DictReader(csv_file)
data = list(csv_file)
我在CloudWatch上得到的确切错误是:
[ERROR] TypeError: expected str, bytes or os.PathLike object, not list
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 19, in lambda_handler
with open(csvcontent, 'r') as csv_file:
有人能帮我修复这个问题吗?我很感激你能提供的任何帮助,因为我对lambda不熟悉。
csvcontent
已经包含了您的数据。无需打开文件。csvcontent
实际上是一个字符串列表(行),您可以解析它。 - balderman