Boto3 ResourceGroupsTaggingAPI: Как обработать код ошибки «Регулирование» - PullRequest
0 голосов
/ 03 апреля 2020

Я написал скрипт python, который помечает ресурсы на основе переданного имени службы, например, ec2, rds et c. У меня также есть флаг «все», который проходит через 5 сервисов (ec2, rds, iam, cloudwatch, dynamicodb). Есть около 650 ARN для тега. Я знаю, что каждый вызов .tag_resources () занимает не более 20 арн. Эту проблему я уже решил, используя пакеты размером 20.

Однако иногда возвращаемое значение содержит «ErrorCode: Throttling», означающее, что конечная точка AWS отклоняет вызов.

Что вы предлагаете для решения этой проблемы? Я пробовал это с time.sleep (), но проблема все еще есть.

EDIT: При исключении 'cloudwatch' он отлично работает.

Вот код вспомогательной функции, которая выполняет вызов get.resource ():

   def __tagHelper(self,arns,n,tags):

        batches = chunks(arns,n) # arns is a list containing 650 object, n = 20
        failedTagTrys=[]

        for batch in batches: # batch is of size 20        

                response = self.client.tag_resources(
                    ResourceARNList=batch,
                    Tags=tags
                )


                failedTagTrys.append(response['FailedResourcesMap'])


        # Clean up the list by removing empty dictionaries
        cleaned_FailedTagTrys=list(filter(None, failedTagTrys))
        return cleaned_FailedTagTrys
...