Class DefaultS3CrtAsyncClient.DefaultS3CrtClientBuilder
- java.lang.Object
-
- software.amazon.awssdk.services.s3.internal.crt.DefaultS3CrtAsyncClient.DefaultS3CrtClientBuilder
-
- All Implemented Interfaces:
S3CrtAsyncClientBuilder
,Buildable
,SdkBuilder<S3CrtAsyncClientBuilder,S3AsyncClient>
- Enclosing class:
- DefaultS3CrtAsyncClient
public static final class DefaultS3CrtAsyncClient.DefaultS3CrtClientBuilder extends Object implements S3CrtAsyncClientBuilder
-
-
Constructor Summary
Constructors Constructor Description DefaultS3CrtClientBuilder()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description S3CrtAsyncClientBuilder
accelerate(Boolean accelerate)
Enables this client to use S3 Transfer Acceleration endpoints.S3CrtAsyncClient
build()
S3CrtAsyncClientBuilder
checksumValidationEnabled(Boolean checksumValidationEnabled)
Option to disable checksum validation forS3AsyncClient.getObject(GetObjectRequest, Path)
andS3AsyncClient.putObject(PutObjectRequest, Path)
.S3CrtAsyncClientBuilder
credentialsProvider(IdentityProvider<? extends AwsCredentialsIdentity> credentialsProvider)
Configure the credentials that should be used to authenticate with S3.S3CrtAsyncClientBuilder
crossRegionAccessEnabled(Boolean crossRegionAccessEnabled)
Configures whether cross-region bucket access is enabled for clients using the configuration.S3CrtAsyncClientBuilder
endpointOverride(URI endpointOverride)
Configure the endpoint override with which the SDK should communicate.S3CrtAsyncClientBuilder
forcePathStyle(Boolean forcePathStyle)
Forces this client to use path-style addressing for buckets.S3CrtAsyncClientBuilder
httpConfiguration(S3CrtHttpConfiguration configuration)
Sets the HTTP configuration to use for this client.S3CrtAsyncClientBuilder
initialReadBufferSizeInBytes(Long readBufferSizeInBytes)
Configure the starting buffer size the client will use to buffer the parts downloaded from S3.S3CrtAsyncClientBuilder
maxConcurrency(Integer maxConcurrency)
Specifies the maximum number of S3 connections that should be established during a transfer.S3CrtAsyncClientBuilder
minimumPartSizeInBytes(Long partSizeBytes)
Sets the minimum part size for transfer parts.S3CrtAsyncClientBuilder
region(Region region)
Configure the region with which the SDK should communicate.S3CrtAsyncClientBuilder
retryConfiguration(S3CrtRetryConfiguration retryConfiguration)
Sets the Retry configuration to use for this client.S3CrtAsyncClientBuilder
targetThroughputInGbps(Double targetThroughputInGbps)
The target throughput for transfer requests.S3CrtAsyncClientBuilder
thresholdInBytes(Long thresholdInBytes)
Configure the size threshold, in bytes, for when to use multipart upload.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface software.amazon.awssdk.services.s3.S3CrtAsyncClientBuilder
credentialsProvider, httpConfiguration, retryConfiguration
-
Methods inherited from interface software.amazon.awssdk.utils.builder.SdkBuilder
applyMutation
-
-
-
-
Method Detail
-
credentialsProvider
public S3CrtAsyncClientBuilder credentialsProvider(IdentityProvider<? extends AwsCredentialsIdentity> credentialsProvider)
Description copied from interface:S3CrtAsyncClientBuilder
Configure the credentials that should be used to authenticate with S3.The default provider will attempt to identify the credentials automatically using the following checks:
- Java System Properties -
aws.accessKeyId
andaws.secretKey
- Environment Variables -
AWS_ACCESS_KEY_ID
andAWS_SECRET_ACCESS_KEY
- Credential profiles file at the default location (~/.aws/credentials) shared by all AWS SDKs and the AWS CLI
- Credentials delivered through the Amazon EC2 container service if AWS_CONTAINER_CREDENTIALS_RELATIVE_URI environment variable is set and security manager has permission to access the variable.
- Instance profile credentials delivered through the Amazon EC2 metadata service
If the credentials are not found in any of the locations above, an exception will be thrown at
S3CrtAsyncClientBuilder.build()
time.- Specified by:
credentialsProvider
in interfaceS3CrtAsyncClientBuilder
- Parameters:
credentialsProvider
- the credentials to use- Returns:
- This builder for method chaining.
- Java System Properties -
-
region
public S3CrtAsyncClientBuilder region(Region region)
Description copied from interface:S3CrtAsyncClientBuilder
Configure the region with which the SDK should communicate.If this is not specified, the SDK will attempt to identify the endpoint automatically using the following logic:
- Check the 'aws.region' system property for the region.
- Check the 'AWS_REGION' environment variable for the region.
- Check the {user.home}/.aws/credentials and {user.home}/.aws/config files for the region.
- If running in EC2, check the EC2 metadata service for the region.
- Specified by:
region
in interfaceS3CrtAsyncClientBuilder
- Parameters:
region
- the region to be used- Returns:
- this builder for method chaining.
-
minimumPartSizeInBytes
public S3CrtAsyncClientBuilder minimumPartSizeInBytes(Long partSizeBytes)
Description copied from interface:S3CrtAsyncClientBuilder
Sets the minimum part size for transfer parts. Decreasing the minimum part size causes multipart transfer to be split into a larger number of smaller parts. Setting this value too low has a negative effect on transfer speeds, causing extra latency and network communication for each part.By default, it is 8MB. See Amazon S3 multipart upload limits for guidance.
- Specified by:
minimumPartSizeInBytes
in interfaceS3CrtAsyncClientBuilder
- Parameters:
partSizeBytes
- The minimum part size for transfer parts.- Returns:
- this builder for method chaining.
-
targetThroughputInGbps
public S3CrtAsyncClientBuilder targetThroughputInGbps(Double targetThroughputInGbps)
Description copied from interface:S3CrtAsyncClientBuilder
The target throughput for transfer requests. Higher value means more connections will be established with S3.Whether the transfer manager can achieve the configured target throughput depends on various factors such as the network bandwidth of the environment and whether
S3CrtAsyncClientBuilder.maxConcurrency(java.lang.Integer)
is configured.By default, it is 10 gigabits per second. If users want to transfer as fast as possible, it's recommended to set it to the maximum network bandwidth on the host that the application is running on. For EC2 instances, you can find network bandwidth for a specific instance type in Amazon EC2 instance type page. If you are running into out of file descriptors error, consider using
S3CrtAsyncClientBuilder.maxConcurrency(Integer)
to limit the number of connections.- Specified by:
targetThroughputInGbps
in interfaceS3CrtAsyncClientBuilder
- Parameters:
targetThroughputInGbps
- the target throughput in Gbps- Returns:
- this builder for method chaining.
- See Also:
S3CrtAsyncClientBuilder.maxConcurrency(Integer)
-
maxConcurrency
public S3CrtAsyncClientBuilder maxConcurrency(Integer maxConcurrency)
Description copied from interface:S3CrtAsyncClientBuilder
Specifies the maximum number of S3 connections that should be established during a transfer.If not provided, the TransferManager will calculate the optional number of connections based on
S3CrtAsyncClientBuilder.targetThroughputInGbps(java.lang.Double)
. If the value is too low, the S3TransferManager might not achieve the specified target throughput.- Specified by:
maxConcurrency
in interfaceS3CrtAsyncClientBuilder
- Parameters:
maxConcurrency
- the max number of concurrent requests- Returns:
- this builder for method chaining.
- See Also:
S3CrtAsyncClientBuilder.targetThroughputInGbps(Double)
-
endpointOverride
public S3CrtAsyncClientBuilder endpointOverride(URI endpointOverride)
Description copied from interface:S3CrtAsyncClientBuilder
Configure the endpoint override with which the SDK should communicate.- Specified by:
endpointOverride
in interfaceS3CrtAsyncClientBuilder
- Parameters:
endpointOverride
- the endpoint override to be used- Returns:
- this builder for method chaining.
-
checksumValidationEnabled
public S3CrtAsyncClientBuilder checksumValidationEnabled(Boolean checksumValidationEnabled)
Description copied from interface:S3CrtAsyncClientBuilder
Option to disable checksum validation forS3AsyncClient.getObject(GetObjectRequest, Path)
andS3AsyncClient.putObject(PutObjectRequest, Path)
.Checksum validation using CRC32 is enabled by default.
- Specified by:
checksumValidationEnabled
in interfaceS3CrtAsyncClientBuilder
-
initialReadBufferSizeInBytes
public S3CrtAsyncClientBuilder initialReadBufferSizeInBytes(Long readBufferSizeInBytes)
Description copied from interface:S3CrtAsyncClientBuilder
Configure the starting buffer size the client will use to buffer the parts downloaded from S3. Maintain a larger window to keep up a high download throughput; parts cannot download in parallel unless the window is large enough to hold multiple parts. Maintain a smaller window to limit the amount of data buffered in memory.By default, it is equal to the resolved part size * 10
- Specified by:
initialReadBufferSizeInBytes
in interfaceS3CrtAsyncClientBuilder
- Parameters:
readBufferSizeInBytes
- the initial read buffer size- Returns:
- this builder for method chaining.
-
httpConfiguration
public S3CrtAsyncClientBuilder httpConfiguration(S3CrtHttpConfiguration configuration)
Description copied from interface:S3CrtAsyncClientBuilder
Sets the HTTP configuration to use for this client.- Specified by:
httpConfiguration
in interfaceS3CrtAsyncClientBuilder
- Parameters:
configuration
- The http proxy configuration to use- Returns:
- The builder of the method chaining.
-
accelerate
public S3CrtAsyncClientBuilder accelerate(Boolean accelerate)
Description copied from interface:S3CrtAsyncClientBuilder
Enables this client to use S3 Transfer Acceleration endpoints.- Specified by:
accelerate
in interfaceS3CrtAsyncClientBuilder
-
forcePathStyle
public S3CrtAsyncClientBuilder forcePathStyle(Boolean forcePathStyle)
Description copied from interface:S3CrtAsyncClientBuilder
Forces this client to use path-style addressing for buckets.- Specified by:
forcePathStyle
in interfaceS3CrtAsyncClientBuilder
-
retryConfiguration
public S3CrtAsyncClientBuilder retryConfiguration(S3CrtRetryConfiguration retryConfiguration)
Description copied from interface:S3CrtAsyncClientBuilder
Sets the Retry configuration to use for this client.- Specified by:
retryConfiguration
in interfaceS3CrtAsyncClientBuilder
- Parameters:
retryConfiguration
- The retry configurations to be used.- Returns:
- The builder of the method chaining.
-
crossRegionAccessEnabled
public S3CrtAsyncClientBuilder crossRegionAccessEnabled(Boolean crossRegionAccessEnabled)
Description copied from interface:S3CrtAsyncClientBuilder
Configures whether cross-region bucket access is enabled for clients using the configuration.
The following behavior is used when this mode is enabled:
- This method allows enabling or disabling cross-region bucket access for clients. When cross-region bucket access is enabled, requests that do not act on an existing bucket (e.g., createBucket API) will be routed to the region configured on the client
- The first time a request is made that references an existing bucket (e.g., putObject API), a request will be made to the client-configured region. If the bucket does not exist in this region, the service will include the actual region in the error responses. Subsequently, the API will be called using the correct region obtained from the error response.
- This location may be cached in the client for subsequent requests to the same bucket.
Enabling this mode has several drawbacks, as it can increase latency if the bucket's location is physically far from the location of the request.Therefore, it is strongly advised, whenever possible, to know the location of your buckets and create a region-specific client to access them
- Specified by:
crossRegionAccessEnabled
in interfaceS3CrtAsyncClientBuilder
- Parameters:
crossRegionAccessEnabled
- Whether cross region bucket access should be enabled.- Returns:
- The builder object for method chaining.
-
thresholdInBytes
public S3CrtAsyncClientBuilder thresholdInBytes(Long thresholdInBytes)
Description copied from interface:S3CrtAsyncClientBuilder
Configure the size threshold, in bytes, for when to use multipart upload. Uploads/copies over this size will automatically use a multipart upload strategy, while uploads/copies smaller than this threshold will use a single connection to upload/copy the whole object.Multipart uploads are easier to recover from and also potentially faster than single part uploads, especially when the upload parts can be uploaded in parallel. Because there are additional network API calls, small objects are still recommended to use a single connection for the upload. See Uploading and copying objects using multipart upload.
By default, it is the same as
S3CrtAsyncClientBuilder.minimumPartSizeInBytes(Long)
.- Specified by:
thresholdInBytes
in interfaceS3CrtAsyncClientBuilder
- Parameters:
thresholdInBytes
- the value of the threshold to set.- Returns:
- an instance of this builder.
-
build
public S3CrtAsyncClient build()
- Specified by:
build
in interfaceBuildable
- Specified by:
build
in interfaceS3CrtAsyncClientBuilder
- Specified by:
build
in interfaceSdkBuilder<S3CrtAsyncClientBuilder,S3AsyncClient>
-
-