Невозможно загрузить файлы в Amazon S3 в Java - PullRequest
4 голосов
/ 01 февраля 2012

Я новичок в использовании S3 и хочу использовать его для хранения определенных файлов моего компьютера.Я написал небольшую программу на Java, которая загружает все мои файлы и папки, но у меня есть исключение:

    Infos: Received error response: Status Code: 403, AWS Request ID: F75DC5496B071F7D, AWS Error Code: SignatureDoesNotMatch, AWS Error Message: The request signature we calculated does not match the signature you provided. Check your key and signing method., S3 Extended Request ID: XtRqjEuUmygswUxFUophRudYKbwi4OY4MK9QnYS4DMrH6JrHZXihUEC4mLZbPqz4
Exception in thread "main" Status Code: 403, AWS Request ID: F75DC5496B071F7D, AWS Error Code: SignatureDoesNotMatch, AWS Error Message: The request signature we calculated does not match the signature you provided. Check your key and signing method., S3 Extended Request ID: XtRqjEuUmygswUxFUophRudYKbwi4OY4MK9QnYS4DMrH6JrHZXihUEC4mLZbPqz4
    at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:538)
    at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:283)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:168)
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:2555)
    at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1044)
    at com.socialite.s3export.S3Export.parseDirectory(S3Export.java:89)
    at com.socialite.s3export.S3Export.parseDirectory(S3Export.java:73)
    at com.socialite.s3export.S3Export.parse(S3Export.java:48)
    at com.socialite.s3export.S3Export.main(S3Export.java:122)

Я уверен, что предоставил правильные учетные данные в SDK.Я использовал те же учетные данные из предыдущей программы для целей тестирования, и это сработало.Я могу создавать корзины, но не могу хранить в них объекты.В моем коде я использую PutObjectRequest для хранения объектов.

Вот как я инициализирую свой объект amazon S3:

AmazonS3 s3 = new AmazonS3Client(new PropertiesCredentials(
            S3Export.class                      .getResourceAsStream("AwsCredentials.properties")));

Код загрузки:

private void parseDirectory(File fin, File fdefault, String out)
            throws FileNotFoundException {

        System.out.println("processing .." + fin.getName());

        File[] files = fin.listFiles();

        PrintWriter pw = new PrintWriter(fdefault);

        for (File f : files) {

            String key = UUID.randomUUID().toString();

            String name = "";

            PutObjectRequest por = null;

            if (f.isDirectory()) {

                name = "d_" + f.getName() + ".properties";

                File metadata = new File(out + name);

                parseDirectory(f, metadata, out);

                pw.println(key + "=" + name);

                //upload to s3
                por = new PutObjectRequest(this.bucketName, key, metadata);

            } else {

                name = f.getName();

                pw.println(key + "=" + name);

                por = new PutObjectRequest(this.bucketName, key, f);

            }


            this.amazonS3.putObject(por);
        }
        pw.close();
    }

Мой код не работает в этой строке: this.amazonS3.putObject(por);.

Может кто-нибудь объяснить, что не так с моим кодом.

1 Ответ

5 голосов
/ 01 февраля 2012

Я наконец нашел ответ на свой вопрос. Правда в инициализации, я передал неправильное имя сегмента, и я использую другое имя для выполнения запросов. Это все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...