У меня возникли некоторые проблемы с истечением срока действия 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 может вызывать значительные затраты (в Коллекциях документов) - как бы я рассчитал это?
Спасибо