ema*_*max 1 python amazon-s3 amazon-web-services boto3
我有一些数据存储在AWS S3存储桶中。
如果从终端我这样做:
aws s3 ls s3://myBucket/folder/ --profile myProfile
2020-04-23 01:04:09 96858539 2020-01-01-file.csv.gz
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用下载文件boto3
import boto3
session = boto3.session.Session(profile_name='myProfile')
s3 = boto3.resource('s3')
f1 = '2020-01-01-file.csv.gz'
s3.meta.client.download_file('myBucket', 'folder/%s'%f1, f1)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
ClientError: An error occurred (403) when calling the HeadObject operation: Forbidden
Run Code Online (Sandbox Code Playgroud)
它对你不起作用的原因是你创建了 boto3session
会话 = boto3.session.Session(profile_name='myProfile')
而你却没有使用它。所以boto3.resource('s3')应该尝试而不是session.resource('s3')
但无论如何,boto3 文档有一整个部分称为“下载文件”。它显示了两个示例并进行了解释:
import boto3
s3 = boto3.client('s3')
s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME')
Run Code Online (Sandbox Code Playgroud)
或者
s3 = boto3.client('s3')
with open('FILE_NAME', 'wb') as f:
s3.download_fileobj('BUCKET_NAME', 'OBJECT_NAME', f)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4052 次 |
| 最近记录: |