Итак, я следовал руководству по 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);
Чего мне не хватает?