python - 可以列出 s3 存储桶中的对象但无法下载
问题描述
我正在尝试在跨账户 s3 存储桶之间移动文件。我能够列出源存储桶中的所有对象并列出该存储桶中特定目录中的所有文件,但我无法下载这些文件。我正在使用带有 boto3 的 python
client = boto3.client('s3')
bucket = 'my_bucket'
folder = 'folder1/folder2/2018/04/01/'
def my_keys(bucket,folder):
keys = []
response = client.list_objects(Bucket=bucket, Prefix=folder)
for obj in response['Contents']:
keys.append(obj['Key'])
return keys
files = my_keys(bucket,folder)
print(files)
我能够列出所有文件
我想下载文件并读取到 pandas 数据帧,一旦我运行以下代码,我就会收到错误 - ClientError:调用 HeadObject 操作时发生错误(403):禁止
for file in files:
buffer = BytesIO()
client.download_fileobj(bucket, file, buffer)
buffer.seek(0)
obj = buffer.getvalue()
print(obj)
我拥有来自源团队的所有存储桶权限,但不确定是什么导致了问题。我想将文件读取到 pandas 数据框以进行一些数据清理并加载到目标 s3 存储桶。
解决方案
推荐阅读
- python - 根据 Pandas 中 csv 文件中的列值过滤数据
- mithril.js - 如何更改 Mithril 中虚拟 dom 元素的内容?
- php - 致命错误:未捕获的错误:调用 /home/acc/public_html/jobs.php 中布尔值的成员函数属性()
- sql-server - SQL查询在表中获得一个“行”
- javascript - HTML 论坛不会提交
- c++ - QAbstractTableModel 编辑而不清除单元格中的先前数据
- c++ - 有没有办法用多个提示插入 boost::multi_index ?
- javascript - 在 Heroku 上部署 React 应用程序时出现应用程序错误
- npm - webpack捆绑我的代码后我需要依赖吗
- javascript - 从 AWS.DynamoDB.DocumentClient.Scan() 调用返回输出