У меня проблема с 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)
Вышеуказанный год дает доступ запрещен.
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. Это ошибочное предположение?