首页 > 解决方案 > 可以列出 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 存储桶。

标签: pythonamazon-web-servicesamazon-s3boto3

解决方案


推荐阅读