Как программно получить содержимое корзины AWS S3 в Python - PullRequest
0 голосов
/ 29 января 2020

Я могу успешно запустить команду 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()

И когда я изменяю вторую строку, чтобы вместо этого запрашивать содержимое папки local , например stream = os.popen('ls /Users/cc/'), содержимое этой локальной папки также печатается успешно.

Когда Я выполняю первую команду, используя os.system('aws --profile minio s3 ls s3://aa/bb/'), она возвращает 256 в качестве вывода.

Так как программно получить доступ к содержимому корзины minio в Python?

1 Ответ

1 голос
/ 29 января 2020

С предупреждением, что я не использовал minio, вот как я бы использовал boto3 (AWS python sdk) в сценарии python, чтобы сделать то, что делает ваша команда 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'])

boto3 на GitHub

boto3 документы

...