Обновите учетные данные 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 и продолжить сканирование с того места, где он не удался.

0 ответов

Другие вопросы по тегам