Des*_*ner 5 python amazon-s3 amazon-web-services boto3
所以我的存储桶“test”上有一个 file.csv,我正在创建一个新会话,并且我想下载该文件的内容:
session = boto3.Session(
aws_access_key_id=KEY,
aws_secret_access_key=SECRET_KEY
)
s3 = session.resource('s3')
obj = s3.Bucket('test').objects.filter(Prefix='file.csv')
Run Code Online (Sandbox Code Playgroud)
这会返回一个集合,但是有没有办法直接获取文件?没有任何循环,我想做类似的事情:
s3.Bucket('test').objects.get(key='file.csv')
Run Code Online (Sandbox Code Playgroud)
我可以在不传递凭据的情况下获得相同的结果,如下所示:
s3 = boto3.client('s3')
obj = s3.get_object(Bucket='test', Key='file.csv')
Run Code Online (Sandbox Code Playgroud)
如果您看一下该client方法:
import boto3
s3_client = boto3.client('s3')
s3_client.download_file('mybucket', 'hello.txt', '/tmp/hello.txt')
Run Code Online (Sandbox Code Playgroud)
和resource方法:
import boto3
s3 = boto3.resource('s3')
s3.meta.client.download_file('mybucket', 'hello.txt', '/tmp/hello.txt')
Run Code Online (Sandbox Code Playgroud)
您会注意到您可以从 转换resource为clientwith meta.client。
因此,将其与您的代码结合起来即可得到:
session = boto3.Session(aws_access_key_id=KEY, aws_secret_access_key=SECRET_KEY)
s3 = session.resource('s3')
obj = s3.meta.client.download_file('mybucket', 'hello.txt', '/tmp/hello.txt')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8947 次 |
| 最近记录: |