Проблемы с загрузкой объектов S3 bucket через boto3. Ошибка 403 HeadObject: запрещено - PullRequest
0 голосов
/ 06 января 2020

Я знаю, что здесь есть другие темы об этой проблеме, но я все еще пытаюсь найти правильное решение. Я пытаюсь загрузить набор определенных c объектов в пределах корзины S3 (к которой у меня есть доступ), используя следующий скрипт python. При запуске сценария первый объект успешно загружается, но затем выдается эта ошибка (403):

botocore.exceptions.ClientError: Произошла ошибка (403) при вызове операции HeadObject: Запрещено

См. Ниже мой код:

import csv
import boto3
import re
import logging
from botocore.exceptions import ClientError

prod_number_array_bq = []
prod_number_array_s3 = []
with open('bq-results-20191218-151637-rshujisvqrri.csv') as csv_file:
    csv_reader = csv.reader(csv_file,delimiter=',')
    line_count = 0
    for row in csv_reader:
        sliced = re.sub("[^0-9]", "", str(row))
        prod_number_array_bq.append(sliced)

s3 = boto3.resource('s3')
bucket = s3.Bucket('********')

for key in bucket.objects.all():
    sliced = re.sub("[^0-9]", "", str(key.key))
    if((set(sliced) & set(prod_number_array_bq))!=""):
            bucket.download_file(key.key,sliced + '.txt')


Помощь будет оценена:)

Спасибо

1 Ответ

0 голосов
/ 07 января 2020

Обычно, когда вы видите 403 на HeadObject, несмотря на то, что у вас есть разрешение s3:GetObject, это потому, что для корзины не было предоставлено разрешение s3:ListObjects И , ваш ключ не существует. Это мера безопасности, предотвращающая раскрытие информации о том, какие объекты находятся или не находятся в вашем ведре. Если у вас есть как разрешение s3:GetObject для объектов в корзине, так и разрешение s3:ListObjects для самого блока, ответ для несуществующего ключа - это 404 ответ «нет такого ключа». Если у вас есть только разрешение s3:GetObject и вы запрашиваете несуществующий объект, ответом является 403 «доступ запрещен».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...