[英]AWS Lambda: How to read CSV files in S3 bucket then upload it to another S3 bucket?
我正在做一個項目,我從 S3 存儲桶中讀取文件並刪除所有 NA 值,然后將它們上傳到不同的 S3 存儲桶。 我一直在看 Lambda 教程和示例代碼,但我很難理解它是如何工作的。
我的目標是讀取 S3 存儲桶中的任何文件並使用 Lambda function,我刪除所有 NA 值,然后將它們上傳到不同的 S3 存儲桶。 但我真的不明白發生了什么。 我閱讀了文檔,但對我理解並沒有太大幫助。
如何使以下代碼從 S3 存儲桶中讀取 CSV 文件,然后刪除所有 NA 值,然后將它們上傳到新的 S3 存儲桶?
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')
csv_file = s3.get_object(Bucket=bucket, Key=file_key)
csv_content = csv_file['Body'].read().split(b'\n')
csv_data = csv.DictReader(csv_content)
任何指向文檔或視頻和建議的鏈接將不勝感激。
def upload_file(file_name, bucket, object_name=None):
"""Upload a file to an S3 bucket
:param file_name: File to upload
:param bucket: Bucket to upload to
:param object_name: S3 object name. If not specified then file_name is used
:return: True if file was uploaded, else False
"""
# If S3 object_name was not specified, use file_name
if object_name is None:
object_name = file_name
# Upload the file
s3_client = boto3.client('s3')
try:
response = s3_client.upload_file(file_name, bucket, object_name)
except ClientError as e:
logging.error(e)
return False
return True
import boto3
s3 = boto3.resource('s3')
s3.meta.client.download_file('mybucket', 'hello.txt', '/tmp/hello.txt')
現在您只需以您想要的任何方式進行這些調用並處理您的 csv 文件,然后您如何高效地處理和上傳到 s3,這將是一個完全不同的主題。
這篇文章中有很多回答她如何使用 boto 將文件上傳到 S3 存儲桶中的目錄
如果好奇,您也可以檢查這個,給出一些如何處理更大文件的想法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.