Python 如何根据lambda处理程序中的后缀将文件复制到不同的存储桶
如何将csv文件复制到另一个存储桶中 我在AWS中有3个bucket a)test b)testjson c)testcsv 我已经上传data.json和data.csv到测试bucket 上传下面的文件后,事情发生了Python 如何根据lambda处理程序中的后缀将文件复制到不同的存储桶,python,amazon-web-services,aws-lambda,Python,Amazon Web Services,Aws Lambda,如何将csv文件复制到另一个存储桶中 我在AWS中有3个bucket a)test b)testjson c)testcsv 我已经上传data.json和data.csv到测试bucket 上传下面的文件后,事情发生了 data.json文件被复制到testjson bucket data.csv文件被复制到testcsv bucket data.csv必须插入dynamodb data.json必须插入到dynamodb中 data.json { "emp_id"
{
"emp_id": "3",
"Name" : "Madk"
"Company": "FB"
}
data.csv
emp_id,Name,Company
3,Madk,FB
下面是将json放入dynamodb的第四个代码,该代码运行良好,我需要添加第1个、第2个和第3个
import json
import boto3
s3_client = boto3.client('s3')
dynamodb = boto3.resource('dynamodb')
def lambda_handler(event, context):
bucket = event['Records'][0]['s3']['bucket']['name']
json_filename = event['Records'][0]['s3']['object']['key']
json_object = s3_client.get_object(Bucket=bucket,Key=json_filename)
jsonFileReader = json_object['Body'].read()
jsonDict = json.loads(jsonFileReader)
table = dynamodb.Table('employees')
table.put_item(Item=jsonDict)
return 'file uploaded'
#print (bucket,json_filename)
在这个lambda处理程序中,我只需要将.json复制到另一个bucket中,.csv复制到另一个bucket中,我编写了将我的json添加到dynamodb中的代码,就像我需要将csv文件中的内容添加到dynamodb中一样,这只是设计模式,如果遇到错误,请实现您的逻辑并发布
import json
import boto3
s3_client = boto3.client('s3')
dynamodb = boto3.resource('dynamodb')
def lambda_handler(event, context):
bucket = event['Records'][0]['s3']['bucket']['name']
filename = event['Records'][0]['s3']['object']['key']
if(filename.split('.')[1].lower()=='json'):
moveJSON(bucket,filename)
elif(filename.split('.')[1].lower()=='csv'):
moveCSV(bucket, filename)
def moveJSON(bucket, filename):
#Implement your logic to move to test bucket
#Implement your logic to move to testjson bucket
#Below is your current logic to move to dynamodb
json_object = s3_client.get_object(Bucket=bucket,Key=filename)
jsonFileReader = json_object['Body'].read()
jsonDict = json.loads(jsonFileReader)
table = dynamodb.Table('employees')
table.put_item(Item=jsonDict)
return 'file uploaded'
def moveCSV(bucket, filename):
#Implement your logic to move to test bucket
#Implement your logic to move to testcsv bucket
#Implement your logic to move to dynamodb
这只是设计模式,实现您的逻辑并在遇到错误时发布
import json
import boto3
s3_client = boto3.client('s3')
dynamodb = boto3.resource('dynamodb')
def lambda_handler(event, context):
bucket = event['Records'][0]['s3']['bucket']['name']
filename = event['Records'][0]['s3']['object']['key']
if(filename.split('.')[1].lower()=='json'):
moveJSON(bucket,filename)
elif(filename.split('.')[1].lower()=='csv'):
moveCSV(bucket, filename)
def moveJSON(bucket, filename):
#Implement your logic to move to test bucket
#Implement your logic to move to testjson bucket
#Below is your current logic to move to dynamodb
json_object = s3_client.get_object(Bucket=bucket,Key=filename)
jsonFileReader = json_object['Body'].read()
jsonDict = json.loads(jsonFileReader)
table = dynamodb.Table('employees')
table.put_item(Item=jsonDict)
return 'file uploaded'
def moveCSV(bucket, filename):
#Implement your logic to move to test bucket
#Implement your logic to move to testcsv bucket
#Implement your logic to move to dynamodb
我不明白你想做什么,你有什么问题。@Nons对你有用吗?如果没有,你面临什么问题?您只是问如何在AmazonS3中的存储桶之间复制文件,还是问如何将文件上载到S3?请编辑您的问题以添加更多信息,而不是在评论中回答。@JohnRotenstein,是的,在这个lambda处理程序中,我只需要将.json复制到另一个bucket中,.csv复制到另一个bucket中,我编写了将我的json添加到dynamodb中的代码,我需要以相同的方式添加csv中的内容file@furas在这个lambda处理程序中,我只需要将.json复制到另一个bucket中,将.csv复制到另一个bucket中。我不想再写一个lambda Landeri如果你想将一个对象从一个Amazon S3存储桶复制到另一个存储桶,请使用“我不明白你想做什么”和“你有什么问题”。@Nons它对你有用吗?如果没有,你面临什么问题?您只是问如何在AmazonS3中的存储桶之间复制文件,还是问如何将文件上载到S3?请编辑您的问题以添加更多信息,而不是在评论中回答。@JohnRotenstein,是的,在这个lambda处理程序中,我只需要将.json复制到另一个bucket中,.csv复制到另一个bucket中,我编写了将我的json添加到dynamodb中的代码,我需要以相同的方式添加csv中的内容file@furas在这个lambda处理程序中,我只需要将.json复制到另一个bucket中,将.csv复制到另一个bucket中。我不想再写一个lambda Landeri如果你想把一个对象从一个Amazon S3 bucket复制到另一个bucket,使用如果我上传data.json文件,它必须复制到testjson bucketyes写入moveJSON函数中的copy命令adn json文件可以复制到您想要的bucketHow如果我上传data.json文件,它必须复制到testjson bucketyes写入moveJSON函数中的copy命令adn json文件可以复制到您想要的bucket