Python 如何根据lambda处理程序中的后缀将文件复制到不同的存储桶

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"

如何将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": "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