Как программно получить содержимое корзины AWS S3 в Python

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

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


person user5054    schedule 29.01.2020    source источник
comment
Является ли этим связанным/актуальным?   -  person AMC    schedule 29.01.2020
comment
Да, идеально, спасибо!   -  person user5054    schedule 30.01.2020


Ответы (1)


С оговоркой, что я не использовал minio, вот как я буду использовать boto3 (SDK AWS python) в скрипте 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

person mattficke    schedule 29.01.2020