有没有办法使用 Boto3 将数据来回传输到 AWS lambda? 我有一个工作代码,但将 CSV 数据加载到内存中进行处理并将其放入 s3 对象中。我宁愿寻找一种使用 Boto3 从 S3 流式传输对象并将其流回 S3 的方法。
import csv
import json
import boto3
def lambda_handler(event, context):
targetbucket = 'AWS_BUCKET_NAME'
csvkey = 'CSV_FILENAME.csv'
jsonkey = 'JSON_FILENAME.json'
s3 = boto3.resource('s3')
csv_object = s3.Object(targetbucket, csvkey)
csv_content = csv_object.get()['Body'].read().splitlines()
s3_client = boto3.client('s3')
result = []
for line in csv_content:
x = json.dumps(line.decode('utf-8')).split(',')
Name = str(x[0])
Title = str(x[1])
Age = str(x[2])
jsonData = '{ "Name": ' + Name + '"' + ',' \
+ ' "Title": ' + '"' + Title + '"' + ',' \
+ ' "Age": ' + '"' + Age + '"' + '}'
result.append(jsonData)
s3_client.put_object(
Bucket=targetbucket,
Body= str(result).replace("'",""),
Key=jsonkey
)
最佳答案
要从 S3 中的 CSV/JSON 文件流式传输数据,您可以使用 ' S3 Select '。使用此功能,您可以将数据直接流式传输到代码并使用它,而不是将文件下载到内存中并进行处理。
除此之外,您还可以在代码上执行基本的 SQL 语句。
您也可以引用这段代码:https://gist.github.com/SrushithR/1dbb6d3521383c259b47756506cf5955
关于json - 有没有办法使用 boto3 将 CSV 对象从 S3 存储桶流式传输到 AWS lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56083742/