Я написал скрипт 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