首页 > 解决方案 > 如何在 Python 中以编程方式获取 AWS S3 存储桶的内容

问题描述

我可以aws --profile minio s3 ls s3://aa/bb/在终端中成功运行命令以获取 minio 上特定存储桶的内容,但是当我在 Python 中运行以下代码时,它返回一个空字符串。

import os
stream = os.popen('aws --profile minio s3 ls s3://aa/bb/')
stream.read()

当我更改第二行以便查询本地文件夹的内容时,例如stream = os.popen('ls /Users/cc/'),该本地文件夹的内容也会成功打印。

当我使用 执行第一个命令os.system('aws --profile minio s3 ls s3://aa/bb/')时,它256作为输出返回。

那么如何在 Python 中以编程方式访问 minio 存储桶的内容呢?

标签: pythoncommand-lineminio

解决方案


需要注意的是我没有使用过 minio,下面是我boto3在 python 脚本中使用(AWS python sdk)来执行 CLI 命令的方法:

import boto3

session = boto3.session.Session(profile_name='minio')
client = session.client('s3')

response = client.list_objects_v2(
    Bucket='aa',
    Prefix='bb',
)

for item in response['Contents']:
    print(item['Key'])

GitHub 上的 boto3

boto3 文档


推荐阅读