2013-05-15 8 views
0

Я написал резервную/восстановительную систему для Glacier, используя SDK java SDK. Он работает, но теперь программа не может получить, и я получаю следующее исключение:Ошибки поиска ледника

Статус Код: 403,

AWS Service: AmazonSNS,

AWS Запрос ID: 2cf43ec9 -a5f5-51bd-b6b0-74c7bf725bac,

AWS Код ошибки: TopicLimitExceeded,

AWS Сообщение об ошибке: не удалось выполнить запрос: тема квота превышена

Кажется, что это происходит от SNS, а не от ледника. Используя консоль, я могу видеть темы SNS (12 &). Попробовал удалить пару из них, но, похоже, не работает. Кто-нибудь видел это?

try { 
     // Get the S3 directory file. 
     S3Object object = null; 
     try { 
      object = s3.getObject(new GetObjectRequest(s3BucketName, key)); 
     } catch (com.amazonaws.AmazonClientException e) { 
      logger.error("Caught an AmazonClientException"); 
      logger.error("Error Message: " + e.getMessage()); 
      return; 
     } 

     // Show 
     logger.info("\tContent-Type: " 
       + object.getObjectMetadata().getContentType()); 
     GlacierS3Dir dir = GlacierS3Dir.digestS3GlacierDirectory(object 
       .getObjectContent()); 
     logger.info("\tGlacier object ID is " + dir.getGlacierFileID()); 

     // Connect to Glacier 
     ArchiveTransferManager atm = new ArchiveTransferManager(client,credentials); 
     logger.info("\tVault: " + vaultName); 

     // create a name 
     File f = new File(key); 
     String filename = f.getName(); 
     filename = path + filename.replace("dir", "tgz"); 

     logger.info("Downloading to '" + filename 
       + "'. This will take up to 4 hours..."); 
     atm.download(vaultName, dir.getGlacierFileID(), new File(filename)); 
     logger.info("Done."); 

    } catch (AmazonServiceException ase) { 
     logger.error("Caught an AmazonServiceException."); 
     logger.error("Error Message: " + ase.getMessage()); 
     logger.error("HTTP Status Code: " + ase.getStatusCode()); 
     logger.error("AWS Error Code: " + ase.getErrorCode()); 
     logger.error("Error Type:  " + ase.getErrorType()); 
     logger.error("Request ID:  " + ase.getRequestId()); 
    } catch (AmazonClientException ace) { 
     logger.error("Caught an AmazonClientException."); 
     logger.error("Error Message: " + ace.getMessage()); 
    } 
+1

Нам нужно увидеть код. – Undo

+0

Я нашел проблему. Из-за (ленивого) способа выполнения запроса создается тема SNS для каждого запроса. Я только что нажал ограничение по теме 127. При удалении (вручную) темы и подписки заботятся о проблеме. В моем конкретном случае будет изменен код для использования одной темы SNS. Благодаря! – jimper

+0

Вы должны переместить свой комментарий в ответ, а затем принять его. В противном случае этот вопрос попадает каждый раз, когда кто-то ищет оставшиеся без ответа вопросы. – NobleUplift

ответ

0

UPDATE:

Я нашел эту проблему. Из-за (ленивого) способа выполнения запроса создается тема SNS для каждого запроса. Я только что нажал ограничение по теме 127. При удалении (вручную) темы и подписки заботятся о проблеме. В моем конкретном случае будет изменен код для использования одной темы SNS. Благодаря! -