rspec/rules/S6241/java/rule.adoc

67 lines
2.1 KiB
Plaintext
Raw Normal View History

== Why is this an issue?
2021-05-04 01:15:14 +00:00
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.
2021-05-04 01:15:14 +00:00
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.
2021-05-04 01:15:14 +00:00
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
2021-05-04 01:15:14 +00:00
2022-02-04 17:28:24 +01:00
[source,java]
2021-05-04 01:15:14 +00:00
----
S3Client.builder()
.credentialsProvider(EnvironmentVariableCredentialsProvider.create())
.build();
----
=== Compliant solution
2021-05-04 01:15:14 +00:00
2022-02-04 17:28:24 +01:00
[source,java]
2021-05-04 01:15:14 +00:00
----
S3Client.builder()
.region(Region.of(System.getenv(SdkSystemSetting.AWS_REGION.environmentVariable()))
.credentialsProvider(EnvironmentVariableCredentialsProvider.create())
.build();
----
== Resources
2021-05-04 01:15:14 +00:00
* 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]
2021-05-05 08:56:28 +00:00
* https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-region-selection.html#automatically-determine-the-aws-region-from-the-environment[Automatically Determine the AWS Region]
2021-05-04 01:15:14 +00:00
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
=== Message
Set the region explicitly on this builder.
=== Highlighting
AwsClient builder.
'''
== Comments And Links
(visible only on this page)
=== is related to: S6242
endif::env-github,rspecator-view[]