0

開発で使用する新しい Glacier Vault を作成しました。ジョブ完了通知用に SNS と SQS をセットアップします。

AWS の Java SDK を使用しています。ボールトにアーカイブを正常に追加できますが、取得ジョブの作成時にエラーが発生します。

私が使用しているコードは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

ボールト名が正しく、同じ名前を使用してアーカイブの追加ジョブを実行し、正常に完了するため、ボールト名が存在することはわかっています。

ボールトが作成されてから取得リクエストが許可されるまでに少し時間がかかるのではないかと疑っていましたが、これを確認するドキュメントは見つかりませんでした.

誰にも同様の問題がありましたか?または、取得リクエストを開始する前にボールトに遅延があるかどうかを知っていますか?

4

2 に答える 2

0

エラー メッセージ「ボールト名が無効です」は、このアーカイブが別のボールトにあることを意味します。証明リンク: https://forums.aws.amazon.com/message.jspa?messageID=446187

于 2013-07-22T23:15:33.550 に答える
0
    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());
    }
于 2013-05-15T23:43:57.270 に答える