
software.amazon.awssdk.services.s3.endpoints.internal.S3ResolveEndpointInterceptor Maven / Gradle / Ivy
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
* the License. A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
package software.amazon.awssdk.services.s3.endpoints.internal;
import java.time.Duration;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.CompletionException;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.annotations.SdkInternalApi;
import software.amazon.awssdk.awscore.AwsExecutionAttribute;
import software.amazon.awssdk.awscore.endpoints.AwsEndpointAttribute;
import software.amazon.awssdk.awscore.endpoints.authscheme.EndpointAuthScheme;
import software.amazon.awssdk.awscore.endpoints.authscheme.SigV4AuthScheme;
import software.amazon.awssdk.awscore.endpoints.authscheme.SigV4aAuthScheme;
import software.amazon.awssdk.core.SdkRequest;
import software.amazon.awssdk.core.SelectedAuthScheme;
import software.amazon.awssdk.core.exception.SdkClientException;
import software.amazon.awssdk.core.interceptor.Context;
import software.amazon.awssdk.core.interceptor.ExecutionAttributes;
import software.amazon.awssdk.core.interceptor.ExecutionInterceptor;
import software.amazon.awssdk.core.interceptor.SdkExecutionAttribute;
import software.amazon.awssdk.core.interceptor.SdkInternalExecutionAttribute;
import software.amazon.awssdk.core.metrics.CoreMetric;
import software.amazon.awssdk.endpoints.Endpoint;
import software.amazon.awssdk.http.SdkHttpRequest;
import software.amazon.awssdk.http.auth.aws.signer.AwsV4HttpSigner;
import software.amazon.awssdk.http.auth.aws.signer.AwsV4aHttpSigner;
import software.amazon.awssdk.http.auth.aws.signer.RegionSet;
import software.amazon.awssdk.http.auth.spi.scheme.AuthSchemeOption;
import software.amazon.awssdk.identity.spi.Identity;
import software.amazon.awssdk.metrics.MetricCollector;
import software.amazon.awssdk.services.s3.endpoints.S3ClientContextParams;
import software.amazon.awssdk.services.s3.endpoints.S3EndpointParams;
import software.amazon.awssdk.services.s3.endpoints.S3EndpointProvider;
import software.amazon.awssdk.services.s3.endpoints.authscheme.S3ExpressEndpointAuthScheme;
import software.amazon.awssdk.services.s3.jmespath.internal.JmesPathRuntime;
import software.amazon.awssdk.services.s3.model.AbortMultipartUploadRequest;
import software.amazon.awssdk.services.s3.model.CompleteMultipartUploadRequest;
import software.amazon.awssdk.services.s3.model.CopyObjectRequest;
import software.amazon.awssdk.services.s3.model.CreateBucketRequest;
import software.amazon.awssdk.services.s3.model.CreateMultipartUploadRequest;
import software.amazon.awssdk.services.s3.model.CreateSessionRequest;
import software.amazon.awssdk.services.s3.model.DeleteBucketAnalyticsConfigurationRequest;
import software.amazon.awssdk.services.s3.model.DeleteBucketCorsRequest;
import software.amazon.awssdk.services.s3.model.DeleteBucketEncryptionRequest;
import software.amazon.awssdk.services.s3.model.DeleteBucketIntelligentTieringConfigurationRequest;
import software.amazon.awssdk.services.s3.model.DeleteBucketInventoryConfigurationRequest;
import software.amazon.awssdk.services.s3.model.DeleteBucketLifecycleRequest;
import software.amazon.awssdk.services.s3.model.DeleteBucketMetricsConfigurationRequest;
import software.amazon.awssdk.services.s3.model.DeleteBucketOwnershipControlsRequest;
import software.amazon.awssdk.services.s3.model.DeleteBucketPolicyRequest;
import software.amazon.awssdk.services.s3.model.DeleteBucketReplicationRequest;
import software.amazon.awssdk.services.s3.model.DeleteBucketRequest;
import software.amazon.awssdk.services.s3.model.DeleteBucketTaggingRequest;
import software.amazon.awssdk.services.s3.model.DeleteBucketWebsiteRequest;
import software.amazon.awssdk.services.s3.model.DeleteObjectRequest;
import software.amazon.awssdk.services.s3.model.DeleteObjectTaggingRequest;
import software.amazon.awssdk.services.s3.model.DeleteObjectsRequest;
import software.amazon.awssdk.services.s3.model.DeletePublicAccessBlockRequest;
import software.amazon.awssdk.services.s3.model.GetBucketAccelerateConfigurationRequest;
import software.amazon.awssdk.services.s3.model.GetBucketAclRequest;
import software.amazon.awssdk.services.s3.model.GetBucketAnalyticsConfigurationRequest;
import software.amazon.awssdk.services.s3.model.GetBucketCorsRequest;
import software.amazon.awssdk.services.s3.model.GetBucketEncryptionRequest;
import software.amazon.awssdk.services.s3.model.GetBucketIntelligentTieringConfigurationRequest;
import software.amazon.awssdk.services.s3.model.GetBucketInventoryConfigurationRequest;
import software.amazon.awssdk.services.s3.model.GetBucketLifecycleConfigurationRequest;
import software.amazon.awssdk.services.s3.model.GetBucketLocationRequest;
import software.amazon.awssdk.services.s3.model.GetBucketLoggingRequest;
import software.amazon.awssdk.services.s3.model.GetBucketMetricsConfigurationRequest;
import software.amazon.awssdk.services.s3.model.GetBucketNotificationConfigurationRequest;
import software.amazon.awssdk.services.s3.model.GetBucketOwnershipControlsRequest;
import software.amazon.awssdk.services.s3.model.GetBucketPolicyRequest;
import software.amazon.awssdk.services.s3.model.GetBucketPolicyStatusRequest;
import software.amazon.awssdk.services.s3.model.GetBucketReplicationRequest;
import software.amazon.awssdk.services.s3.model.GetBucketRequestPaymentRequest;
import software.amazon.awssdk.services.s3.model.GetBucketTaggingRequest;
import software.amazon.awssdk.services.s3.model.GetBucketVersioningRequest;
import software.amazon.awssdk.services.s3.model.GetBucketWebsiteRequest;
import software.amazon.awssdk.services.s3.model.GetObjectAclRequest;
import software.amazon.awssdk.services.s3.model.GetObjectAttributesRequest;
import software.amazon.awssdk.services.s3.model.GetObjectLegalHoldRequest;
import software.amazon.awssdk.services.s3.model.GetObjectLockConfigurationRequest;
import software.amazon.awssdk.services.s3.model.GetObjectRequest;
import software.amazon.awssdk.services.s3.model.GetObjectRetentionRequest;
import software.amazon.awssdk.services.s3.model.GetObjectTaggingRequest;
import software.amazon.awssdk.services.s3.model.GetObjectTorrentRequest;
import software.amazon.awssdk.services.s3.model.GetPublicAccessBlockRequest;
import software.amazon.awssdk.services.s3.model.HeadBucketRequest;
import software.amazon.awssdk.services.s3.model.HeadObjectRequest;
import software.amazon.awssdk.services.s3.model.ListBucketAnalyticsConfigurationsRequest;
import software.amazon.awssdk.services.s3.model.ListBucketIntelligentTieringConfigurationsRequest;
import software.amazon.awssdk.services.s3.model.ListBucketInventoryConfigurationsRequest;
import software.amazon.awssdk.services.s3.model.ListBucketMetricsConfigurationsRequest;
import software.amazon.awssdk.services.s3.model.ListMultipartUploadsRequest;
import software.amazon.awssdk.services.s3.model.ListObjectVersionsRequest;
import software.amazon.awssdk.services.s3.model.ListObjectsRequest;
import software.amazon.awssdk.services.s3.model.ListObjectsV2Request;
import software.amazon.awssdk.services.s3.model.ListPartsRequest;
import software.amazon.awssdk.services.s3.model.PutBucketAccelerateConfigurationRequest;
import software.amazon.awssdk.services.s3.model.PutBucketAclRequest;
import software.amazon.awssdk.services.s3.model.PutBucketAnalyticsConfigurationRequest;
import software.amazon.awssdk.services.s3.model.PutBucketCorsRequest;
import software.amazon.awssdk.services.s3.model.PutBucketEncryptionRequest;
import software.amazon.awssdk.services.s3.model.PutBucketIntelligentTieringConfigurationRequest;
import software.amazon.awssdk.services.s3.model.PutBucketInventoryConfigurationRequest;
import software.amazon.awssdk.services.s3.model.PutBucketLifecycleConfigurationRequest;
import software.amazon.awssdk.services.s3.model.PutBucketLoggingRequest;
import software.amazon.awssdk.services.s3.model.PutBucketMetricsConfigurationRequest;
import software.amazon.awssdk.services.s3.model.PutBucketNotificationConfigurationRequest;
import software.amazon.awssdk.services.s3.model.PutBucketOwnershipControlsRequest;
import software.amazon.awssdk.services.s3.model.PutBucketPolicyRequest;
import software.amazon.awssdk.services.s3.model.PutBucketReplicationRequest;
import software.amazon.awssdk.services.s3.model.PutBucketRequestPaymentRequest;
import software.amazon.awssdk.services.s3.model.PutBucketTaggingRequest;
import software.amazon.awssdk.services.s3.model.PutBucketVersioningRequest;
import software.amazon.awssdk.services.s3.model.PutBucketWebsiteRequest;
import software.amazon.awssdk.services.s3.model.PutObjectAclRequest;
import software.amazon.awssdk.services.s3.model.PutObjectLegalHoldRequest;
import software.amazon.awssdk.services.s3.model.PutObjectLockConfigurationRequest;
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
import software.amazon.awssdk.services.s3.model.PutObjectRetentionRequest;
import software.amazon.awssdk.services.s3.model.PutObjectTaggingRequest;
import software.amazon.awssdk.services.s3.model.PutPublicAccessBlockRequest;
import software.amazon.awssdk.services.s3.model.RestoreObjectRequest;
import software.amazon.awssdk.services.s3.model.SelectObjectContentRequest;
import software.amazon.awssdk.services.s3.model.UploadPartCopyRequest;
import software.amazon.awssdk.services.s3.model.UploadPartRequest;
import software.amazon.awssdk.utils.AttributeMap;
import software.amazon.awssdk.utils.HostnameValidator;
@Generated("software.amazon.awssdk:codegen")
@SdkInternalApi
public final class S3ResolveEndpointInterceptor implements ExecutionInterceptor {
@Override
public SdkRequest modifyRequest(Context.ModifyRequest context, ExecutionAttributes executionAttributes) {
SdkRequest result = context.request();
if (AwsEndpointProviderUtils.endpointIsDiscovered(executionAttributes)) {
return result;
}
S3EndpointProvider provider = (S3EndpointProvider) executionAttributes
.getAttribute(SdkInternalExecutionAttribute.ENDPOINT_PROVIDER);
try {
long resolveEndpointStart = System.nanoTime();
Endpoint endpoint = provider.resolveEndpoint(ruleParams(result, executionAttributes)).join();
Duration resolveEndpointDuration = Duration.ofNanos(System.nanoTime() - resolveEndpointStart);
Optional metricCollector = executionAttributes
.getOptionalAttribute(SdkExecutionAttribute.API_CALL_METRIC_COLLECTOR);
metricCollector.ifPresent(mc -> mc.reportMetric(CoreMetric.ENDPOINT_RESOLVE_DURATION, resolveEndpointDuration));
if (!AwsEndpointProviderUtils.disableHostPrefixInjection(executionAttributes)) {
Optional hostPrefix = hostPrefix(executionAttributes.getAttribute(SdkExecutionAttribute.OPERATION_NAME),
result);
if (hostPrefix.isPresent()) {
endpoint = AwsEndpointProviderUtils.addHostPrefix(endpoint, hostPrefix.get());
}
}
List endpointAuthSchemes = endpoint.attribute(AwsEndpointAttribute.AUTH_SCHEMES);
SelectedAuthScheme> selectedAuthScheme = executionAttributes
.getAttribute(SdkInternalExecutionAttribute.SELECTED_AUTH_SCHEME);
if (endpointAuthSchemes != null && selectedAuthScheme != null) {
selectedAuthScheme = authSchemeWithEndpointSignerProperties(endpointAuthSchemes, selectedAuthScheme);
executionAttributes.putAttribute(SdkInternalExecutionAttribute.SELECTED_AUTH_SCHEME, selectedAuthScheme);
}
executionAttributes.putAttribute(SdkInternalExecutionAttribute.RESOLVED_ENDPOINT, endpoint);
return result;
} catch (CompletionException e) {
Throwable cause = e.getCause();
if (cause instanceof SdkClientException) {
throw (SdkClientException) cause;
} else {
throw SdkClientException.create("Endpoint resolution failed", cause);
}
}
}
@Override
public SdkHttpRequest modifyHttpRequest(Context.ModifyHttpRequest context, ExecutionAttributes executionAttributes) {
Endpoint resolvedEndpoint = executionAttributes.getAttribute(SdkInternalExecutionAttribute.RESOLVED_ENDPOINT);
if (resolvedEndpoint.headers().isEmpty()) {
return context.httpRequest();
}
SdkHttpRequest.Builder httpRequestBuilder = context.httpRequest().toBuilder();
resolvedEndpoint.headers().forEach((name, values) -> {
values.forEach(v -> httpRequestBuilder.appendHeader(name, v));
});
return httpRequestBuilder.build();
}
public static S3EndpointParams ruleParams(SdkRequest request, ExecutionAttributes executionAttributes) {
S3EndpointParams.Builder builder = S3EndpointParams.builder();
builder.region(AwsEndpointProviderUtils.regionBuiltIn(executionAttributes));
builder.useFips(AwsEndpointProviderUtils.fipsEnabledBuiltIn(executionAttributes));
builder.useDualStack(AwsEndpointProviderUtils.dualStackEnabledBuiltIn(executionAttributes));
builder.endpoint(AwsEndpointProviderUtils.endpointBuiltIn(executionAttributes));
builder.useGlobalEndpoint(executionAttributes.getAttribute(AwsExecutionAttribute.USE_GLOBAL_ENDPOINT));
setClientContextParams(builder, executionAttributes);
setContextParams(builder, executionAttributes.getAttribute(AwsExecutionAttribute.OPERATION_NAME), request);
setStaticContextParams(builder, executionAttributes.getAttribute(AwsExecutionAttribute.OPERATION_NAME));
setOperationContextParams(builder, executionAttributes.getAttribute(AwsExecutionAttribute.OPERATION_NAME), request);
return builder.build();
}
private static void setContextParams(S3EndpointParams.Builder params, String operationName, SdkRequest request) {
switch (operationName) {
case "AbortMultipartUpload":
setContextParams(params, (AbortMultipartUploadRequest) request);
break;
case "CompleteMultipartUpload":
setContextParams(params, (CompleteMultipartUploadRequest) request);
break;
case "CopyObject":
setContextParams(params, (CopyObjectRequest) request);
break;
case "CreateBucket":
setContextParams(params, (CreateBucketRequest) request);
break;
case "CreateMultipartUpload":
setContextParams(params, (CreateMultipartUploadRequest) request);
break;
case "CreateSession":
setContextParams(params, (CreateSessionRequest) request);
break;
case "DeleteBucket":
setContextParams(params, (DeleteBucketRequest) request);
break;
case "DeleteBucketAnalyticsConfiguration":
setContextParams(params, (DeleteBucketAnalyticsConfigurationRequest) request);
break;
case "DeleteBucketCors":
setContextParams(params, (DeleteBucketCorsRequest) request);
break;
case "DeleteBucketEncryption":
setContextParams(params, (DeleteBucketEncryptionRequest) request);
break;
case "DeleteBucketIntelligentTieringConfiguration":
setContextParams(params, (DeleteBucketIntelligentTieringConfigurationRequest) request);
break;
case "DeleteBucketInventoryConfiguration":
setContextParams(params, (DeleteBucketInventoryConfigurationRequest) request);
break;
case "DeleteBucketLifecycle":
setContextParams(params, (DeleteBucketLifecycleRequest) request);
break;
case "DeleteBucketMetricsConfiguration":
setContextParams(params, (DeleteBucketMetricsConfigurationRequest) request);
break;
case "DeleteBucketOwnershipControls":
setContextParams(params, (DeleteBucketOwnershipControlsRequest) request);
break;
case "DeleteBucketPolicy":
setContextParams(params, (DeleteBucketPolicyRequest) request);
break;
case "DeleteBucketReplication":
setContextParams(params, (DeleteBucketReplicationRequest) request);
break;
case "DeleteBucketTagging":
setContextParams(params, (DeleteBucketTaggingRequest) request);
break;
case "DeleteBucketWebsite":
setContextParams(params, (DeleteBucketWebsiteRequest) request);
break;
case "DeleteObject":
setContextParams(params, (DeleteObjectRequest) request);
break;
case "DeleteObjectTagging":
setContextParams(params, (DeleteObjectTaggingRequest) request);
break;
case "DeleteObjects":
setContextParams(params, (DeleteObjectsRequest) request);
break;
case "DeletePublicAccessBlock":
setContextParams(params, (DeletePublicAccessBlockRequest) request);
break;
case "GetBucketAccelerateConfiguration":
setContextParams(params, (GetBucketAccelerateConfigurationRequest) request);
break;
case "GetBucketAcl":
setContextParams(params, (GetBucketAclRequest) request);
break;
case "GetBucketAnalyticsConfiguration":
setContextParams(params, (GetBucketAnalyticsConfigurationRequest) request);
break;
case "GetBucketCors":
setContextParams(params, (GetBucketCorsRequest) request);
break;
case "GetBucketEncryption":
setContextParams(params, (GetBucketEncryptionRequest) request);
break;
case "GetBucketIntelligentTieringConfiguration":
setContextParams(params, (GetBucketIntelligentTieringConfigurationRequest) request);
break;
case "GetBucketInventoryConfiguration":
setContextParams(params, (GetBucketInventoryConfigurationRequest) request);
break;
case "GetBucketLifecycleConfiguration":
setContextParams(params, (GetBucketLifecycleConfigurationRequest) request);
break;
case "GetBucketLocation":
setContextParams(params, (GetBucketLocationRequest) request);
break;
case "GetBucketLogging":
setContextParams(params, (GetBucketLoggingRequest) request);
break;
case "GetBucketMetricsConfiguration":
setContextParams(params, (GetBucketMetricsConfigurationRequest) request);
break;
case "GetBucketNotificationConfiguration":
setContextParams(params, (GetBucketNotificationConfigurationRequest) request);
break;
case "GetBucketOwnershipControls":
setContextParams(params, (GetBucketOwnershipControlsRequest) request);
break;
case "GetBucketPolicy":
setContextParams(params, (GetBucketPolicyRequest) request);
break;
case "GetBucketPolicyStatus":
setContextParams(params, (GetBucketPolicyStatusRequest) request);
break;
case "GetBucketReplication":
setContextParams(params, (GetBucketReplicationRequest) request);
break;
case "GetBucketRequestPayment":
setContextParams(params, (GetBucketRequestPaymentRequest) request);
break;
case "GetBucketTagging":
setContextParams(params, (GetBucketTaggingRequest) request);
break;
case "GetBucketVersioning":
setContextParams(params, (GetBucketVersioningRequest) request);
break;
case "GetBucketWebsite":
setContextParams(params, (GetBucketWebsiteRequest) request);
break;
case "GetObject":
setContextParams(params, (GetObjectRequest) request);
break;
case "GetObjectAcl":
setContextParams(params, (GetObjectAclRequest) request);
break;
case "GetObjectAttributes":
setContextParams(params, (GetObjectAttributesRequest) request);
break;
case "GetObjectLegalHold":
setContextParams(params, (GetObjectLegalHoldRequest) request);
break;
case "GetObjectLockConfiguration":
setContextParams(params, (GetObjectLockConfigurationRequest) request);
break;
case "GetObjectRetention":
setContextParams(params, (GetObjectRetentionRequest) request);
break;
case "GetObjectTagging":
setContextParams(params, (GetObjectTaggingRequest) request);
break;
case "GetObjectTorrent":
setContextParams(params, (GetObjectTorrentRequest) request);
break;
case "GetPublicAccessBlock":
setContextParams(params, (GetPublicAccessBlockRequest) request);
break;
case "HeadBucket":
setContextParams(params, (HeadBucketRequest) request);
break;
case "HeadObject":
setContextParams(params, (HeadObjectRequest) request);
break;
case "ListBucketAnalyticsConfigurations":
setContextParams(params, (ListBucketAnalyticsConfigurationsRequest) request);
break;
case "ListBucketIntelligentTieringConfigurations":
setContextParams(params, (ListBucketIntelligentTieringConfigurationsRequest) request);
break;
case "ListBucketInventoryConfigurations":
setContextParams(params, (ListBucketInventoryConfigurationsRequest) request);
break;
case "ListBucketMetricsConfigurations":
setContextParams(params, (ListBucketMetricsConfigurationsRequest) request);
break;
case "ListMultipartUploads":
setContextParams(params, (ListMultipartUploadsRequest) request);
break;
case "ListObjectVersions":
setContextParams(params, (ListObjectVersionsRequest) request);
break;
case "ListObjects":
setContextParams(params, (ListObjectsRequest) request);
break;
case "ListObjectsV2":
setContextParams(params, (ListObjectsV2Request) request);
break;
case "ListParts":
setContextParams(params, (ListPartsRequest) request);
break;
case "PutBucketAccelerateConfiguration":
setContextParams(params, (PutBucketAccelerateConfigurationRequest) request);
break;
case "PutBucketAcl":
setContextParams(params, (PutBucketAclRequest) request);
break;
case "PutBucketAnalyticsConfiguration":
setContextParams(params, (PutBucketAnalyticsConfigurationRequest) request);
break;
case "PutBucketCors":
setContextParams(params, (PutBucketCorsRequest) request);
break;
case "PutBucketEncryption":
setContextParams(params, (PutBucketEncryptionRequest) request);
break;
case "PutBucketIntelligentTieringConfiguration":
setContextParams(params, (PutBucketIntelligentTieringConfigurationRequest) request);
break;
case "PutBucketInventoryConfiguration":
setContextParams(params, (PutBucketInventoryConfigurationRequest) request);
break;
case "PutBucketLifecycleConfiguration":
setContextParams(params, (PutBucketLifecycleConfigurationRequest) request);
break;
case "PutBucketLogging":
setContextParams(params, (PutBucketLoggingRequest) request);
break;
case "PutBucketMetricsConfiguration":
setContextParams(params, (PutBucketMetricsConfigurationRequest) request);
break;
case "PutBucketNotificationConfiguration":
setContextParams(params, (PutBucketNotificationConfigurationRequest) request);
break;
case "PutBucketOwnershipControls":
setContextParams(params, (PutBucketOwnershipControlsRequest) request);
break;
case "PutBucketPolicy":
setContextParams(params, (PutBucketPolicyRequest) request);
break;
case "PutBucketReplication":
setContextParams(params, (PutBucketReplicationRequest) request);
break;
case "PutBucketRequestPayment":
setContextParams(params, (PutBucketRequestPaymentRequest) request);
break;
case "PutBucketTagging":
setContextParams(params, (PutBucketTaggingRequest) request);
break;
case "PutBucketVersioning":
setContextParams(params, (PutBucketVersioningRequest) request);
break;
case "PutBucketWebsite":
setContextParams(params, (PutBucketWebsiteRequest) request);
break;
case "PutObject":
setContextParams(params, (PutObjectRequest) request);
break;
case "PutObjectAcl":
setContextParams(params, (PutObjectAclRequest) request);
break;
case "PutObjectLegalHold":
setContextParams(params, (PutObjectLegalHoldRequest) request);
break;
case "PutObjectLockConfiguration":
setContextParams(params, (PutObjectLockConfigurationRequest) request);
break;
case "PutObjectRetention":
setContextParams(params, (PutObjectRetentionRequest) request);
break;
case "PutObjectTagging":
setContextParams(params, (PutObjectTaggingRequest) request);
break;
case "PutPublicAccessBlock":
setContextParams(params, (PutPublicAccessBlockRequest) request);
break;
case "RestoreObject":
setContextParams(params, (RestoreObjectRequest) request);
break;
case "SelectObjectContent":
setContextParams(params, (SelectObjectContentRequest) request);
break;
case "UploadPart":
setContextParams(params, (UploadPartRequest) request);
break;
case "UploadPartCopy":
setContextParams(params, (UploadPartCopyRequest) request);
break;
default:
break;
}
}
private static void setContextParams(S3EndpointParams.Builder params, AbortMultipartUploadRequest request) {
params.bucket(request.bucket());
params.key(request.key());
}
private static void setContextParams(S3EndpointParams.Builder params, CompleteMultipartUploadRequest request) {
params.bucket(request.bucket());
params.key(request.key());
}
private static void setContextParams(S3EndpointParams.Builder params, CopyObjectRequest request) {
params.copySource(request.copySource());
params.bucket(request.destinationBucket());
params.key(request.destinationKey());
}
private static void setContextParams(S3EndpointParams.Builder params, CreateBucketRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, CreateMultipartUploadRequest request) {
params.bucket(request.bucket());
params.key(request.key());
}
private static void setContextParams(S3EndpointParams.Builder params, CreateSessionRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, DeleteBucketRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, DeleteBucketAnalyticsConfigurationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, DeleteBucketCorsRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, DeleteBucketEncryptionRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params,
DeleteBucketIntelligentTieringConfigurationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, DeleteBucketInventoryConfigurationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, DeleteBucketLifecycleRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, DeleteBucketMetricsConfigurationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, DeleteBucketOwnershipControlsRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, DeleteBucketPolicyRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, DeleteBucketReplicationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, DeleteBucketTaggingRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, DeleteBucketWebsiteRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, DeleteObjectRequest request) {
params.bucket(request.bucket());
params.key(request.key());
}
private static void setContextParams(S3EndpointParams.Builder params, DeleteObjectTaggingRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, DeleteObjectsRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, DeletePublicAccessBlockRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetBucketAccelerateConfigurationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetBucketAclRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetBucketAnalyticsConfigurationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetBucketCorsRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetBucketEncryptionRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetBucketIntelligentTieringConfigurationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetBucketInventoryConfigurationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetBucketLifecycleConfigurationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetBucketLocationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetBucketLoggingRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetBucketMetricsConfigurationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetBucketNotificationConfigurationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetBucketOwnershipControlsRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetBucketPolicyRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetBucketPolicyStatusRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetBucketReplicationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetBucketRequestPaymentRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetBucketTaggingRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetBucketVersioningRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetBucketWebsiteRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetObjectRequest request) {
params.bucket(request.bucket());
params.key(request.key());
}
private static void setContextParams(S3EndpointParams.Builder params, GetObjectAclRequest request) {
params.bucket(request.bucket());
params.key(request.key());
}
private static void setContextParams(S3EndpointParams.Builder params, GetObjectAttributesRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetObjectLegalHoldRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetObjectLockConfigurationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetObjectRetentionRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetObjectTaggingRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetObjectTorrentRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, GetPublicAccessBlockRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, HeadBucketRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, HeadObjectRequest request) {
params.bucket(request.bucket());
params.key(request.key());
}
private static void setContextParams(S3EndpointParams.Builder params, ListBucketAnalyticsConfigurationsRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params,
ListBucketIntelligentTieringConfigurationsRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, ListBucketInventoryConfigurationsRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, ListBucketMetricsConfigurationsRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, ListMultipartUploadsRequest request) {
params.bucket(request.bucket());
params.prefix(request.prefix());
}
private static void setContextParams(S3EndpointParams.Builder params, ListObjectVersionsRequest request) {
params.bucket(request.bucket());
params.prefix(request.prefix());
}
private static void setContextParams(S3EndpointParams.Builder params, ListObjectsRequest request) {
params.bucket(request.bucket());
params.prefix(request.prefix());
}
private static void setContextParams(S3EndpointParams.Builder params, ListObjectsV2Request request) {
params.bucket(request.bucket());
params.prefix(request.prefix());
}
private static void setContextParams(S3EndpointParams.Builder params, ListPartsRequest request) {
params.bucket(request.bucket());
params.key(request.key());
}
private static void setContextParams(S3EndpointParams.Builder params, PutBucketAccelerateConfigurationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutBucketAclRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutBucketAnalyticsConfigurationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutBucketCorsRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutBucketEncryptionRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutBucketIntelligentTieringConfigurationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutBucketInventoryConfigurationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutBucketLifecycleConfigurationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutBucketLoggingRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutBucketMetricsConfigurationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutBucketNotificationConfigurationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutBucketOwnershipControlsRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutBucketPolicyRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutBucketReplicationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutBucketRequestPaymentRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutBucketTaggingRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutBucketVersioningRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutBucketWebsiteRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutObjectRequest request) {
params.bucket(request.bucket());
params.key(request.key());
}
private static void setContextParams(S3EndpointParams.Builder params, PutObjectAclRequest request) {
params.bucket(request.bucket());
params.key(request.key());
}
private static void setContextParams(S3EndpointParams.Builder params, PutObjectLegalHoldRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutObjectLockConfigurationRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutObjectRetentionRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutObjectTaggingRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, PutPublicAccessBlockRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, RestoreObjectRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, SelectObjectContentRequest request) {
params.bucket(request.bucket());
}
private static void setContextParams(S3EndpointParams.Builder params, UploadPartRequest request) {
params.bucket(request.bucket());
params.key(request.key());
}
private static void setContextParams(S3EndpointParams.Builder params, UploadPartCopyRequest request) {
params.bucket(request.destinationBucket());
}
private static void setStaticContextParams(S3EndpointParams.Builder params, String operationName) {
switch (operationName) {
case "CopyObject":
copyObjectStaticContextParams(params);
break;
case "CreateBucket":
createBucketStaticContextParams(params);
break;
case "CreateSession":
createSessionStaticContextParams(params);
break;
case "DeleteBucket":
deleteBucketStaticContextParams(params);
break;
case "DeleteBucketAnalyticsConfiguration":
deleteBucketAnalyticsConfigurationStaticContextParams(params);
break;
case "DeleteBucketCors":
deleteBucketCorsStaticContextParams(params);
break;
case "DeleteBucketEncryption":
deleteBucketEncryptionStaticContextParams(params);
break;
case "DeleteBucketIntelligentTieringConfiguration":
deleteBucketIntelligentTieringConfigurationStaticContextParams(params);
break;
case "DeleteBucketInventoryConfiguration":
deleteBucketInventoryConfigurationStaticContextParams(params);
break;
case "DeleteBucketLifecycle":
deleteBucketLifecycleStaticContextParams(params);
break;
case "DeleteBucketMetricsConfiguration":
deleteBucketMetricsConfigurationStaticContextParams(params);
break;
case "DeleteBucketOwnershipControls":
deleteBucketOwnershipControlsStaticContextParams(params);
break;
case "DeleteBucketPolicy":
deleteBucketPolicyStaticContextParams(params);
break;
case "DeleteBucketReplication":
deleteBucketReplicationStaticContextParams(params);
break;
case "DeleteBucketTagging":
deleteBucketTaggingStaticContextParams(params);
break;
case "DeleteBucketWebsite":
deleteBucketWebsiteStaticContextParams(params);
break;
case "DeletePublicAccessBlock":
deletePublicAccessBlockStaticContextParams(params);
break;
case "GetBucketAccelerateConfiguration":
getBucketAccelerateConfigurationStaticContextParams(params);
break;
case "GetBucketAcl":
getBucketAclStaticContextParams(params);
break;
case "GetBucketAnalyticsConfiguration":
getBucketAnalyticsConfigurationStaticContextParams(params);
break;
case "GetBucketCors":
getBucketCorsStaticContextParams(params);
break;
case "GetBucketEncryption":
getBucketEncryptionStaticContextParams(params);
break;
case "GetBucketIntelligentTieringConfiguration":
getBucketIntelligentTieringConfigurationStaticContextParams(params);
break;
case "GetBucketInventoryConfiguration":
getBucketInventoryConfigurationStaticContextParams(params);
break;
case "GetBucketLifecycleConfiguration":
getBucketLifecycleConfigurationStaticContextParams(params);
break;
case "GetBucketLocation":
getBucketLocationStaticContextParams(params);
break;
case "GetBucketLogging":
getBucketLoggingStaticContextParams(params);
break;
case "GetBucketMetricsConfiguration":
getBucketMetricsConfigurationStaticContextParams(params);
break;
case "GetBucketNotificationConfiguration":
getBucketNotificationConfigurationStaticContextParams(params);
break;
case "GetBucketOwnershipControls":
getBucketOwnershipControlsStaticContextParams(params);
break;
case "GetBucketPolicy":
getBucketPolicyStaticContextParams(params);
break;
case "GetBucketPolicyStatus":
getBucketPolicyStatusStaticContextParams(params);
break;
case "GetBucketReplication":
getBucketReplicationStaticContextParams(params);
break;
case "GetBucketRequestPayment":
getBucketRequestPaymentStaticContextParams(params);
break;
case "GetBucketTagging":
getBucketTaggingStaticContextParams(params);
break;
case "GetBucketVersioning":
getBucketVersioningStaticContextParams(params);
break;
case "GetBucketWebsite":
getBucketWebsiteStaticContextParams(params);
break;
case "GetPublicAccessBlock":
getPublicAccessBlockStaticContextParams(params);
break;
case "ListBucketAnalyticsConfigurations":
listBucketAnalyticsConfigurationsStaticContextParams(params);
break;
case "ListBucketIntelligentTieringConfigurations":
listBucketIntelligentTieringConfigurationsStaticContextParams(params);
break;
case "ListBucketInventoryConfigurations":
listBucketInventoryConfigurationsStaticContextParams(params);
break;
case "ListDirectoryBuckets":
listDirectoryBucketsStaticContextParams(params);
break;
case "PutBucketAccelerateConfiguration":
putBucketAccelerateConfigurationStaticContextParams(params);
break;
case "PutBucketAcl":
putBucketAclStaticContextParams(params);
break;
case "PutBucketAnalyticsConfiguration":
putBucketAnalyticsConfigurationStaticContextParams(params);
break;
case "PutBucketCors":
putBucketCorsStaticContextParams(params);
break;
case "PutBucketEncryption":
putBucketEncryptionStaticContextParams(params);
break;
case "PutBucketIntelligentTieringConfiguration":
putBucketIntelligentTieringConfigurationStaticContextParams(params);
break;
case "PutBucketInventoryConfiguration":
putBucketInventoryConfigurationStaticContextParams(params);
break;
case "PutBucketLifecycleConfiguration":
putBucketLifecycleConfigurationStaticContextParams(params);
break;
case "PutBucketLogging":
putBucketLoggingStaticContextParams(params);
break;
case "PutBucketMetricsConfiguration":
putBucketMetricsConfigurationStaticContextParams(params);
break;
case "PutBucketNotificationConfiguration":
putBucketNotificationConfigurationStaticContextParams(params);
break;
case "PutBucketOwnershipControls":
putBucketOwnershipControlsStaticContextParams(params);
break;
case "PutBucketPolicy":
putBucketPolicyStaticContextParams(params);
break;
case "PutBucketReplication":
putBucketReplicationStaticContextParams(params);
break;
case "PutBucketRequestPayment":
putBucketRequestPaymentStaticContextParams(params);
break;
case "PutBucketTagging":
putBucketTaggingStaticContextParams(params);
break;
case "PutBucketVersioning":
putBucketVersioningStaticContextParams(params);
break;
case "PutBucketWebsite":
putBucketWebsiteStaticContextParams(params);
break;
case "PutPublicAccessBlock":
putPublicAccessBlockStaticContextParams(params);
break;
case "UploadPartCopy":
uploadPartCopyStaticContextParams(params);
break;
case "WriteGetObjectResponse":
writeGetObjectResponseStaticContextParams(params);
break;
default:
break;
}
}
private static void copyObjectStaticContextParams(S3EndpointParams.Builder params) {
params.disableS3ExpressSessionAuth(true);
}
private static void createBucketStaticContextParams(S3EndpointParams.Builder params) {
params.disableAccessPoints(true);
params.useS3ExpressControlEndpoint(true);
}
private static void createSessionStaticContextParams(S3EndpointParams.Builder params) {
params.disableS3ExpressSessionAuth(true);
}
private static void deleteBucketStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void deleteBucketAnalyticsConfigurationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void deleteBucketCorsStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void deleteBucketEncryptionStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void deleteBucketIntelligentTieringConfigurationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void deleteBucketInventoryConfigurationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void deleteBucketLifecycleStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void deleteBucketMetricsConfigurationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void deleteBucketOwnershipControlsStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void deleteBucketPolicyStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void deleteBucketReplicationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void deleteBucketTaggingStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void deleteBucketWebsiteStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void deletePublicAccessBlockStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getBucketAccelerateConfigurationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getBucketAclStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getBucketAnalyticsConfigurationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getBucketCorsStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getBucketEncryptionStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getBucketIntelligentTieringConfigurationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getBucketInventoryConfigurationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getBucketLifecycleConfigurationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getBucketLocationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getBucketLoggingStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getBucketMetricsConfigurationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getBucketNotificationConfigurationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getBucketOwnershipControlsStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getBucketPolicyStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getBucketPolicyStatusStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getBucketReplicationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getBucketRequestPaymentStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getBucketTaggingStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getBucketVersioningStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getBucketWebsiteStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void getPublicAccessBlockStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void listBucketAnalyticsConfigurationsStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void listBucketIntelligentTieringConfigurationsStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void listBucketInventoryConfigurationsStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void listDirectoryBucketsStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void putBucketAccelerateConfigurationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void putBucketAclStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void putBucketAnalyticsConfigurationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void putBucketCorsStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void putBucketEncryptionStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void putBucketIntelligentTieringConfigurationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void putBucketInventoryConfigurationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void putBucketLifecycleConfigurationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void putBucketLoggingStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void putBucketMetricsConfigurationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void putBucketNotificationConfigurationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void putBucketOwnershipControlsStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void putBucketPolicyStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void putBucketReplicationStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void putBucketRequestPaymentStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void putBucketTaggingStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void putBucketVersioningStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void putBucketWebsiteStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void putPublicAccessBlockStaticContextParams(S3EndpointParams.Builder params) {
params.useS3ExpressControlEndpoint(true);
}
private static void uploadPartCopyStaticContextParams(S3EndpointParams.Builder params) {
params.disableS3ExpressSessionAuth(true);
}
private static void writeGetObjectResponseStaticContextParams(S3EndpointParams.Builder params) {
params.useObjectLambdaEndpoint(true);
}
private SelectedAuthScheme authSchemeWithEndpointSignerProperties(
List endpointAuthSchemes, SelectedAuthScheme selectedAuthScheme) {
for (EndpointAuthScheme endpointAuthScheme : endpointAuthSchemes) {
if (!endpointAuthScheme.schemeId().equals(selectedAuthScheme.authSchemeOption().schemeId())) {
continue;
}
AuthSchemeOption.Builder option = selectedAuthScheme.authSchemeOption().toBuilder();
if (endpointAuthScheme instanceof SigV4AuthScheme) {
SigV4AuthScheme v4AuthScheme = (SigV4AuthScheme) endpointAuthScheme;
if (v4AuthScheme.isDisableDoubleEncodingSet()) {
option.putSignerProperty(AwsV4HttpSigner.DOUBLE_URL_ENCODE, !v4AuthScheme.disableDoubleEncoding());
}
if (v4AuthScheme.signingRegion() != null) {
option.putSignerProperty(AwsV4HttpSigner.REGION_NAME, v4AuthScheme.signingRegion());
}
if (v4AuthScheme.signingName() != null) {
option.putSignerProperty(AwsV4HttpSigner.SERVICE_SIGNING_NAME, v4AuthScheme.signingName());
}
return new SelectedAuthScheme<>(selectedAuthScheme.identity(), selectedAuthScheme.signer(), option.build());
}
if (endpointAuthScheme instanceof SigV4aAuthScheme) {
SigV4aAuthScheme v4aAuthScheme = (SigV4aAuthScheme) endpointAuthScheme;
if (v4aAuthScheme.isDisableDoubleEncodingSet()) {
option.putSignerProperty(AwsV4aHttpSigner.DOUBLE_URL_ENCODE, !v4aAuthScheme.disableDoubleEncoding());
}
if (v4aAuthScheme.signingRegionSet() != null) {
RegionSet regionSet = RegionSet.create(v4aAuthScheme.signingRegionSet());
option.putSignerProperty(AwsV4aHttpSigner.REGION_SET, regionSet);
}
if (v4aAuthScheme.signingName() != null) {
option.putSignerProperty(AwsV4aHttpSigner.SERVICE_SIGNING_NAME, v4aAuthScheme.signingName());
}
return new SelectedAuthScheme<>(selectedAuthScheme.identity(), selectedAuthScheme.signer(), option.build());
}
if (endpointAuthScheme instanceof S3ExpressEndpointAuthScheme) {
S3ExpressEndpointAuthScheme s3ExpressAuthScheme = (S3ExpressEndpointAuthScheme) endpointAuthScheme;
if (s3ExpressAuthScheme.isDisableDoubleEncodingSet()) {
option.putSignerProperty(AwsV4HttpSigner.DOUBLE_URL_ENCODE, !s3ExpressAuthScheme.disableDoubleEncoding());
}
if (s3ExpressAuthScheme.signingRegion() != null) {
option.putSignerProperty(AwsV4HttpSigner.REGION_NAME, s3ExpressAuthScheme.signingRegion());
}
if (s3ExpressAuthScheme.signingName() != null) {
option.putSignerProperty(AwsV4HttpSigner.SERVICE_SIGNING_NAME, s3ExpressAuthScheme.signingName());
}
return new SelectedAuthScheme<>(selectedAuthScheme.identity(), selectedAuthScheme.signer(), option.build());
}
throw new IllegalArgumentException("Endpoint auth scheme '" + endpointAuthScheme.name()
+ "' cannot be mapped to the SDK auth scheme. Was it declared in the service's model?");
}
return selectedAuthScheme;
}
private static void setClientContextParams(S3EndpointParams.Builder params, ExecutionAttributes executionAttributes) {
AttributeMap clientContextParams = executionAttributes.getAttribute(SdkInternalExecutionAttribute.CLIENT_CONTEXT_PARAMS);
Optional.ofNullable(clientContextParams.get(S3ClientContextParams.ACCELERATE)).ifPresent(params::accelerate);
Optional.ofNullable(clientContextParams.get(S3ClientContextParams.DISABLE_MULTI_REGION_ACCESS_POINTS)).ifPresent(
params::disableMultiRegionAccessPoints);
Optional.ofNullable(clientContextParams.get(S3ClientContextParams.DISABLE_S3_EXPRESS_SESSION_AUTH)).ifPresent(
params::disableS3ExpressSessionAuth);
Optional.ofNullable(clientContextParams.get(S3ClientContextParams.FORCE_PATH_STYLE)).ifPresent(params::forcePathStyle);
Optional.ofNullable(clientContextParams.get(S3ClientContextParams.USE_ARN_REGION)).ifPresent(params::useArnRegion);
}
private static void setOperationContextParams(S3EndpointParams.Builder params, String operationName, SdkRequest request) {
switch (operationName) {
case "DeleteObjects":
setOperationContextParams(params, (DeleteObjectsRequest) request);
break;
default:
break;
}
}
private static void setOperationContextParams(S3EndpointParams.Builder params, DeleteObjectsRequest request) {
JmesPathRuntime.Value input = new JmesPathRuntime.Value(request);
params.deleteObjectKeys(input.field("Delete").field("Objects").wildcard().field("Key").stringValues());
}
private static Optional hostPrefix(String operationName, SdkRequest request) {
switch (operationName) {
case "WriteGetObjectResponse": {
HostnameValidator.validateHostnameCompliant(request.getValueForField("RequestRoute", String.class).orElse(null),
"RequestRoute", "writeGetObjectResponseRequest");
return Optional.of(String.format("%s.", request.getValueForField("RequestRoute", String.class).get()));
}
default:
return Optional.empty();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy