SdkClientException: Unable to execute HTTP request: Host name '<bucket>.s3.amazonaws.com' does not match the certificate subject provided by the peer (CN=*.s3.amazonaws.com)

0

Trying to convert from Java 8 to Java 11 using AWS sdk 2.x. Getting error noted above when trying to post images to an existing bucket via S3Client. Pom has entries for bom, s3, dynamodb, url-connection-client, & aws-lambda-java-core. Code is as below which errors out on line beginning with "PutObjectResponse response =".

	String awsbucketDomainUrlString = "https://ace-photos-dev.s3.amazonaws.com";
	//SdkHttpClient urlHttpClient = UrlConnectionHttpClient.create();
	AwsCredentialsProvider credentialsProvider = StaticCredentialsProvider.create(AwsBasicCredentials.create(accessKey, secretKey));
	S3Client client = S3Client.builder()
		         //.httpClient(urlHttpClient)
			.credentialsProvider(credentialsProvider)
			.region(Region.AP_EAST_1)
                            .endpointOverride(URI.create(awsbucketDomainUrlString))
                            .build();
	String hash = null;
	try{
		PutObjectRequest request = PutObjectRequest.builder().bucket(awsImageBucket).key(name).build();
		PutObjectResponse response = client.putObject(request, RequestBody.fromInputStream(inputStream, inputStream.available()));						
		hash = response.toString();
	}catch (Exception e) {
			throw new RuntimeException("SaveImageSevice saveImage; exception was thrown msg= " + e.getMessage(), e);
	}

Thanks for any help you can provide!

asked 10 months ago366 views
1 Answer
0

https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javav2/example_code/s3/src/main/java/com/example/s3/PutObject.java#L61 shows how to upload the objects in to S3 bucket. Its very well structured.

For quick test, try

import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Random;
import software.amazon.awssdk.core.waiters.WaiterResponse;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.paginators.ListObjectsV2Iterable;
import software.amazon.awssdk.core.sync.RequestBody;
import software.amazon.awssdk.services.s3.model.S3Exception;
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
import software.amazon.awssdk.services.s3.model.ListObjectsV2Request;
import software.amazon.awssdk.services.s3.model.ListObjectsV2Response;
import software.amazon.awssdk.services.s3.model.S3Object;
import software.amazon.awssdk.services.s3.model.GetObjectRequest;
import software.amazon.awssdk.services.s3.model.CreateMultipartUploadRequest;
import software.amazon.awssdk.services.s3.model.CreateMultipartUploadResponse;
import software.amazon.awssdk.services.s3.model.CompletedMultipartUpload;
import software.amazon.awssdk.services.s3.model.CreateBucketRequest;
import software.amazon.awssdk.services.s3.model.CompletedPart;
import software.amazon.awssdk.services.s3.model.CreateBucketConfiguration;
import software.amazon.awssdk.services.s3.model.UploadPartRequest;
import software.amazon.awssdk.services.s3.model.CompleteMultipartUploadRequest;
import software.amazon.awssdk.services.s3.waiters.S3Waiter;
import software.amazon.awssdk.services.s3.model.HeadBucketRequest;
import software.amazon.awssdk.services.s3.model.HeadBucketResponse;


String bucketName = "ace-photos-dev";
Region region = Region.AP_EAST_1;
s3 = S3Client.builder()
            .region(region)
            .build();

createBucket(s3, bucketName, region);

PutObjectRequest objectRequest = PutObjectRequest.builder()
            .bucket(bucketName)
            .key(key)
            .build();

s3.putObject(objectRequest, RequestBody.fromByteBuffer(getRandomByteBuffer(10_000)));
AWS
snathan
answered 10 months ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions