Перечисление тегов экземпляров Notebook может занять несколько лет - PullRequest
0 голосов
/ 21 марта 2019

В настоящее время я использую boto3 SDK из функции Lambda для получения различной информации об экземплярах Sagemaker Notebook, развернутых в моей учетной записи (почти 70, поэтому не так много ...)

Одной из операций, которые я пытаюсь выполнить, является перечисление тегов для каждого экземпляра.

Однако время от времени требуется время, чтобы вернуть теги : моя лямбда либо останавливается (я мог бы увеличить время ожидания, но все же ...), либо ThrottlingException вызвано функцией sagemaker.list_tags (этого можно избежать, увеличив число повторных попыток при создании клиента sagemaker boto3):

sagemaker = boto3.client("sagemaker", config=Config(retries = dict(max_attempts = 10)))
instances_dict = sagemaker.list_notebook_instances()

if not instances_dict['NotebookInstances']:
    return "No Notebook Instances"

while instances_dict:
    for instance in instances_dict['NotebookInstances']:
        print instance['NotebookInstanceArn']
        start = time.time()
        tags_notebook_instance = sagemaker.list_tags(ResourceArn=instance['NotebookInstanceArn'])['Tags']
        print (time.time() - start)
    instances_dict = sagemaker.list_notebook_instances(NextToken=instances_dict['NextToken']) if 'NextToken' in instances_dict else None 

Если у вас, ребята, есть идеи, чтобы избежать таких задержек:)

TY

1 Ответ

1 голос
/ 22 марта 2019

Как вы уже заметили, вас душат.Вместо увеличения количества повторных попыток вы можете попытаться изменить задержку (то есть увеличить коэффициент роста).Кажется, можно настраивать, глядя на https://github.com/boto/botocore/blob/develop/botocore/data/_retry.json#L83

Обратите внимание, что корзины (и скорости пополнения), как правило, на втором уровне детализации.Итак, с 70 ARN вы смотрите на некоторое количество секунд;двойные цифры меня не удивляют.

Возможно, вы захотите разбить работу по-разному, поскольку добавление повторных попыток или увеличения значения_процесса просто увеличит продолжительность работы функции.

У меня естьимел довольно хороший успех в разбивке вещей, так что функция Lambda обрабатывает только один ARN за вызов.Лямбда - это обработка работы (обычно я буду использовать очередь SQS для управления тем, что должно быть обработано), а скорость работы можно настраивать с помощью комбинации настройки видимости сообщения Лямбда и SQS.

Не знаюто, что вы пытаетесь выполнить за пределами вашей первоначальной лямбды, я понимаю, что расставание работы таким образом может (или будет) создавать трудности для того, что вы делаете в целом.

Стоит также отметить, что если у вас естьCloudTrail включил, что теги будут частью данных события (данных запроса) для «EventName» (которое соответствует вызываемому методу, т.е. CreateTrainingJob, AddTags и т. Д.).

Третий вариант будет, если выпытаясь найти все экземпляры записной книжки с определенным тегом, вы можете использовать группы ресурсов для создания запроса и довольно быстро найти ARN с этими тегами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...