Java amazonS3.generatePresignedUrl - Как настроить https://s3.amazonaws.com/mycompany вместо https://mycompany.s3.amazonaws.com/com.mycompany
Мы используем предопределенные URL-адреса s3 для предоставления веб-доступа к изображениям, хранящимся в s3.
Java-код, который мы используем для генерации предварительно назначенных URL-адресов, похож на ниже
String accessKey = ...;
String secretKey = ...;
String region = ...;
com.amazonaws.HttpMethod awsHttpMethod = ...;
String bucketName = ...;
String objectKey = ...;
Date expirationDate = ...;
BasicAWSCredentials creds = new BasicAWSCredentials(accessKey, secretKey);
AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(creds)).withRegion(region).build();
GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, objectKey);
generatePresignedUrlRequest.setMethod(awsHttpMethod);
generatePresignedUrlRequest.setExpiration(expirationDate);
URL url = s3Client.generatePresignedUrl(generatePresignedUrlRequest);
URL-адрес, сгенерированный кодом, похож на
Однако, поскольку наш стандарт именования сегментов содержит точки, обращение к указанному выше URL приводит к SSL: no alternative certificate subject name matches target host name 'com.mycompany.personalpictures.s3.amazonaws.com'
ошибка
В этом посте я прочитал, что основной причиной являются точки в имени сегмента и что использование https://s3.amazonaws.com/com.mycompany.personalpictures/picture123.png должно обойти эту проблему.
Как я могу создать предварительно назначенные URL-адреса, используя формат URL-адреса https://s3.amazonaws.com/mybucket/myfile?
1 ответ
Догадаться...
Необходимо использовать.enablePathStyleAccess() при создании клиента s3. С этим строка кода сейчас
AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(creds)).withRegion(region).enablePathStyleAccess().build();