如何使用AWS lambda从S3存储桶读取csv文件,并将其作为新的csv写入另一个S3存储桶?Python僵尸3



好的,所以我是AWS的初学者。我正在写一个lambda函数来触发S3中的文件上传事件,删除一些coulns并将其写入一个新的bucket。我一直在为过去的两个数据绞尽脑汁,每次都会出现不同的错误。有人能修改/修复我的代码吗?outputlv将是我的目标bucket。。当前,我得到的"/outputlv/output.csv"路径在中不存在,并以open("/output lv/output.csv","w"(作为output_file行。谢谢

import json
import urllib.parse
import boto3
import csv
s3 = boto3.client('s3')
def lambda_handler(event, context):
bucket = event['Records'][0]['s3']['bucket']['name']

key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8')
file_name = s3.get_object(Bucket=bucket, Key=key)


csv_reader = csv.reader(file_name)


with open('/outputlv/output.csv', 'w') as output_file:
wtr = csv.writer(output_file)
for i in csv_reader:
wtr.writerow(i[0], i[2], i[3])

target_bucket = 'outputlv'
final_file = 'outputlv/output.csv'

s3.put_object(Bucket=target_bucket, Key=final_file)

为什么不获取内容,是否需要使用本地文件?

response = s3.get_object(Bucket=bucket, Key=key)
# Get file content
content = response['Body'].read()
# Pass file content to csv reader
csv_reader = csv.reader(content)

最新更新