aws-samples / aws-java-sample

Sample project to demonstrate usage of the AWS SDK for Java
Apache License 2.0
231 stars 339 forks source link

The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256. #19

Open arvinds26 opened 6 years ago

arvinds26 commented 6 years ago

Below Sample returns subjected error, using latest version of java sdk

package com.amazonaws.samples;

import java.io.IOException; import java.net.URL;

import com.amazonaws.AmazonClientException; import com.amazonaws.AmazonServiceException; import com.amazonaws.HttpMethod; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;

public class GeneratePreSignedUrl { private static String bucketName = "bucketforwso2"; private static String objectKey = "/HTML-CHEAT-SHEET-768x8555.pdf";

public static void main(String[] args) throws IOException {
    @SuppressWarnings("deprecation")
    AmazonS3 s3client = new AmazonS3Client(new ProfileCredentialsProvider());

    try {
        System.out.println("Generating pre-signed URL.");
        java.util.Date expiration = new java.util.Date();
        long milliSeconds = expiration.getTime();
        milliSeconds += 1000 * 60 * 60; // Add 1 hour.
        expiration.setTime(milliSeconds);

        GeneratePresignedUrlRequest generatePresignedUrlRequest = 
                new GeneratePresignedUrlRequest(bucketName, objectKey);
        generatePresignedUrlRequest.setMethod(HttpMethod.GET); 
        generatePresignedUrlRequest.setExpiration(expiration);

        URL url = s3client.generatePresignedUrl(generatePresignedUrlRequest); 

        System.out.println("Pre-Signed URL = " + url.toString());
    } catch (AmazonServiceException exception) {
        System.out.println("Caught an AmazonServiceException, " +
                "which means your request made it " +
                "to Amazon S3, but was rejected with an error response " +
        "for some reason.");
        System.out.println("Error Message: " + exception.getMessage());
        System.out.println("HTTP  Code: "    + exception.getStatusCode());
        System.out.println("AWS Error Code:" + exception.getErrorCode());
        System.out.println("Error Type:    " + exception.getErrorType());
        System.out.println("Request ID:    " + exception.getRequestId());
    } catch (AmazonClientException ace) {
        System.out.println("Caught an AmazonClientException, " +
                "which means the client encountered " +
                "an internal error while trying to communicate" +
                " with S3, " +
        "such as not being able to access the network.");
        System.out.println("Error Message: " + ace.getMessage());
    }
}

}

Generating pre-signed URL. Pre-Signed URL = https://bucketforwso2.s3.amazonaws.com/%2FHTML-CHEAT-SHEET-768x8555.pdf?AWSAccessKeyId=AKIAJH5K4ZJ6ZQB2F4XB&Expires=1514962084&Signature=rY7RjDwJkck8ZCEGWUr4lSm%2Bkuw%3D

InvalidRequest The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256. 2947D4830B323D3A 4JK5mlUk/a7oOd6WJT5ol5X0prJY+0buLKr9zhnOcoz0mxAk/oc9A/nWHgIC8lggT11xneCtRLU=
vivekchawda007 commented 3 years ago

have you find solution for this issue ?