是否可以在不使用boto3下载的情况下获取S3文件的内容?

时间:2016-08-11 20:12:16

标签: python amazon-s3 boto3

我正在研究从[(ngModel)]数据库转储文件的过程,并且不希望在本地下载文件来处理数据。我看到Redshift有一个Java类可以完成我想要的操作,但我在StreamingObject中没有看到类似内容。

2 个答案:

答案 0 :(得分:13)

如果你有一个包含mybucket密钥的beer S3存储桶,下面是如何下载和获取值而不将其存储在本地文件中:

import boto3
s3 = boto3.resource('s3')
print s3.Object('mybucket', 'beer').get()['Body'].read()

答案 1 :(得分:0)

这可能与您想要执行的操作无关,但就我的情况而言,一件有效的事情是使用tempfile:

import tempfile
import boto3
import PyPDF2

bucket_name = 'my_bucket'
s3 = boto3.resource('s3')
temp = tempfile.NamedTemporaryFile()
s3.Bucket(bucket_name).download_file(key_name, temp.name)
pdfFileObj = open(temp.name,'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
[... do what you will with your file ...]
temp.close()