【问题标题】:Glacier retrieval errors冰川检索错误
【发布时间】:2014-02-05 04:27:52
【问题描述】:

我使用 AWS java SDK 为 Glacier 编写了一个备份/检索系统。它一直在工作,但程序现在无法检索,并且出现以下异常:

状态码:403,

AWS 服务:AmazonSNS,

AWS 请求 ID:2cf43ec9-a5f5-51bd-b6b0-74c7bf725bac,

AWS 错误代码:TopicLimitExceeded,

AWS 错误消息:无法完成请求:超出主题配额

它似乎来自 SNS,而不是 Glacier。使用控制台,我可以看到 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());
    }

【问题讨论】:

  • 我们需要看一些代码。
  • 我发现了问题。由于完成请求的(惰性)方式,正在为每个请求创建一个 SNS 主题。我刚刚达到了 127 个主题限制。 (手动)删除主题和订阅可以解决问题。在我的特殊情况下,将修改代码以使用一个 SNS 主题。谢谢!
  • 您应该将您的评论移动到答案中,然后接受它。否则,每次有人搜索未回答的问题时都会点击此问题。

标签: amazon-web-services amazon-glacier


【解决方案1】:

更新:

我发现了问题。由于完成请求的(惰性)方式,正在为每个请求创建一个 SNS 主题。我刚刚达到了 127 个主题限制。 (手动)删除主题和订阅可以解决问题。在我的特殊情况下,将修改代码以使用一个 SNS 主题。谢谢! -

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    相关资源
    最近更新 更多