title: How to resolve AmazonS3Exception: Forbidden (Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden; Request ID: null) using java
body: <p>Stack trace</p>
  
  <pre><code>Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: Forbidden (Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden; Request ID: null), S3 Extended Request ID: null
      at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1182)
      at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:770)
      at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:489)
      at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:310)
      at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3604)
      at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3557)
      at com.amazonaws.services.s3.AmazonS3Client.getS3AccountOwner(AmazonS3Client.java:689)
      at com.amazonaws.services.s3.AmazonS3Client.getS3AccountOwner(AmazonS3Client.java:681)
      at testKMSkeyUploadObject.main(testKMSkeyUploadObject.java:101)
  </code></pre>
  
  <p>I am getting this exception when I am storing object in AmazonS3EncryptionClient object. Here is my code</p>
  
  <pre><code>ObjectMetadata objectMetadata = new ObjectMetadata();
  objectMetadata.setContentLength(plaintext.length);
                  objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION); 
  
      AmazonS3EncryptionClient s3 = new AmazonS3EncryptionClient(credentials,materialProvider).withRegion(Region.getRegion(Regions.US_EAST_1));;
  
      PutObjectRequest putRequest = new PutObjectRequest(
                          bucket, keyId, new ByteArrayInputStream(plaintext), objectMetadata);
      putRequest.setRequestCredentials(credentials);
  
      s3.setEndpoint("https://kms.us-east-1.amazonaws.com");
  </code></pre>