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!

gefragt vor einem Jahr389 Aufrufe
1 Antwort
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
beantwortet vor einem Jahr

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen