AWS Java SDK - Unable to find a region via the region provider chain AWS Java SDK - Unable to find a region via the region provider chain java java

AWS Java SDK - Unable to find a region via the region provider chain


Regarding Q1, try to build your client using the following syntax:

AmazonS3 amazonS3 = AmazonS3Client.builder()    .withRegion("us-east-1")    .withCredentials(new AWSStaticCredentialsProvider(creds))    .build();


As mentioned in the answer above you need to have S3 and lambda in same region and here's why-

If you don't explicitly set a region using the withRegion methods, the SDK consults the default region provider chain to try and determine the region to use. One of the methods used is -

The AWS_REGION environment variable is checked. If it's set, that region is used to configure the client.

And in the case of Lambda -

This environment variable is set by the Lambda container.

Finally, to use default credential/region provider chain to determine the region from the environment, use the client builder's defaultClient method.

AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();

This is the same as using standard followed by build.

AmazonS3 s3Client = AmazonS3ClientBuilder.standard().build();

AWS Documentation: https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-region-selection.html

More details: How to fix "Unable to find a region via the region provider chain" exception with AWS SDK

PS: Above link goes to my personal blog that has additional details on this.


Actually, while I faced this issue was not possible to update the code all the time.

Thus we need to look into the reasons why it's happening, While investigating I found there is .aws folder created at your root. It was created because I tried to install aws console some time back.

The solution is you need to update your config file with region.