Amazon CloudFront Origin Access Denied, для аутентификации требуются параметры Signature, Expires и AWSAccessKeyId - PullRequest
0 голосов
/ 22 февраля 2019

Итак, я следовал руководству по Amazon, чтобы получить Origin Access Identity для обслуживания частного контента с помощью s3 bucket и CloudFront.Вот что я сделал:

- создал пару ключей фронта облака.

- создал идентификатор доступа к источнику

- создал фронт облака, дал ему доступ и сделал его измененнымправила s3 соответственно.

Но код Java, похоже, не работает.Я получаю следующую ошибку при использовании созданного URL:

Для проверки подлинности строки запроса требуются параметры Signature, Expires и AWSAccessKeyId

Вот мой код:

String policyResourcePath = "http://" + CloudFrontUrl + "/" + filename;     
    AmazonS3URI URI= new AmazonS3URI(policyResourcePath);
    String urIString = URI.toString();
    DateTime dt = new DateTime();
    Date added =dt.plusMinutes(5).toDate();     
    ClassPathResource res = new ClassPathResource(privateKeyFilePath); 
    Path path = Paths.get(res.getURI());
    byte[] privKeyByteArray = Files.readAllBytes(path);
    PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(privKeyByteArray);
    KeyFactory keyFactory = KeyFactory.getInstance("RSA");
    PrivateKey myPrivKey = keyFactory.generatePrivate(keySpec);
    String policy = CloudFrontUrlSigner.buildCustomPolicyForSignedUrl(urIString , added, IPAddress,null);

    String singedUrl = CloudFrontUrlSigner.getSignedURLWithCustomPolicy(urIString , *My Cloud front key pair access key id*, myPrivKey, policy);

    System.out.println(singedUrl);

Чего мне не хватает?

...