Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 将文件解压缩到s3_Amazon S3_Boto_Unzip - Fatal编程技术网

Amazon s3 将文件解压缩到s3

Amazon s3 将文件解压缩到s3,amazon-s3,boto,unzip,Amazon S3,Boto,Unzip,我正在寻找一种简单的方法,将s3 bucket中的zip/gzip提取到相同的bucket位置,并在提取后删除父zip/gzip文件 我目前无法通过任何API实现这一点 已经尝试过本机boto、pyfilesystem(fs)、s3fs。 源和目标链接似乎是这些函数的一个问题 (与Python2.x/3.x和Boto 2.x一起使用) 我看到node.js(unzip-to-s3)有一个API来完成这项工作,但python没有 我可以想到两种实现: 在同一个bucket中提取zip文件的简单AP

我正在寻找一种简单的方法,将s3 bucket中的zip/gzip提取到相同的bucket位置,并在提取后删除父zip/gzip文件

我目前无法通过任何API实现这一点

已经尝试过本机boto、pyfilesystem(fs)、s3fs。 源和目标链接似乎是这些函数的一个问题

(与Python2.x/3.x和Boto 2.x一起使用)

我看到node.js(unzip-to-s3)有一个API来完成这项工作,但python没有

我可以想到两种实现:

  • 在同一个bucket中提取zip文件的简单API
  • 将s3用作文件系统并操作数据
  • 使用数据管道来实现这一点
  • 将zip传输到ec2,提取并复制回s3
  • 选项4将是最不可取的选项,以最小化ec2插件的架构开销

    在获得此功能实现时需要支持,并在稍后阶段集成到lambda。非常感谢任何指向这些实现的指针

    提前感谢,


    Sundar.

    您可以尝试将S3中的几种不同格式的归档文件解压缩/扩展到bucket中的目标文件中。我用它将数字目录的组件解压到S3中。

    您可以尝试将S3中几种不同格式的归档文件解压/扩展到bucket中的目标文件中。我使用它将数字目录的组件解压到S3中。

    使用ec2实例解决了这个问题。 将s3文件复制到ec2中的本地目录
    并将该目录复制回S3 bucket。

    已通过使用ec2实例解决。 将s3文件复制到ec2中的本地目录 然后将该目录复制回S3 bucket。

    Sample解压到ec2实例中的本地目录 要上载到mysql实例的示例代码 使用“加载数据本地填充”查询直接上传到mysql

    def upload(file_path,timeformat):
    '''
    function to upload a  csv file data to mysql rds 
    
    Args:
    file_path (string): local file path
    timeformat (string): destination bucket to copy data
    
    Returns:
    None    
    '''  
    for file in file_path:
        try:
            con = connect()
            cursor = con.cursor()
    
            qry="""LOAD DATA LOCAL INFILE '%s' INTO TABLE xxxx FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (col1 , col2 ,col3, @datetime , col4 ) set datetime = str_to_date(@datetime,'%s');""" %(file,timeformat)
            cursor.execute(qry)
            con.commit()
            logger_rds.info ("Loading file:"+file)
        except Exception:
            logger_rds.error ("Exception in uploading "+file)
             ##Rollback in case there is any error
            con.rollback()
    cursor.close()
    # disconnect from server
    con.close()
    
    要解压缩到ec2实例中的本地目录的示例 要上载到mysql实例的示例代码 使用“加载数据本地填充”查询直接上传到mysql

    def upload(file_path,timeformat):
    '''
    function to upload a  csv file data to mysql rds 
    
    Args:
    file_path (string): local file path
    timeformat (string): destination bucket to copy data
    
    Returns:
    None    
    '''  
    for file in file_path:
        try:
            con = connect()
            cursor = con.cursor()
    
            qry="""LOAD DATA LOCAL INFILE '%s' INTO TABLE xxxx FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (col1 , col2 ,col3, @datetime , col4 ) set datetime = str_to_date(@datetime,'%s');""" %(file,timeformat)
            cursor.execute(qry)
            con.commit()
            logger_rds.info ("Loading file:"+file)
        except Exception:
            logger_rds.error ("Exception in uploading "+file)
             ##Rollback in case there is any error
            con.rollback()
    cursor.close()
    # disconnect from server
    con.close()
    

    Node.js中的
    解压到s3
    ,仍然需要先下载文件,然后在代码运行的任何地方进行处理。S3没有处理zip文件的功能。Node.js中的
    解压到S3
    仍然要求先下载文件,然后在代码运行的任何地方进行处理。S3没有处理zip文件的能力。你能发布一些你是如何做到这一点的示例代码吗?非常感谢。希望示例代码有帮助,如果有任何澄清,请告知。您可以发布一些示例代码说明您是如何做到这一点的吗?非常感谢。希望示例代码有帮助,如果有任何澄清,请务必告知。