"""AWS DynamoDB utils.""" def query_dynamodb_paginated_generator(dynamodb_table, query_args): """ Query DynamoDB for given args with pagination. For more information about usages please refer Table: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb/table/index.html#DynamoDB.Table # noqa:E501 Pagination: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Query.Pagination.html # noqa:E501 :param dynamodb_table: dynamodb table resource :param query_args: args used for table.query() :return: generator yields items from query response """ last_evaluated_key = None while True: if last_evaluated_key: query_args['ExclusiveStartKey'] = last_evaluated_key response = dynamodb_table.query(**query_args) for item in response['Items']: yield item last_evaluated_key = response.get('LastEvaluatedKey') if not last_evaluated_key: return