boto3 ResourceCollection истекает до завершения цикла по объектам - PullRequest
0 голосов
/ 23 января 2019

У меня возникли некоторые проблемы с истечением срока действия boto3 и STS.Я понимаю, что срок действия СС истекает каждый час.Поэтому я реализовал код, который повторно аутентифицируется с помощью AWS каждые 45 минут.

Однако я использую boto3 для доступа к корзине, которая содержит 3,4 миллиона объектов.Я пытаюсь зациклить эти объекты, проверить, существуют ли они в другом массиве, и если нет, добавить эти объекты в другой массив.

s3_files = misc_files.objects.filter(Prefix='folder_in_bucket/')    
array_of_unsent = []
for file in s3_files:
    if file.key != 'folder_in_bucket/':
        if file.key not in successful_additions:
            array_of_unsent.append(file key)

Я могу сбросить код STS, выполняя что-то подобное в функции каждый час (с глобальными переменными для функций), сообщая об ошибке с ListObjects на заднем плане:

    #################  S3 ##############################

session = boto3.Session (# Access Key, secret, region...)

sts_client_s3 = session.client('sts')

assumed_role_s3 = sts_client_s3.assume_role(
    RoleArn="arn:aws:iam::1234567:role/role_name",
    RoleSessionName="role_name"
)

iam_content_credentials = assumed_role_s3['Credentials']

iam_content_s3 = session.resource(
    's3',
    aws_access_key_id=iam_content_credentials['AccessKeyId'],
    aws_secret_access_key=iam_content_credentials['SecretAccessKey'],
    aws_session_token=iam_content_credentials['SessionToken'],
    region_name='eu-west-1'
)

misc_files = iam_content_s3.Bucket('bucket_name')

Однако через час истекает срок действия STS на for file in s3_files:.Срок действия также истекает, если я поставлю for file in misc_files.objects.filter(Prefix='folder_in_bucket/'):

, поэтому мне интересно, есть ли альтернативное решение - может быть, используя CLI для извлечения списка файлов, чтобы я мог запустить скрипт python в автономном режиме?Может быть, я могу попробовать извлечь весь массив без if file.key not in successful_additions: и надеюсь, что он завершится менее чем за час?Буду признателен за любую помощь.

В документах boto3 также указывается, что ListObjects может вызывать значительные затраты (в Коллекциях документов) - как бы я рассчитал это?

Спасибо

...