Невозможно перечислить все объекты в корзине с boto3, но можно с AWS CLI - PullRequest
0 голосов
/ 01 мая 2020

У меня проблема с boto3, из-за которой я не могу перечислить все объекты в корзине, просто указав имя корзины. Когда я просто предоставляю имя группы, у меня возникает проблема отказа в доступе. Я могу, однако, использовать aws s3 ls s3://bucket_name, и я могу просматривать все объекты.

import boto3
s3 = boto3.resource('s3')

my_bucket = s3.Bucket('bucket_name')

for file in my_bucket.objects.all():
    print(file.key)

Вышеуказанный год дает доступ запрещен.

enter image description here

aws s3 ls s3://bucket_name --recursive 

Этот код работает, он перечисляет все из префикса верхнего уровня.

В boto3, если я укажу заданный префикс c, на 2 уровня ниже, я могу перечислить все объекты. Вот так

for file in my_bucket.objects.filter(Prefix="dir_name/sub_dir"):
    print(file.key)

Насколько я понимаю, я использую учетные данные роли IAM, а не файл учетных данных или env. переменные установлены на моей машине. Ведро, которое я пытаюсь перечислить, находится за пределами моей учетной записи AWS.

Меня смущает то, что я вижу немного другое поведение с AWS CLI против boto3. Я считаю, что у меня есть правильная политика списка, потому что я могу составить список с AWS CLI. Это ошибочное предположение?

...