Обновите учетные данные STS для DynamoDB во время операции сканирования
Я новичок в Python и мне нужно перенести данные из одной динамо-базы данных в другую. проблема в том, что у нас есть несколько учетных записей для разных сред, например, одна для разработчика и одна для продукта. У меня есть / использовать экземпляр Ec2 для переноса этих данных. Для доступа к учетной записи Prod у меня есть STS.
stsCredentials = boto3.client('sts').assume_role(
RoleArn=STS_ROLE_TO_ACCESS_DEV_ACCOUNT_ARN,
RoleSessionName='cross-account-dynamodb-role',
DurationSeconds=STS_TOKEN_TIME_OUT
)
prodAccount = boto3.client(
'dynamodb',
region_name=AWS_REGION,
aws_access_key_id=stsCredentials['Credentials']['AccessKeyId'],
aws_secret_access_key=stsCredentials['Credentials']['SecretAccessKey'],
aws_session_token=stsCredentials['Credentials']['SessionToken']
)
devAccount = boto3.client('dynamodb', region_name=AWS_REGION)
Затем мне нужно сканировать рабочую таблицу (на самом деле я создаю резервную копию и восстанавливаю другую таблицу из этой резервной копии, чтобы уменьшить влияние на таблицу производительности)
paginator = prodAccount.get_paginator('scan')
pageIterator = paginator.paginate(
TableName=backupTableName,
Select='ALL_ATTRIBUTES',
ReturnConsumedCapacity='TOTAL',
ConsistentRead=False
)
for page in pageIterator :
for item in page['Items']:
// Process response, store data to different files and migration to dev account
И проблема в том, что в моей prod db слишком много данных, и токен STS слишком быстро истекает (из-за некоторых ограничений я не могу создавать учетные данные sts более 1 часа). В результате мой pageIterator генерирует исключение в какой-то момент с исключением токена с истекшим сроком действия. Возможно, можно обновить этот токен для этого pageIterator и продолжить сканирование с того места, где он не удался.