【问题标题】:How to read a csv file from S3 bucket using AWS lambda and write it as new CSV to another S3 bucket? Python boto3如何使用 AWS lambda 从 S3 存储桶读取 csv 文件并将其作为新 CSV 写入另一个 S3 存储桶?蟒蛇boto3
【发布时间】:2021-01-31 03:53:34
【问题描述】:

好吧,总的来说,我是 AWS 的初学者。我正在编写一个 lambda 函数以根据 S3 中的文件上传事件触发,删除一些库并将其写入新存储桶。一直在为过去的两个数据而努力,每次我都会遇到不同的错误。有人可以修改我的代码/修复它吗? outputlv 将是我的目标存储桶。目前我得到的 '/outputlv/output.csv' 路径在 with open('/outputlv/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)
        

【问题讨论】:

  • 错误是什么?

标签: csv amazon-s3 aws-lambda boto3


【解决方案1】:

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

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)

【讨论】:

  • 非常感谢,我的代码中没有获取文件内容,这是所有错误的根本原因。
猜你喜欢
  • 1970-01-01
  • 2019-11-12
  • 1970-01-01
  • 2016-05-15
  • 2019-03-22
  • 1970-01-01
  • 2023-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多