簡體   English   中英

使用 TemporaryFile 下載和上傳 AWS S3

[英]AWS S3 Download and Upload using TemporaryFile

我需要下載 Amazon S3 Bucket 的所有內容(包括版本)並上傳到其他 Amazon S3 Bucket。 別告訴我用aws,我就是不會用。

我為此使用了 tempfile.TemporaryFile,它顯然有效,打印顯示文件對象內部具有正確的內容,但上傳的文件為空(零字節)。

with tempfile.TemporaryFile() as data:
    sourceUser.download_fileobj('source-bucket',key,data)
    # next 2 lines was just to check the content of the file
    data.seek(0)
    print (data.read())
    destinationUser.upload_fileobj(data,'destination-bucket',key)

我有同樣的要求,如何將 NamedTemporaryFile 傳遞給上傳 s3

不確定如何將 NamedTemporaryFileName 傳遞給 output=f'{file_name}.gpg' 和 load_file 函數 --> filename=f_source.name

with tempFile.NamedTemporaryFile("wb") as f_source:
                s3_client.download_fileobj(s3_bucket, s3_key, f_source)
                logger.info(f'{s3_key} file downloaded successfully to local {f_source}')
                f_source.flush()
                file_name = self.s3_key.split('/')[-1]
                gpg = gnupg.GPG()
                key_data = open(key_path).read()
                import_result = gpg.import_keys(key_data)
                f_source.seek(0)
                with open(f_source.name, 'r+b') as f:
                    status = gpg.encrypt_file(
                        file=f,
                        recipients=[recipient],
                        output=f'{file_name}.gpg',
                    )

                    s3_hook.load_file(
                        filename=f_source.name,
                        key=s3_key,
                        bucket_name=s3_bucket,
                        replace=True
                    )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM