38 lines
1.5 KiB
Plaintext
38 lines
1.5 KiB
Plaintext
![]() |
If the region is not specified when creating a new AwsClient with an https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/awscore/client/builder/AwsClientBuilder.html[AwsClientBuilder], the AWS SDK will execute some logic to identify the endpoint automatically.
|
||
|
|
||
|
While it will probably identify the correct one, this extra logic will slow down startup time, already known to be a hotspot.
|
||
|
|
||
|
You should therefore always define the logic to set the region yourself. This is typically done by retrieving the region from the Lambda provided AWS_REGION environment variable.
|
||
|
|
||
|
This will make the code more explicit and spare initialization time.
|
||
|
|
||
|
|
||
|
This rule reports an issue when the region is not set when creating an AwsClient.
|
||
|
|
||
|
|
||
|
== Noncompliant Code Example
|
||
|
|
||
|
----
|
||
|
S3Client.builder()
|
||
|
.credentialsProvider(EnvironmentVariableCredentialsProvider.create())
|
||
|
.build();
|
||
|
----
|
||
|
|
||
|
|
||
|
== Compliant Solution
|
||
|
|
||
|
----
|
||
|
S3Client.builder()
|
||
|
.region(Region.of(System.getenv(SdkSystemSetting.AWS_REGION.environmentVariable()))
|
||
|
.credentialsProvider(EnvironmentVariableCredentialsProvider.create())
|
||
|
.build();
|
||
|
----
|
||
|
|
||
|
|
||
|
== See
|
||
|
|
||
|
* https://aws.amazon.com/fr/blogs/developer/tuning-the-aws-java-sdk-2-x-to-reduce-startup-time/[Tuning the AWS Java SDK 2.x to reduce startup time]
|
||
|
* https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/lambda-optimize-starttime.html[Optimizing cold start performance for AWS Lambda]
|
||
|
* https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html[Environment variable configuration]
|
||
|
|