【问题标题】:Glacier archive retrieval - invalid vault nameGlacier 档案检索 - 无效的保管库名称
【发布时间】:2013-03-27 13:40:14
【问题描述】:

我创建了一个新的 Glacier 保险库以用于开发。我为作业完成通知设置了 SNS 和 SQS。

我正在使用 AWS 的 Java 开发工具包。我能够成功地将档案添加到保管库,但在创建检索作业时出现错误。

我使用的代码来自 SDK

InitiateJobRequest initJobRequest = new InitiateJobRequest()
        .withVaultName(vaultName)
        .withJobParameters(new JobParameters().withType("archive-retrieval").withArchiveId(archiveId));

我在测试和生产中使用相同的代码,它工作正常,但在开发中我收到此错误:

状态代码:400,AWS 服务:AmazonGlacier,AWS 请求 ID:xxxxxxxx,AWS 错误代码:InvalidParameterValueException,AWS 错误消息:无效文件库名称:arn:aws:glacier:us-west-2:xxxxxxx:vaults/xxxxxx

我知道保管库名称是正确的,并且它存在,因为我使用相同的名称来运行添加存档作业并且它可以正常完成。

我怀疑保管库在创建后可能需要一些时间才能允许检索请求,但我找不到任何文档来证实这一点。

有人遇到过类似的问题吗?或者在您发起检索请求之前知道保管库是否存在延迟?

【问题讨论】:

    标签: java amazon-web-services amazon-glacier


    【解决方案1】:
        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());
        }
    

    【讨论】:

      【解决方案2】:

      错误消息“无效的保管库名称”表示此存档位于不同的保管库中。证明链接:https://forums.aws.amazon.com/message.jspa?messageID=446187

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-21
        • 1970-01-01
        • 2022-12-18
        • 2015-09-12
        • 2016-07-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多