All Downloads are FREE. Search and download functionalities are using the official Maven repository.

software.amazon.awssdk.services.config.DefaultConfigAsyncClient Maven / Gradle / Ivy

Go to download

The AWS Java SDK for AWS Config module holds the client classes that are used for communicating with AWS Config Service

There is a newer version: 2.28.4
Show newest version
/*
 * 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.config;

import java.util.Collections;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.annotations.SdkInternalApi;
import software.amazon.awssdk.awscore.client.handler.AwsAsyncClientHandler;
import software.amazon.awssdk.awscore.exception.AwsServiceException;
import software.amazon.awssdk.awscore.internal.AwsProtocolMetadata;
import software.amazon.awssdk.awscore.internal.AwsServiceProtocol;
import software.amazon.awssdk.awscore.retry.AwsRetryStrategy;
import software.amazon.awssdk.core.RequestOverrideConfiguration;
import software.amazon.awssdk.core.SdkPlugin;
import software.amazon.awssdk.core.SdkRequest;
import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration;
import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
import software.amazon.awssdk.core.client.config.SdkClientOption;
import software.amazon.awssdk.core.client.handler.AsyncClientHandler;
import software.amazon.awssdk.core.client.handler.ClientExecutionParams;
import software.amazon.awssdk.core.http.HttpResponseHandler;
import software.amazon.awssdk.core.metrics.CoreMetric;
import software.amazon.awssdk.core.retry.RetryMode;
import software.amazon.awssdk.metrics.MetricCollector;
import software.amazon.awssdk.metrics.MetricPublisher;
import software.amazon.awssdk.metrics.NoOpMetricCollector;
import software.amazon.awssdk.protocols.core.ExceptionMetadata;
import software.amazon.awssdk.protocols.json.AwsJsonProtocol;
import software.amazon.awssdk.protocols.json.AwsJsonProtocolFactory;
import software.amazon.awssdk.protocols.json.BaseAwsJsonProtocolFactory;
import software.amazon.awssdk.protocols.json.JsonOperationMetadata;
import software.amazon.awssdk.retries.api.RetryStrategy;
import software.amazon.awssdk.services.config.internal.ConfigServiceClientConfigurationBuilder;
import software.amazon.awssdk.services.config.model.BatchGetAggregateResourceConfigRequest;
import software.amazon.awssdk.services.config.model.BatchGetAggregateResourceConfigResponse;
import software.amazon.awssdk.services.config.model.BatchGetResourceConfigRequest;
import software.amazon.awssdk.services.config.model.BatchGetResourceConfigResponse;
import software.amazon.awssdk.services.config.model.ConfigException;
import software.amazon.awssdk.services.config.model.ConformancePackTemplateValidationException;
import software.amazon.awssdk.services.config.model.DeleteAggregationAuthorizationRequest;
import software.amazon.awssdk.services.config.model.DeleteAggregationAuthorizationResponse;
import software.amazon.awssdk.services.config.model.DeleteConfigRuleRequest;
import software.amazon.awssdk.services.config.model.DeleteConfigRuleResponse;
import software.amazon.awssdk.services.config.model.DeleteConfigurationAggregatorRequest;
import software.amazon.awssdk.services.config.model.DeleteConfigurationAggregatorResponse;
import software.amazon.awssdk.services.config.model.DeleteConfigurationRecorderRequest;
import software.amazon.awssdk.services.config.model.DeleteConfigurationRecorderResponse;
import software.amazon.awssdk.services.config.model.DeleteConformancePackRequest;
import software.amazon.awssdk.services.config.model.DeleteConformancePackResponse;
import software.amazon.awssdk.services.config.model.DeleteDeliveryChannelRequest;
import software.amazon.awssdk.services.config.model.DeleteDeliveryChannelResponse;
import software.amazon.awssdk.services.config.model.DeleteEvaluationResultsRequest;
import software.amazon.awssdk.services.config.model.DeleteEvaluationResultsResponse;
import software.amazon.awssdk.services.config.model.DeleteOrganizationConfigRuleRequest;
import software.amazon.awssdk.services.config.model.DeleteOrganizationConfigRuleResponse;
import software.amazon.awssdk.services.config.model.DeleteOrganizationConformancePackRequest;
import software.amazon.awssdk.services.config.model.DeleteOrganizationConformancePackResponse;
import software.amazon.awssdk.services.config.model.DeletePendingAggregationRequestRequest;
import software.amazon.awssdk.services.config.model.DeletePendingAggregationRequestResponse;
import software.amazon.awssdk.services.config.model.DeleteRemediationConfigurationRequest;
import software.amazon.awssdk.services.config.model.DeleteRemediationConfigurationResponse;
import software.amazon.awssdk.services.config.model.DeleteRemediationExceptionsRequest;
import software.amazon.awssdk.services.config.model.DeleteRemediationExceptionsResponse;
import software.amazon.awssdk.services.config.model.DeleteResourceConfigRequest;
import software.amazon.awssdk.services.config.model.DeleteResourceConfigResponse;
import software.amazon.awssdk.services.config.model.DeleteRetentionConfigurationRequest;
import software.amazon.awssdk.services.config.model.DeleteRetentionConfigurationResponse;
import software.amazon.awssdk.services.config.model.DeleteStoredQueryRequest;
import software.amazon.awssdk.services.config.model.DeleteStoredQueryResponse;
import software.amazon.awssdk.services.config.model.DeliverConfigSnapshotRequest;
import software.amazon.awssdk.services.config.model.DeliverConfigSnapshotResponse;
import software.amazon.awssdk.services.config.model.DescribeAggregateComplianceByConfigRulesRequest;
import software.amazon.awssdk.services.config.model.DescribeAggregateComplianceByConfigRulesResponse;
import software.amazon.awssdk.services.config.model.DescribeAggregateComplianceByConformancePacksRequest;
import software.amazon.awssdk.services.config.model.DescribeAggregateComplianceByConformancePacksResponse;
import software.amazon.awssdk.services.config.model.DescribeAggregationAuthorizationsRequest;
import software.amazon.awssdk.services.config.model.DescribeAggregationAuthorizationsResponse;
import software.amazon.awssdk.services.config.model.DescribeComplianceByConfigRuleRequest;
import software.amazon.awssdk.services.config.model.DescribeComplianceByConfigRuleResponse;
import software.amazon.awssdk.services.config.model.DescribeComplianceByResourceRequest;
import software.amazon.awssdk.services.config.model.DescribeComplianceByResourceResponse;
import software.amazon.awssdk.services.config.model.DescribeConfigRuleEvaluationStatusRequest;
import software.amazon.awssdk.services.config.model.DescribeConfigRuleEvaluationStatusResponse;
import software.amazon.awssdk.services.config.model.DescribeConfigRulesRequest;
import software.amazon.awssdk.services.config.model.DescribeConfigRulesResponse;
import software.amazon.awssdk.services.config.model.DescribeConfigurationAggregatorSourcesStatusRequest;
import software.amazon.awssdk.services.config.model.DescribeConfigurationAggregatorSourcesStatusResponse;
import software.amazon.awssdk.services.config.model.DescribeConfigurationAggregatorsRequest;
import software.amazon.awssdk.services.config.model.DescribeConfigurationAggregatorsResponse;
import software.amazon.awssdk.services.config.model.DescribeConfigurationRecorderStatusRequest;
import software.amazon.awssdk.services.config.model.DescribeConfigurationRecorderStatusResponse;
import software.amazon.awssdk.services.config.model.DescribeConfigurationRecordersRequest;
import software.amazon.awssdk.services.config.model.DescribeConfigurationRecordersResponse;
import software.amazon.awssdk.services.config.model.DescribeConformancePackComplianceRequest;
import software.amazon.awssdk.services.config.model.DescribeConformancePackComplianceResponse;
import software.amazon.awssdk.services.config.model.DescribeConformancePackStatusRequest;
import software.amazon.awssdk.services.config.model.DescribeConformancePackStatusResponse;
import software.amazon.awssdk.services.config.model.DescribeConformancePacksRequest;
import software.amazon.awssdk.services.config.model.DescribeConformancePacksResponse;
import software.amazon.awssdk.services.config.model.DescribeDeliveryChannelStatusRequest;
import software.amazon.awssdk.services.config.model.DescribeDeliveryChannelStatusResponse;
import software.amazon.awssdk.services.config.model.DescribeDeliveryChannelsRequest;
import software.amazon.awssdk.services.config.model.DescribeDeliveryChannelsResponse;
import software.amazon.awssdk.services.config.model.DescribeOrganizationConfigRuleStatusesRequest;
import software.amazon.awssdk.services.config.model.DescribeOrganizationConfigRuleStatusesResponse;
import software.amazon.awssdk.services.config.model.DescribeOrganizationConfigRulesRequest;
import software.amazon.awssdk.services.config.model.DescribeOrganizationConfigRulesResponse;
import software.amazon.awssdk.services.config.model.DescribeOrganizationConformancePackStatusesRequest;
import software.amazon.awssdk.services.config.model.DescribeOrganizationConformancePackStatusesResponse;
import software.amazon.awssdk.services.config.model.DescribeOrganizationConformancePacksRequest;
import software.amazon.awssdk.services.config.model.DescribeOrganizationConformancePacksResponse;
import software.amazon.awssdk.services.config.model.DescribePendingAggregationRequestsRequest;
import software.amazon.awssdk.services.config.model.DescribePendingAggregationRequestsResponse;
import software.amazon.awssdk.services.config.model.DescribeRemediationConfigurationsRequest;
import software.amazon.awssdk.services.config.model.DescribeRemediationConfigurationsResponse;
import software.amazon.awssdk.services.config.model.DescribeRemediationExceptionsRequest;
import software.amazon.awssdk.services.config.model.DescribeRemediationExceptionsResponse;
import software.amazon.awssdk.services.config.model.DescribeRemediationExecutionStatusRequest;
import software.amazon.awssdk.services.config.model.DescribeRemediationExecutionStatusResponse;
import software.amazon.awssdk.services.config.model.DescribeRetentionConfigurationsRequest;
import software.amazon.awssdk.services.config.model.DescribeRetentionConfigurationsResponse;
import software.amazon.awssdk.services.config.model.GetAggregateComplianceDetailsByConfigRuleRequest;
import software.amazon.awssdk.services.config.model.GetAggregateComplianceDetailsByConfigRuleResponse;
import software.amazon.awssdk.services.config.model.GetAggregateConfigRuleComplianceSummaryRequest;
import software.amazon.awssdk.services.config.model.GetAggregateConfigRuleComplianceSummaryResponse;
import software.amazon.awssdk.services.config.model.GetAggregateConformancePackComplianceSummaryRequest;
import software.amazon.awssdk.services.config.model.GetAggregateConformancePackComplianceSummaryResponse;
import software.amazon.awssdk.services.config.model.GetAggregateDiscoveredResourceCountsRequest;
import software.amazon.awssdk.services.config.model.GetAggregateDiscoveredResourceCountsResponse;
import software.amazon.awssdk.services.config.model.GetAggregateResourceConfigRequest;
import software.amazon.awssdk.services.config.model.GetAggregateResourceConfigResponse;
import software.amazon.awssdk.services.config.model.GetComplianceDetailsByConfigRuleRequest;
import software.amazon.awssdk.services.config.model.GetComplianceDetailsByConfigRuleResponse;
import software.amazon.awssdk.services.config.model.GetComplianceDetailsByResourceRequest;
import software.amazon.awssdk.services.config.model.GetComplianceDetailsByResourceResponse;
import software.amazon.awssdk.services.config.model.GetComplianceSummaryByConfigRuleRequest;
import software.amazon.awssdk.services.config.model.GetComplianceSummaryByConfigRuleResponse;
import software.amazon.awssdk.services.config.model.GetComplianceSummaryByResourceTypeRequest;
import software.amazon.awssdk.services.config.model.GetComplianceSummaryByResourceTypeResponse;
import software.amazon.awssdk.services.config.model.GetConformancePackComplianceDetailsRequest;
import software.amazon.awssdk.services.config.model.GetConformancePackComplianceDetailsResponse;
import software.amazon.awssdk.services.config.model.GetConformancePackComplianceSummaryRequest;
import software.amazon.awssdk.services.config.model.GetConformancePackComplianceSummaryResponse;
import software.amazon.awssdk.services.config.model.GetCustomRulePolicyRequest;
import software.amazon.awssdk.services.config.model.GetCustomRulePolicyResponse;
import software.amazon.awssdk.services.config.model.GetDiscoveredResourceCountsRequest;
import software.amazon.awssdk.services.config.model.GetDiscoveredResourceCountsResponse;
import software.amazon.awssdk.services.config.model.GetOrganizationConfigRuleDetailedStatusRequest;
import software.amazon.awssdk.services.config.model.GetOrganizationConfigRuleDetailedStatusResponse;
import software.amazon.awssdk.services.config.model.GetOrganizationConformancePackDetailedStatusRequest;
import software.amazon.awssdk.services.config.model.GetOrganizationConformancePackDetailedStatusResponse;
import software.amazon.awssdk.services.config.model.GetOrganizationCustomRulePolicyRequest;
import software.amazon.awssdk.services.config.model.GetOrganizationCustomRulePolicyResponse;
import software.amazon.awssdk.services.config.model.GetResourceConfigHistoryRequest;
import software.amazon.awssdk.services.config.model.GetResourceConfigHistoryResponse;
import software.amazon.awssdk.services.config.model.GetResourceEvaluationSummaryRequest;
import software.amazon.awssdk.services.config.model.GetResourceEvaluationSummaryResponse;
import software.amazon.awssdk.services.config.model.GetStoredQueryRequest;
import software.amazon.awssdk.services.config.model.GetStoredQueryResponse;
import software.amazon.awssdk.services.config.model.IdempotentParameterMismatchException;
import software.amazon.awssdk.services.config.model.InsufficientDeliveryPolicyException;
import software.amazon.awssdk.services.config.model.InsufficientPermissionsException;
import software.amazon.awssdk.services.config.model.InvalidConfigurationRecorderNameException;
import software.amazon.awssdk.services.config.model.InvalidDeliveryChannelNameException;
import software.amazon.awssdk.services.config.model.InvalidExpressionException;
import software.amazon.awssdk.services.config.model.InvalidLimitException;
import software.amazon.awssdk.services.config.model.InvalidNextTokenException;
import software.amazon.awssdk.services.config.model.InvalidParameterValueException;
import software.amazon.awssdk.services.config.model.InvalidRecordingGroupException;
import software.amazon.awssdk.services.config.model.InvalidResultTokenException;
import software.amazon.awssdk.services.config.model.InvalidRoleException;
import software.amazon.awssdk.services.config.model.InvalidS3KeyPrefixException;
import software.amazon.awssdk.services.config.model.InvalidS3KmsKeyArnException;
import software.amazon.awssdk.services.config.model.InvalidSnsTopicArnException;
import software.amazon.awssdk.services.config.model.InvalidTimeRangeException;
import software.amazon.awssdk.services.config.model.LastDeliveryChannelDeleteFailedException;
import software.amazon.awssdk.services.config.model.LimitExceededException;
import software.amazon.awssdk.services.config.model.ListAggregateDiscoveredResourcesRequest;
import software.amazon.awssdk.services.config.model.ListAggregateDiscoveredResourcesResponse;
import software.amazon.awssdk.services.config.model.ListConformancePackComplianceScoresRequest;
import software.amazon.awssdk.services.config.model.ListConformancePackComplianceScoresResponse;
import software.amazon.awssdk.services.config.model.ListDiscoveredResourcesRequest;
import software.amazon.awssdk.services.config.model.ListDiscoveredResourcesResponse;
import software.amazon.awssdk.services.config.model.ListResourceEvaluationsRequest;
import software.amazon.awssdk.services.config.model.ListResourceEvaluationsResponse;
import software.amazon.awssdk.services.config.model.ListStoredQueriesRequest;
import software.amazon.awssdk.services.config.model.ListStoredQueriesResponse;
import software.amazon.awssdk.services.config.model.ListTagsForResourceRequest;
import software.amazon.awssdk.services.config.model.ListTagsForResourceResponse;
import software.amazon.awssdk.services.config.model.MaxActiveResourcesExceededException;
import software.amazon.awssdk.services.config.model.MaxNumberOfConfigRulesExceededException;
import software.amazon.awssdk.services.config.model.MaxNumberOfConfigurationRecordersExceededException;
import software.amazon.awssdk.services.config.model.MaxNumberOfConformancePacksExceededException;
import software.amazon.awssdk.services.config.model.MaxNumberOfDeliveryChannelsExceededException;
import software.amazon.awssdk.services.config.model.MaxNumberOfOrganizationConfigRulesExceededException;
import software.amazon.awssdk.services.config.model.MaxNumberOfOrganizationConformancePacksExceededException;
import software.amazon.awssdk.services.config.model.MaxNumberOfRetentionConfigurationsExceededException;
import software.amazon.awssdk.services.config.model.NoAvailableConfigurationRecorderException;
import software.amazon.awssdk.services.config.model.NoAvailableDeliveryChannelException;
import software.amazon.awssdk.services.config.model.NoAvailableOrganizationException;
import software.amazon.awssdk.services.config.model.NoRunningConfigurationRecorderException;
import software.amazon.awssdk.services.config.model.NoSuchBucketException;
import software.amazon.awssdk.services.config.model.NoSuchConfigRuleException;
import software.amazon.awssdk.services.config.model.NoSuchConfigRuleInConformancePackException;
import software.amazon.awssdk.services.config.model.NoSuchConfigurationAggregatorException;
import software.amazon.awssdk.services.config.model.NoSuchConfigurationRecorderException;
import software.amazon.awssdk.services.config.model.NoSuchConformancePackException;
import software.amazon.awssdk.services.config.model.NoSuchDeliveryChannelException;
import software.amazon.awssdk.services.config.model.NoSuchOrganizationConfigRuleException;
import software.amazon.awssdk.services.config.model.NoSuchOrganizationConformancePackException;
import software.amazon.awssdk.services.config.model.NoSuchRemediationConfigurationException;
import software.amazon.awssdk.services.config.model.NoSuchRemediationExceptionException;
import software.amazon.awssdk.services.config.model.NoSuchRetentionConfigurationException;
import software.amazon.awssdk.services.config.model.OrganizationAccessDeniedException;
import software.amazon.awssdk.services.config.model.OrganizationAllFeaturesNotEnabledException;
import software.amazon.awssdk.services.config.model.OrganizationConformancePackTemplateValidationException;
import software.amazon.awssdk.services.config.model.OversizedConfigurationItemException;
import software.amazon.awssdk.services.config.model.PutAggregationAuthorizationRequest;
import software.amazon.awssdk.services.config.model.PutAggregationAuthorizationResponse;
import software.amazon.awssdk.services.config.model.PutConfigRuleRequest;
import software.amazon.awssdk.services.config.model.PutConfigRuleResponse;
import software.amazon.awssdk.services.config.model.PutConfigurationAggregatorRequest;
import software.amazon.awssdk.services.config.model.PutConfigurationAggregatorResponse;
import software.amazon.awssdk.services.config.model.PutConfigurationRecorderRequest;
import software.amazon.awssdk.services.config.model.PutConfigurationRecorderResponse;
import software.amazon.awssdk.services.config.model.PutConformancePackRequest;
import software.amazon.awssdk.services.config.model.PutConformancePackResponse;
import software.amazon.awssdk.services.config.model.PutDeliveryChannelRequest;
import software.amazon.awssdk.services.config.model.PutDeliveryChannelResponse;
import software.amazon.awssdk.services.config.model.PutEvaluationsRequest;
import software.amazon.awssdk.services.config.model.PutEvaluationsResponse;
import software.amazon.awssdk.services.config.model.PutExternalEvaluationRequest;
import software.amazon.awssdk.services.config.model.PutExternalEvaluationResponse;
import software.amazon.awssdk.services.config.model.PutOrganizationConfigRuleRequest;
import software.amazon.awssdk.services.config.model.PutOrganizationConfigRuleResponse;
import software.amazon.awssdk.services.config.model.PutOrganizationConformancePackRequest;
import software.amazon.awssdk.services.config.model.PutOrganizationConformancePackResponse;
import software.amazon.awssdk.services.config.model.PutRemediationConfigurationsRequest;
import software.amazon.awssdk.services.config.model.PutRemediationConfigurationsResponse;
import software.amazon.awssdk.services.config.model.PutRemediationExceptionsRequest;
import software.amazon.awssdk.services.config.model.PutRemediationExceptionsResponse;
import software.amazon.awssdk.services.config.model.PutResourceConfigRequest;
import software.amazon.awssdk.services.config.model.PutResourceConfigResponse;
import software.amazon.awssdk.services.config.model.PutRetentionConfigurationRequest;
import software.amazon.awssdk.services.config.model.PutRetentionConfigurationResponse;
import software.amazon.awssdk.services.config.model.PutStoredQueryRequest;
import software.amazon.awssdk.services.config.model.PutStoredQueryResponse;
import software.amazon.awssdk.services.config.model.RemediationInProgressException;
import software.amazon.awssdk.services.config.model.ResourceConcurrentModificationException;
import software.amazon.awssdk.services.config.model.ResourceInUseException;
import software.amazon.awssdk.services.config.model.ResourceNotDiscoveredException;
import software.amazon.awssdk.services.config.model.ResourceNotFoundException;
import software.amazon.awssdk.services.config.model.SelectAggregateResourceConfigRequest;
import software.amazon.awssdk.services.config.model.SelectAggregateResourceConfigResponse;
import software.amazon.awssdk.services.config.model.SelectResourceConfigRequest;
import software.amazon.awssdk.services.config.model.SelectResourceConfigResponse;
import software.amazon.awssdk.services.config.model.StartConfigRulesEvaluationRequest;
import software.amazon.awssdk.services.config.model.StartConfigRulesEvaluationResponse;
import software.amazon.awssdk.services.config.model.StartConfigurationRecorderRequest;
import software.amazon.awssdk.services.config.model.StartConfigurationRecorderResponse;
import software.amazon.awssdk.services.config.model.StartRemediationExecutionRequest;
import software.amazon.awssdk.services.config.model.StartRemediationExecutionResponse;
import software.amazon.awssdk.services.config.model.StartResourceEvaluationRequest;
import software.amazon.awssdk.services.config.model.StartResourceEvaluationResponse;
import software.amazon.awssdk.services.config.model.StopConfigurationRecorderRequest;
import software.amazon.awssdk.services.config.model.StopConfigurationRecorderResponse;
import software.amazon.awssdk.services.config.model.TagResourceRequest;
import software.amazon.awssdk.services.config.model.TagResourceResponse;
import software.amazon.awssdk.services.config.model.TooManyTagsException;
import software.amazon.awssdk.services.config.model.UntagResourceRequest;
import software.amazon.awssdk.services.config.model.UntagResourceResponse;
import software.amazon.awssdk.services.config.model.ValidationException;
import software.amazon.awssdk.services.config.transform.BatchGetAggregateResourceConfigRequestMarshaller;
import software.amazon.awssdk.services.config.transform.BatchGetResourceConfigRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DeleteAggregationAuthorizationRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DeleteConfigRuleRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DeleteConfigurationAggregatorRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DeleteConfigurationRecorderRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DeleteConformancePackRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DeleteDeliveryChannelRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DeleteEvaluationResultsRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DeleteOrganizationConfigRuleRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DeleteOrganizationConformancePackRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DeletePendingAggregationRequestRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DeleteRemediationConfigurationRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DeleteRemediationExceptionsRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DeleteResourceConfigRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DeleteRetentionConfigurationRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DeleteStoredQueryRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DeliverConfigSnapshotRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeAggregateComplianceByConfigRulesRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeAggregateComplianceByConformancePacksRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeAggregationAuthorizationsRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeComplianceByConfigRuleRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeComplianceByResourceRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeConfigRuleEvaluationStatusRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeConfigRulesRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeConfigurationAggregatorSourcesStatusRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeConfigurationAggregatorsRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeConfigurationRecorderStatusRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeConfigurationRecordersRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeConformancePackComplianceRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeConformancePackStatusRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeConformancePacksRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeDeliveryChannelStatusRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeDeliveryChannelsRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeOrganizationConfigRuleStatusesRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeOrganizationConfigRulesRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeOrganizationConformancePackStatusesRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeOrganizationConformancePacksRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribePendingAggregationRequestsRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeRemediationConfigurationsRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeRemediationExceptionsRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeRemediationExecutionStatusRequestMarshaller;
import software.amazon.awssdk.services.config.transform.DescribeRetentionConfigurationsRequestMarshaller;
import software.amazon.awssdk.services.config.transform.GetAggregateComplianceDetailsByConfigRuleRequestMarshaller;
import software.amazon.awssdk.services.config.transform.GetAggregateConfigRuleComplianceSummaryRequestMarshaller;
import software.amazon.awssdk.services.config.transform.GetAggregateConformancePackComplianceSummaryRequestMarshaller;
import software.amazon.awssdk.services.config.transform.GetAggregateDiscoveredResourceCountsRequestMarshaller;
import software.amazon.awssdk.services.config.transform.GetAggregateResourceConfigRequestMarshaller;
import software.amazon.awssdk.services.config.transform.GetComplianceDetailsByConfigRuleRequestMarshaller;
import software.amazon.awssdk.services.config.transform.GetComplianceDetailsByResourceRequestMarshaller;
import software.amazon.awssdk.services.config.transform.GetComplianceSummaryByConfigRuleRequestMarshaller;
import software.amazon.awssdk.services.config.transform.GetComplianceSummaryByResourceTypeRequestMarshaller;
import software.amazon.awssdk.services.config.transform.GetConformancePackComplianceDetailsRequestMarshaller;
import software.amazon.awssdk.services.config.transform.GetConformancePackComplianceSummaryRequestMarshaller;
import software.amazon.awssdk.services.config.transform.GetCustomRulePolicyRequestMarshaller;
import software.amazon.awssdk.services.config.transform.GetDiscoveredResourceCountsRequestMarshaller;
import software.amazon.awssdk.services.config.transform.GetOrganizationConfigRuleDetailedStatusRequestMarshaller;
import software.amazon.awssdk.services.config.transform.GetOrganizationConformancePackDetailedStatusRequestMarshaller;
import software.amazon.awssdk.services.config.transform.GetOrganizationCustomRulePolicyRequestMarshaller;
import software.amazon.awssdk.services.config.transform.GetResourceConfigHistoryRequestMarshaller;
import software.amazon.awssdk.services.config.transform.GetResourceEvaluationSummaryRequestMarshaller;
import software.amazon.awssdk.services.config.transform.GetStoredQueryRequestMarshaller;
import software.amazon.awssdk.services.config.transform.ListAggregateDiscoveredResourcesRequestMarshaller;
import software.amazon.awssdk.services.config.transform.ListConformancePackComplianceScoresRequestMarshaller;
import software.amazon.awssdk.services.config.transform.ListDiscoveredResourcesRequestMarshaller;
import software.amazon.awssdk.services.config.transform.ListResourceEvaluationsRequestMarshaller;
import software.amazon.awssdk.services.config.transform.ListStoredQueriesRequestMarshaller;
import software.amazon.awssdk.services.config.transform.ListTagsForResourceRequestMarshaller;
import software.amazon.awssdk.services.config.transform.PutAggregationAuthorizationRequestMarshaller;
import software.amazon.awssdk.services.config.transform.PutConfigRuleRequestMarshaller;
import software.amazon.awssdk.services.config.transform.PutConfigurationAggregatorRequestMarshaller;
import software.amazon.awssdk.services.config.transform.PutConfigurationRecorderRequestMarshaller;
import software.amazon.awssdk.services.config.transform.PutConformancePackRequestMarshaller;
import software.amazon.awssdk.services.config.transform.PutDeliveryChannelRequestMarshaller;
import software.amazon.awssdk.services.config.transform.PutEvaluationsRequestMarshaller;
import software.amazon.awssdk.services.config.transform.PutExternalEvaluationRequestMarshaller;
import software.amazon.awssdk.services.config.transform.PutOrganizationConfigRuleRequestMarshaller;
import software.amazon.awssdk.services.config.transform.PutOrganizationConformancePackRequestMarshaller;
import software.amazon.awssdk.services.config.transform.PutRemediationConfigurationsRequestMarshaller;
import software.amazon.awssdk.services.config.transform.PutRemediationExceptionsRequestMarshaller;
import software.amazon.awssdk.services.config.transform.PutResourceConfigRequestMarshaller;
import software.amazon.awssdk.services.config.transform.PutRetentionConfigurationRequestMarshaller;
import software.amazon.awssdk.services.config.transform.PutStoredQueryRequestMarshaller;
import software.amazon.awssdk.services.config.transform.SelectAggregateResourceConfigRequestMarshaller;
import software.amazon.awssdk.services.config.transform.SelectResourceConfigRequestMarshaller;
import software.amazon.awssdk.services.config.transform.StartConfigRulesEvaluationRequestMarshaller;
import software.amazon.awssdk.services.config.transform.StartConfigurationRecorderRequestMarshaller;
import software.amazon.awssdk.services.config.transform.StartRemediationExecutionRequestMarshaller;
import software.amazon.awssdk.services.config.transform.StartResourceEvaluationRequestMarshaller;
import software.amazon.awssdk.services.config.transform.StopConfigurationRecorderRequestMarshaller;
import software.amazon.awssdk.services.config.transform.TagResourceRequestMarshaller;
import software.amazon.awssdk.services.config.transform.UntagResourceRequestMarshaller;
import software.amazon.awssdk.utils.CompletableFutureUtils;

/**
 * Internal implementation of {@link ConfigAsyncClient}.
 *
 * @see ConfigAsyncClient#builder()
 */
@Generated("software.amazon.awssdk:codegen")
@SdkInternalApi
final class DefaultConfigAsyncClient implements ConfigAsyncClient {
    private static final Logger log = LoggerFactory.getLogger(DefaultConfigAsyncClient.class);

    private static final AwsProtocolMetadata protocolMetadata = AwsProtocolMetadata.builder()
            .serviceProtocol(AwsServiceProtocol.AWS_JSON).build();

    private final AsyncClientHandler clientHandler;

    private final AwsJsonProtocolFactory protocolFactory;

    private final SdkClientConfiguration clientConfiguration;

    protected DefaultConfigAsyncClient(SdkClientConfiguration clientConfiguration) {
        this.clientHandler = new AwsAsyncClientHandler(clientConfiguration);
        this.clientConfiguration = clientConfiguration.toBuilder().option(SdkClientOption.SDK_CLIENT, this).build();
        this.protocolFactory = init(AwsJsonProtocolFactory.builder()).build();
    }

    /**
     * 

* Returns the current configuration items for resources that are present in your Config aggregator. The operation * also returns a list of resources that are not processed in the current request. If there are no unprocessed * resources, the operation returns an empty unprocessedResourceIdentifiers list. *

* *
    *
  • *

    * The API does not return results for deleted resources. *

    *
  • *
  • *

    * The API does not return tags and relationships. *

    *
  • *
*
* * @param batchGetAggregateResourceConfigRequest * @return A Java Future containing the result of the BatchGetAggregateResourceConfig operation returned by the * service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
    *
  • ValidationException The requested action is not valid.

    *

    * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

    *

    * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

  • *
  • NoSuchConfigurationAggregatorException You have specified a configuration aggregator that does not * exist.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample ConfigAsyncClient.BatchGetAggregateResourceConfig * @see AWS API Documentation */ @Override public CompletableFuture batchGetAggregateResourceConfig( BatchGetAggregateResourceConfigRequest batchGetAggregateResourceConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(batchGetAggregateResourceConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, batchGetAggregateResourceConfigRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "BatchGetAggregateResourceConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, BatchGetAggregateResourceConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("BatchGetAggregateResourceConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new BatchGetAggregateResourceConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(batchGetAggregateResourceConfigRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Returns the BaseConfigurationItem for one or more requested resources. The operation also returns a * list of resources that are not processed in the current request. If there are no unprocessed resources, the * operation returns an empty unprocessedResourceKeys list. *

* *
    *
  • *

    * The API does not return results for deleted resources. *

    *
  • *
  • *

    * The API does not return any tags for the requested resources. This information is filtered out of the * supplementaryConfiguration section of the API response. *

    *
  • *
*
* * @param batchGetResourceConfigRequest * @return A Java Future containing the result of the BatchGetResourceConfig operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
    *
  • ValidationException The requested action is not valid.

    *

    * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

    *

    * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

  • *
  • NoAvailableConfigurationRecorderException There are no configuration recorders available to provide * the role needed to describe your resources. Create a configuration recorder.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample ConfigAsyncClient.BatchGetResourceConfig * @see AWS * API Documentation */ @Override public CompletableFuture batchGetResourceConfig( BatchGetResourceConfigRequest batchGetResourceConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(batchGetResourceConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, batchGetResourceConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "BatchGetResourceConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, BatchGetResourceConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("BatchGetResourceConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new BatchGetResourceConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(batchGetResourceConfigRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Deletes the authorization granted to the specified configuration aggregator account in a specified region. *

* * @param deleteAggregationAuthorizationRequest * @return A Java Future containing the result of the DeleteAggregationAuthorization operation returned by the * service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
    *
  • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
  • *
  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
  • *
  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
  • *
  • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
  • *
* @sample ConfigAsyncClient.DeleteAggregationAuthorization * @see AWS API Documentation */ @Override public CompletableFuture deleteAggregationAuthorization( DeleteAggregationAuthorizationRequest deleteAggregationAuthorizationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteAggregationAuthorizationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteAggregationAuthorizationRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteAggregationAuthorization"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteAggregationAuthorizationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteAggregationAuthorization").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteAggregationAuthorizationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteAggregationAuthorizationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

* Deletes the specified Config rule and all of its evaluation results. *

*

* Config sets the state of a rule to DELETING until the deletion is complete. You cannot update a rule * while it is in this state. If you make a PutConfigRule or DeleteConfigRule request for * the rule, you will receive a ResourceInUseException. *

*

* You can check the state of a rule by using the DescribeConfigRules request. *

* * @param deleteConfigRuleRequest * @return A Java Future containing the result of the DeleteConfigRule operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
    *
  • NoSuchConfigRuleException The Config rule in the request is not valid. Verify that the rule is an * Config Process Check rule, that the rule name is correct, and that valid Amazon Resouce Names (ARNs) are * used before trying again.
  • *
  • ResourceInUseException You see this exception in the following cases:

    *
      *
    • *

      * For DeleteConfigRule, Config is deleting this rule. Try your request again later. *

      *
    • *
    • *

      * For DeleteConfigRule, the rule is deleting your evaluation results. Try your request again later. *

      *
    • *
    • *

      * For DeleteConfigRule, a remediation action is associated with the rule and Config cannot delete this * rule. Delete the remediation action associated with the rule before deleting the rule and try your * request again later. *

      *
    • *
    • *

      * For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try your request again * later. *

      *
    • *
    • *

      * For DeleteOrganizationConfigRule, organization Config rule creation is in progress. Try your request * again later. *

      *
    • *
    • *

      * For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation, update, and * deletion is in progress. Try your request again later. *

      *
    • *
    • *

      * For DeleteConformancePack, a conformance pack creation, update, and deletion is in progress. Try your * request again later. *

      *
    • *
    • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
    • *
    • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
    • *
    • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
    • *
    * @sample ConfigAsyncClient.DeleteConfigRule * @see AWS API * Documentation */ @Override public CompletableFuture deleteConfigRule(DeleteConfigRuleRequest deleteConfigRuleRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteConfigRuleRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteConfigRuleRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteConfigRule"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteConfigRuleResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteConfigRule").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteConfigRuleRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteConfigRuleRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

    * Deletes the specified configuration aggregator and the aggregated data associated with the aggregator. *

    * * @param deleteConfigurationAggregatorRequest * @return A Java Future containing the result of the DeleteConfigurationAggregator operation returned by the * service.
    * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
      *
    • NoSuchConfigurationAggregatorException You have specified a configuration aggregator that does not * exist.
    • *
    • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
    • *
    • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
    • *
    • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
    • *
    * @sample ConfigAsyncClient.DeleteConfigurationAggregator * @see AWS API Documentation */ @Override public CompletableFuture deleteConfigurationAggregator( DeleteConfigurationAggregatorRequest deleteConfigurationAggregatorRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteConfigurationAggregatorRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteConfigurationAggregatorRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteConfigurationAggregator"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteConfigurationAggregatorResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteConfigurationAggregator").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteConfigurationAggregatorRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteConfigurationAggregatorRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

    * Deletes the configuration recorder. *

    *

    * After the configuration recorder is deleted, Config will not record resource configuration changes until you * create a new configuration recorder. *

    *

    * This action does not delete the configuration information that was previously recorded. You will be able to * access the previously recorded information by using the GetResourceConfigHistory action, but you * will not be able to access this information in the Config console until you create a new configuration recorder. *

    * * @param deleteConfigurationRecorderRequest * The request object for the DeleteConfigurationRecorder action. * @return A Java Future containing the result of the DeleteConfigurationRecorder operation returned by the service.
    * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
      *
    • NoSuchConfigurationRecorderException You have specified a configuration recorder that does not exist. *
    • *
    • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
    • *
    • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
    • *
    • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
    • *
    * @sample ConfigAsyncClient.DeleteConfigurationRecorder * @see AWS API Documentation */ @Override public CompletableFuture deleteConfigurationRecorder( DeleteConfigurationRecorderRequest deleteConfigurationRecorderRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteConfigurationRecorderRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteConfigurationRecorderRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteConfigurationRecorder"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteConfigurationRecorderResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteConfigurationRecorder").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteConfigurationRecorderRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteConfigurationRecorderRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

    * Deletes the specified conformance pack and all the Config rules, remediation actions, and all evaluation results * within that conformance pack. *

    *

    * Config sets the conformance pack to DELETE_IN_PROGRESS until the deletion is complete. You cannot * update a conformance pack while it is in this state. *

    * * @param deleteConformancePackRequest * @return A Java Future containing the result of the DeleteConformancePack operation returned by the service.
    * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
      *
    • NoSuchConformancePackException You specified one or more conformance packs that do not exist.
    • *
    • ResourceInUseException You see this exception in the following cases:

      *
        *
      • *

        * For DeleteConfigRule, Config is deleting this rule. Try your request again later. *

        *
      • *
      • *

        * For DeleteConfigRule, the rule is deleting your evaluation results. Try your request again later. *

        *
      • *
      • *

        * For DeleteConfigRule, a remediation action is associated with the rule and Config cannot delete this * rule. Delete the remediation action associated with the rule before deleting the rule and try your * request again later. *

        *
      • *
      • *

        * For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try your request again * later. *

        *
      • *
      • *

        * For DeleteOrganizationConfigRule, organization Config rule creation is in progress. Try your request * again later. *

        *
      • *
      • *

        * For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation, update, and * deletion is in progress. Try your request again later. *

        *
      • *
      • *

        * For DeleteConformancePack, a conformance pack creation, update, and deletion is in progress. Try your * request again later. *

        *
      • *
      • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
      • *
      • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
      • *
      • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
      • *
      * @sample ConfigAsyncClient.DeleteConformancePack * @see AWS * API Documentation */ @Override public CompletableFuture deleteConformancePack( DeleteConformancePackRequest deleteConformancePackRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteConformancePackRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteConformancePackRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteConformancePack"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteConformancePackResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteConformancePack").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteConformancePackRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteConformancePackRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

      * Deletes the delivery channel. *

      *

      * Before you can delete the delivery channel, you must stop the configuration recorder by using the * StopConfigurationRecorder action. *

      * * @param deleteDeliveryChannelRequest * The input for the DeleteDeliveryChannel action. The action accepts the following data, in JSON * format. * @return A Java Future containing the result of the DeleteDeliveryChannel operation returned by the service.
      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
        *
      • NoSuchDeliveryChannelException You have specified a delivery channel that does not exist.
      • *
      • LastDeliveryChannelDeleteFailedException You cannot delete the delivery channel you specified because * the configuration recorder is running.
      • *
      • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
      • *
      • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
      • *
      • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
      • *
      * @sample ConfigAsyncClient.DeleteDeliveryChannel * @see AWS * API Documentation */ @Override public CompletableFuture deleteDeliveryChannel( DeleteDeliveryChannelRequest deleteDeliveryChannelRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteDeliveryChannelRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteDeliveryChannelRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteDeliveryChannel"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteDeliveryChannelResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteDeliveryChannel").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteDeliveryChannelRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteDeliveryChannelRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

      * Deletes the evaluation results for the specified Config rule. You can specify one Config rule per request. After * you delete the evaluation results, you can call the StartConfigRulesEvaluation API to start evaluating * your Amazon Web Services resources against the rule. *

      * * @param deleteEvaluationResultsRequest * @return A Java Future containing the result of the DeleteEvaluationResults operation returned by the service.
      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
        *
      • NoSuchConfigRuleException The Config rule in the request is not valid. Verify that the rule is an * Config Process Check rule, that the rule name is correct, and that valid Amazon Resouce Names (ARNs) are * used before trying again.
      • *
      • ResourceInUseException You see this exception in the following cases:

        *
          *
        • *

          * For DeleteConfigRule, Config is deleting this rule. Try your request again later. *

          *
        • *
        • *

          * For DeleteConfigRule, the rule is deleting your evaluation results. Try your request again later. *

          *
        • *
        • *

          * For DeleteConfigRule, a remediation action is associated with the rule and Config cannot delete this * rule. Delete the remediation action associated with the rule before deleting the rule and try your * request again later. *

          *
        • *
        • *

          * For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try your request again * later. *

          *
        • *
        • *

          * For DeleteOrganizationConfigRule, organization Config rule creation is in progress. Try your request * again later. *

          *
        • *
        • *

          * For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation, update, and * deletion is in progress. Try your request again later. *

          *
        • *
        • *

          * For DeleteConformancePack, a conformance pack creation, update, and deletion is in progress. Try your * request again later. *

          *
        • *
        • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
        • *
        • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
        • *
        • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
        • *
        * @sample ConfigAsyncClient.DeleteEvaluationResults * @see AWS API Documentation */ @Override public CompletableFuture deleteEvaluationResults( DeleteEvaluationResultsRequest deleteEvaluationResultsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteEvaluationResultsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteEvaluationResultsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteEvaluationResults"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteEvaluationResultsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteEvaluationResults").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteEvaluationResultsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteEvaluationResultsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

        * Deletes the specified organization Config rule and all of its evaluation results from all member accounts in that * organization. *

        *

        * Only a management account and a delegated administrator account can delete an organization Config rule. When * calling this API with a delegated administrator, you must ensure Organizations * ListDelegatedAdministrator permissions are added. *

        *

        * Config sets the state of a rule to DELETE_IN_PROGRESS until the deletion is complete. You cannot update a rule * while it is in this state. *

        * * @param deleteOrganizationConfigRuleRequest * @return A Java Future containing the result of the DeleteOrganizationConfigRule operation returned by the * service.
        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
          *
        • NoSuchOrganizationConfigRuleException The Config rule in the request is not valid. Verify that the * rule is an organization Config Process Check rule, that the rule name is correct, and that valid Amazon * Resouce Names (ARNs) are used before trying again.
        • *
        • ResourceInUseException You see this exception in the following cases:

          *
            *
          • *

            * For DeleteConfigRule, Config is deleting this rule. Try your request again later. *

            *
          • *
          • *

            * For DeleteConfigRule, the rule is deleting your evaluation results. Try your request again later. *

            *
          • *
          • *

            * For DeleteConfigRule, a remediation action is associated with the rule and Config cannot delete this * rule. Delete the remediation action associated with the rule before deleting the rule and try your * request again later. *

            *
          • *
          • *

            * For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try your request again * later. *

            *
          • *
          • *

            * For DeleteOrganizationConfigRule, organization Config rule creation is in progress. Try your request * again later. *

            *
          • *
          • *

            * For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation, update, and * deletion is in progress. Try your request again later. *

            *
          • *
          • *

            * For DeleteConformancePack, a conformance pack creation, update, and deletion is in progress. Try your * request again later. *

            *
          • *
          • OrganizationAccessDeniedException For PutConfigurationAggregator API, you can see this * exception for the following reasons:

            *
              *
            • *

              * No permission to call EnableAWSServiceAccess API *

              *
            • *
            • *

              * The configuration aggregator cannot be updated because your Amazon Web Services Organization management * account or the delegated administrator role changed. Delete this aggregator and create a new one with the * current Amazon Web Services Organization. *

              *
            • *
            • *

              * The configuration aggregator is associated with a previous Amazon Web Services Organization and Config * cannot aggregate data with current Amazon Web Services Organization. Delete this aggregator and create a * new one with the current Amazon Web Services Organization. *

              *
            • *
            • *

              * You are not a registered delegated administrator for Config with permissions to call * ListDelegatedAdministrators API. Ensure that the management account registers delagated * administrator for Config service principle name before the delegated administrator creates an aggregator. *

              *
            • *
            *

            * For all OrganizationConfigRule and OrganizationConformancePack APIs, Config * throws an exception if APIs are called from member accounts. All APIs must be called from organization * management account.

          • *
          • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
          • *
          • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
          • *
          • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
          • *
          * @sample ConfigAsyncClient.DeleteOrganizationConfigRule * @see AWS API Documentation */ @Override public CompletableFuture deleteOrganizationConfigRule( DeleteOrganizationConfigRuleRequest deleteOrganizationConfigRuleRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteOrganizationConfigRuleRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteOrganizationConfigRuleRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteOrganizationConfigRule"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteOrganizationConfigRuleResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteOrganizationConfigRule").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteOrganizationConfigRuleRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteOrganizationConfigRuleRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

          * Deletes the specified organization conformance pack and all of the Config rules and remediation actions from all * member accounts in that organization. *

          *

          * Only a management account or a delegated administrator account can delete an organization conformance pack. When * calling this API with a delegated administrator, you must ensure Organizations * ListDelegatedAdministrator permissions are added. *

          *

          * Config sets the state of a conformance pack to DELETE_IN_PROGRESS until the deletion is complete. You cannot * update a conformance pack while it is in this state. *

          * * @param deleteOrganizationConformancePackRequest * @return A Java Future containing the result of the DeleteOrganizationConformancePack operation returned by the * service.
          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
            *
          • NoSuchOrganizationConformancePackException Config organization conformance pack that you passed in * the filter does not exist.

            *

            * For DeleteOrganizationConformancePack, you tried to delete an organization conformance pack that does not * exist.

          • *
          • ResourceInUseException You see this exception in the following cases:

            *
              *
            • *

              * For DeleteConfigRule, Config is deleting this rule. Try your request again later. *

              *
            • *
            • *

              * For DeleteConfigRule, the rule is deleting your evaluation results. Try your request again later. *

              *
            • *
            • *

              * For DeleteConfigRule, a remediation action is associated with the rule and Config cannot delete this * rule. Delete the remediation action associated with the rule before deleting the rule and try your * request again later. *

              *
            • *
            • *

              * For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try your request again * later. *

              *
            • *
            • *

              * For DeleteOrganizationConfigRule, organization Config rule creation is in progress. Try your request * again later. *

              *
            • *
            • *

              * For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation, update, and * deletion is in progress. Try your request again later. *

              *
            • *
            • *

              * For DeleteConformancePack, a conformance pack creation, update, and deletion is in progress. Try your * request again later. *

              *
            • *
            • OrganizationAccessDeniedException For PutConfigurationAggregator API, you can see this * exception for the following reasons:

              *
                *
              • *

                * No permission to call EnableAWSServiceAccess API *

                *
              • *
              • *

                * The configuration aggregator cannot be updated because your Amazon Web Services Organization management * account or the delegated administrator role changed. Delete this aggregator and create a new one with the * current Amazon Web Services Organization. *

                *
              • *
              • *

                * The configuration aggregator is associated with a previous Amazon Web Services Organization and Config * cannot aggregate data with current Amazon Web Services Organization. Delete this aggregator and create a * new one with the current Amazon Web Services Organization. *

                *
              • *
              • *

                * You are not a registered delegated administrator for Config with permissions to call * ListDelegatedAdministrators API. Ensure that the management account registers delagated * administrator for Config service principle name before the delegated administrator creates an aggregator. *

                *
              • *
              *

              * For all OrganizationConfigRule and OrganizationConformancePack APIs, Config * throws an exception if APIs are called from member accounts. All APIs must be called from organization * management account.

            • *
            • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
            • *
            • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
            • *
            • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
            • *
            * @sample ConfigAsyncClient.DeleteOrganizationConformancePack * @see AWS API Documentation */ @Override public CompletableFuture deleteOrganizationConformancePack( DeleteOrganizationConformancePackRequest deleteOrganizationConformancePackRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteOrganizationConformancePackRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteOrganizationConformancePackRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteOrganizationConformancePack"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DeleteOrganizationConformancePackResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteOrganizationConformancePack").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteOrganizationConformancePackRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteOrganizationConformancePackRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

            * Deletes pending authorization requests for a specified aggregator account in a specified region. *

            * * @param deletePendingAggregationRequestRequest * @return A Java Future containing the result of the DeletePendingAggregationRequest operation returned by the * service.
            * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
              *
            • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
            • *
            • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
            • *
            • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
            • *
            • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
            • *
            * @sample ConfigAsyncClient.DeletePendingAggregationRequest * @see AWS API Documentation */ @Override public CompletableFuture deletePendingAggregationRequest( DeletePendingAggregationRequestRequest deletePendingAggregationRequestRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deletePendingAggregationRequestRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deletePendingAggregationRequestRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeletePendingAggregationRequest"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeletePendingAggregationRequestResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeletePendingAggregationRequest").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeletePendingAggregationRequestRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deletePendingAggregationRequestRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

            * Deletes the remediation configuration. *

            * * @param deleteRemediationConfigurationRequest * @return A Java Future containing the result of the DeleteRemediationConfiguration operation returned by the * service.
            * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
              *
            • NoSuchRemediationConfigurationException You specified an Config rule without a remediation * configuration.
            • *
            • RemediationInProgressException Remediation action is in progress. You can either cancel execution in * Amazon Web Services Systems Manager or wait and try again later.
            • *
            • InsufficientPermissionsException Indicates one of the following errors:

              *
                *
              • *

                * For PutConfigRule, the rule cannot be created because the IAM role assigned to Config lacks permissions * to perform the config:Put* action. *

                *
              • *
              • *

                * For PutConfigRule, the Lambda function cannot be invoked. Check the function ARN, and check the * function's permissions. *

                *
              • *
              • *

                * For PutOrganizationConfigRule, organization Config rule cannot be created because you do not have * permissions to call IAM GetRole action or create a service-linked role. *

                *
              • *
              • *

                * For PutConformancePack and PutOrganizationConformancePack, a conformance pack cannot be created because * you do not have the following permissions: *

                *
                  *
                • *

                  * You do not have permission to call IAM GetRole action or create a service-linked role. *

                  *
                • *
                • *

                  * You do not have permission to read Amazon S3 bucket or call SSM:GetDocument. *

                  *
                • *
                *
              • *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DeleteRemediationConfiguration * @see AWS API Documentation */ @Override public CompletableFuture deleteRemediationConfiguration( DeleteRemediationConfigurationRequest deleteRemediationConfigurationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteRemediationConfigurationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteRemediationConfigurationRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteRemediationConfiguration"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteRemediationConfigurationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteRemediationConfiguration").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteRemediationConfigurationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteRemediationConfigurationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Deletes one or more remediation exceptions mentioned in the resource keys. *

              * *

              * Config generates a remediation exception when a problem occurs executing a remediation action to a specific * resource. Remediation exceptions blocks auto-remediation until the exception is cleared. *

              *
              * * @param deleteRemediationExceptionsRequest * @return A Java Future containing the result of the DeleteRemediationExceptions operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • NoSuchRemediationExceptionException You tried to delete a remediation exception that does not exist.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DeleteRemediationExceptions * @see AWS API Documentation */ @Override public CompletableFuture deleteRemediationExceptions( DeleteRemediationExceptionsRequest deleteRemediationExceptionsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteRemediationExceptionsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteRemediationExceptionsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteRemediationExceptions"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteRemediationExceptionsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteRemediationExceptions").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteRemediationExceptionsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteRemediationExceptionsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Records the configuration state for a custom resource that has been deleted. This API records a new * ConfigurationItem with a ResourceDeleted status. You can retrieve the ConfigurationItems recorded for this * resource in your Config History. *

              * * @param deleteResourceConfigRequest * @return A Java Future containing the result of the DeleteResourceConfig operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • ValidationException The requested action is not valid.

                *

                * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                *

                * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

              • *
              • NoRunningConfigurationRecorderException There is no configuration recorder running.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DeleteResourceConfig * @see AWS * API Documentation */ @Override public CompletableFuture deleteResourceConfig( DeleteResourceConfigRequest deleteResourceConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteResourceConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteResourceConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteResourceConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteResourceConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteResourceConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteResourceConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteResourceConfigRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Deletes the retention configuration. *

              * * @param deleteRetentionConfigurationRequest * @return A Java Future containing the result of the DeleteRetentionConfiguration operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • NoSuchRetentionConfigurationException You have specified a retention configuration that does not * exist.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DeleteRetentionConfiguration * @see AWS API Documentation */ @Override public CompletableFuture deleteRetentionConfiguration( DeleteRetentionConfigurationRequest deleteRetentionConfigurationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteRetentionConfigurationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteRetentionConfigurationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteRetentionConfiguration"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteRetentionConfigurationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteRetentionConfiguration").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteRetentionConfigurationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteRetentionConfigurationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Deletes the stored query for a single Amazon Web Services account and a single Amazon Web Services Region. *

              * * @param deleteStoredQueryRequest * @return A Java Future containing the result of the DeleteStoredQuery operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • ValidationException The requested action is not valid.

                *

                * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                *

                * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

              • *
              • ResourceNotFoundException You have specified a resource that does not exist.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DeleteStoredQuery * @see AWS API * Documentation */ @Override public CompletableFuture deleteStoredQuery(DeleteStoredQueryRequest deleteStoredQueryRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deleteStoredQueryRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteStoredQueryRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteStoredQuery"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteStoredQueryResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteStoredQuery").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeleteStoredQueryRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deleteStoredQueryRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Schedules delivery of a configuration snapshot to the Amazon S3 bucket in the specified delivery channel. After * the delivery has started, Config sends the following notifications using an Amazon SNS topic that you have * specified. *

              *
                *
              • *

                * Notification of the start of the delivery. *

                *
              • *
              • *

                * Notification of the completion of the delivery, if the delivery was successfully completed. *

                *
              • *
              • *

                * Notification of delivery failure, if the delivery failed. *

                *
              • *
              * * @param deliverConfigSnapshotRequest * The input for the DeliverConfigSnapshot action. * @return A Java Future containing the result of the DeliverConfigSnapshot operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • NoSuchDeliveryChannelException You have specified a delivery channel that does not exist.
              • *
              • NoAvailableConfigurationRecorderException There are no configuration recorders available to provide * the role needed to describe your resources. Create a configuration recorder.
              • *
              • NoRunningConfigurationRecorderException There is no configuration recorder running.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DeliverConfigSnapshot * @see AWS * API Documentation */ @Override public CompletableFuture deliverConfigSnapshot( DeliverConfigSnapshotRequest deliverConfigSnapshotRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(deliverConfigSnapshotRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, deliverConfigSnapshotRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeliverConfigSnapshot"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeliverConfigSnapshotResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeliverConfigSnapshot").withProtocolMetadata(protocolMetadata) .withMarshaller(new DeliverConfigSnapshotRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(deliverConfigSnapshotRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns a list of compliant and noncompliant rules with the number of resources for compliant and noncompliant * rules. Does not display rules that do not have compliance results. *

              * *

              * The results can return an empty result page, but if you have a nextToken, the results are displayed * on the next page. *

              *
              * * @param describeAggregateComplianceByConfigRulesRequest * @return A Java Future containing the result of the DescribeAggregateComplianceByConfigRules operation returned by * the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • ValidationException The requested action is not valid.

                *

                * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                *

                * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • NoSuchConfigurationAggregatorException You have specified a configuration aggregator that does not * exist.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeAggregateComplianceByConfigRules * @see AWS API Documentation */ @Override public CompletableFuture describeAggregateComplianceByConfigRules( DescribeAggregateComplianceByConfigRulesRequest describeAggregateComplianceByConfigRulesRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration( describeAggregateComplianceByConfigRulesRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeAggregateComplianceByConfigRulesRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeAggregateComplianceByConfigRules"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DescribeAggregateComplianceByConfigRulesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeAggregateComplianceByConfigRules").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeAggregateComplianceByConfigRulesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeAggregateComplianceByConfigRulesRequest)); CompletableFuture whenCompleted = executeFuture .whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns a list of the conformance packs and their associated compliance status with the count of compliant and * noncompliant Config rules within each conformance pack. Also returns the total rule count which includes * compliant rules, noncompliant rules, and rules that cannot be evaluated due to insufficient data. *

              * *

              * The results can return an empty result page, but if you have a nextToken, the results are displayed * on the next page. *

              *
              * * @param describeAggregateComplianceByConformancePacksRequest * @return A Java Future containing the result of the DescribeAggregateComplianceByConformancePacks operation * returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • ValidationException The requested action is not valid.

                *

                * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                *

                * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • NoSuchConfigurationAggregatorException You have specified a configuration aggregator that does not * exist.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeAggregateComplianceByConformancePacks * @see AWS API Documentation */ @Override public CompletableFuture describeAggregateComplianceByConformancePacks( DescribeAggregateComplianceByConformancePacksRequest describeAggregateComplianceByConformancePacksRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration( describeAggregateComplianceByConformancePacksRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeAggregateComplianceByConformancePacksRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeAggregateComplianceByConformancePacks"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DescribeAggregateComplianceByConformancePacksResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeAggregateComplianceByConformancePacks") .withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeAggregateComplianceByConformancePacksRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeAggregateComplianceByConformancePacksRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete(( r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns a list of authorizations granted to various aggregator accounts and regions. *

              * * @param describeAggregationAuthorizationsRequest * @return A Java Future containing the result of the DescribeAggregationAuthorizations operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeAggregationAuthorizations * @see AWS API Documentation */ @Override public CompletableFuture describeAggregationAuthorizations( DescribeAggregationAuthorizationsRequest describeAggregationAuthorizationsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeAggregationAuthorizationsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeAggregationAuthorizationsRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeAggregationAuthorizations"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DescribeAggregationAuthorizationsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeAggregationAuthorizations").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeAggregationAuthorizationsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeAggregationAuthorizationsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Indicates whether the specified Config rules are compliant. If a rule is noncompliant, this action returns the * number of Amazon Web Services resources that do not comply with the rule. *

              *

              * A rule is compliant if all of the evaluated resources comply with it. It is noncompliant if any of these * resources do not comply. *

              *

              * If Config has no current evaluation results for the rule, it returns INSUFFICIENT_DATA. This result * might indicate one of the following conditions: *

              *
                *
              • *

                * Config has never invoked an evaluation for the rule. To check whether it has, use the * DescribeConfigRuleEvaluationStatus action to get the LastSuccessfulInvocationTime and * LastFailedInvocationTime. *

                *
              • *
              • *

                * The rule's Lambda function is failing to send evaluation results to Config. Verify that the role you assigned to * your configuration recorder includes the config:PutEvaluations permission. If the rule is a custom * rule, verify that the Lambda execution role includes the config:PutEvaluations permission. *

                *
              • *
              • *

                * The rule's Lambda function has returned NOT_APPLICABLE for all evaluation results. This can occur if * the resources were deleted or removed from the rule's scope. *

                *
              • *
              * * @param describeComplianceByConfigRuleRequest * @return A Java Future containing the result of the DescribeComplianceByConfigRule operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • NoSuchConfigRuleException The Config rule in the request is not valid. Verify that the rule is an * Config Process Check rule, that the rule name is correct, and that valid Amazon Resouce Names (ARNs) are * used before trying again.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeComplianceByConfigRule * @see AWS API Documentation */ @Override public CompletableFuture describeComplianceByConfigRule( DescribeComplianceByConfigRuleRequest describeComplianceByConfigRuleRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeComplianceByConfigRuleRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeComplianceByConfigRuleRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeComplianceByConfigRule"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeComplianceByConfigRuleResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeComplianceByConfigRule").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeComplianceByConfigRuleRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeComplianceByConfigRuleRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Indicates whether the specified Amazon Web Services resources are compliant. If a resource is noncompliant, this * action returns the number of Config rules that the resource does not comply with. *

              *

              * A resource is compliant if it complies with all the Config rules that evaluate it. It is noncompliant if it does * not comply with one or more of these rules. *

              *

              * If Config has no current evaluation results for the resource, it returns INSUFFICIENT_DATA. This * result might indicate one of the following conditions about the rules that evaluate the resource: *

              *
                *
              • *

                * Config has never invoked an evaluation for the rule. To check whether it has, use the * DescribeConfigRuleEvaluationStatus action to get the LastSuccessfulInvocationTime and * LastFailedInvocationTime. *

                *
              • *
              • *

                * The rule's Lambda function is failing to send evaluation results to Config. Verify that the role that you * assigned to your configuration recorder includes the config:PutEvaluations permission. If the rule * is a custom rule, verify that the Lambda execution role includes the config:PutEvaluations * permission. *

                *
              • *
              • *

                * The rule's Lambda function has returned NOT_APPLICABLE for all evaluation results. This can occur if * the resources were deleted or removed from the rule's scope. *

                *
              • *
              * * @param describeComplianceByResourceRequest * @return A Java Future containing the result of the DescribeComplianceByResource operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeComplianceByResource * @see AWS API Documentation */ @Override public CompletableFuture describeComplianceByResource( DescribeComplianceByResourceRequest describeComplianceByResourceRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeComplianceByResourceRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeComplianceByResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeComplianceByResource"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeComplianceByResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeComplianceByResource").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeComplianceByResourceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeComplianceByResourceRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns status information for each of your Config managed rules. The status includes information such as the * last time Config invoked the rule, the last time Config failed to invoke the rule, and the related error for the * last failure. *

              * * @param describeConfigRuleEvaluationStatusRequest * @return A Java Future containing the result of the DescribeConfigRuleEvaluationStatus operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • NoSuchConfigRuleException The Config rule in the request is not valid. Verify that the rule is an * Config Process Check rule, that the rule name is correct, and that valid Amazon Resouce Names (ARNs) are * used before trying again.
              • *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeConfigRuleEvaluationStatus * @see AWS API Documentation */ @Override public CompletableFuture describeConfigRuleEvaluationStatus( DescribeConfigRuleEvaluationStatusRequest describeConfigRuleEvaluationStatusRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeConfigRuleEvaluationStatusRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeConfigRuleEvaluationStatusRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeConfigRuleEvaluationStatus"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DescribeConfigRuleEvaluationStatusResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeConfigRuleEvaluationStatus").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeConfigRuleEvaluationStatusRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeConfigRuleEvaluationStatusRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns details about your Config rules. *

              * * @param describeConfigRulesRequest * @return A Java Future containing the result of the DescribeConfigRules operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • NoSuchConfigRuleException The Config rule in the request is not valid. Verify that the rule is an * Config Process Check rule, that the rule name is correct, and that valid Amazon Resouce Names (ARNs) are * used before trying again.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeConfigRules * @see AWS * API Documentation */ @Override public CompletableFuture describeConfigRules( DescribeConfigRulesRequest describeConfigRulesRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeConfigRulesRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeConfigRulesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeConfigRules"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeConfigRulesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeConfigRules").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeConfigRulesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeConfigRulesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns status information for sources within an aggregator. The status includes information about the last time * Config verified authorization between the source account and an aggregator account. In case of a failure, the * status contains the related error code or message. *

              * * @param describeConfigurationAggregatorSourcesStatusRequest * @return A Java Future containing the result of the DescribeConfigurationAggregatorSourcesStatus operation * returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • NoSuchConfigurationAggregatorException You have specified a configuration aggregator that does not * exist.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeConfigurationAggregatorSourcesStatus * @see AWS API Documentation */ @Override public CompletableFuture describeConfigurationAggregatorSourcesStatus( DescribeConfigurationAggregatorSourcesStatusRequest describeConfigurationAggregatorSourcesStatusRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration( describeConfigurationAggregatorSourcesStatusRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeConfigurationAggregatorSourcesStatusRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeConfigurationAggregatorSourcesStatus"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DescribeConfigurationAggregatorSourcesStatusResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeConfigurationAggregatorSourcesStatus") .withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeConfigurationAggregatorSourcesStatusRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeConfigurationAggregatorSourcesStatusRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete(( r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns the details of one or more configuration aggregators. If the configuration aggregator is not specified, * this action returns the details for all the configuration aggregators associated with the account. *

              * * @param describeConfigurationAggregatorsRequest * @return A Java Future containing the result of the DescribeConfigurationAggregators operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • NoSuchConfigurationAggregatorException You have specified a configuration aggregator that does not * exist.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeConfigurationAggregators * @see AWS API Documentation */ @Override public CompletableFuture describeConfigurationAggregators( DescribeConfigurationAggregatorsRequest describeConfigurationAggregatorsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeConfigurationAggregatorsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeConfigurationAggregatorsRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeConfigurationAggregators"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DescribeConfigurationAggregatorsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeConfigurationAggregators").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeConfigurationAggregatorsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeConfigurationAggregatorsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns the current status of the specified configuration recorder as well as the status of the last recording * event for the recorder. If a configuration recorder is not specified, this action returns the status of all * configuration recorders associated with the account. *

              * *

              * >You can specify only one configuration recorder for each Amazon Web Services Region for each account. For a * detailed status of recording events over time, add your Config events to Amazon CloudWatch metrics and use * CloudWatch metrics. *

              *
              * * @param describeConfigurationRecorderStatusRequest * The input for the DescribeConfigurationRecorderStatus action. * @return A Java Future containing the result of the DescribeConfigurationRecorderStatus operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • NoSuchConfigurationRecorderException You have specified a configuration recorder that does not exist. *
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeConfigurationRecorderStatus * @see AWS API Documentation */ @Override public CompletableFuture describeConfigurationRecorderStatus( DescribeConfigurationRecorderStatusRequest describeConfigurationRecorderStatusRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeConfigurationRecorderStatusRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeConfigurationRecorderStatusRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeConfigurationRecorderStatus"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DescribeConfigurationRecorderStatusResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeConfigurationRecorderStatus").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeConfigurationRecorderStatusRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeConfigurationRecorderStatusRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns the details for the specified configuration recorders. If the configuration recorder is not specified, * this action returns the details for all configuration recorders associated with the account. *

              * *

              * You can specify only one configuration recorder for each Amazon Web Services Region for each account. *

              *
              * * @param describeConfigurationRecordersRequest * The input for the DescribeConfigurationRecorders action. * @return A Java Future containing the result of the DescribeConfigurationRecorders operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • NoSuchConfigurationRecorderException You have specified a configuration recorder that does not exist. *
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeConfigurationRecorders * @see AWS API Documentation */ @Override public CompletableFuture describeConfigurationRecorders( DescribeConfigurationRecordersRequest describeConfigurationRecordersRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeConfigurationRecordersRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeConfigurationRecordersRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeConfigurationRecorders"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeConfigurationRecordersResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeConfigurationRecorders").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeConfigurationRecordersRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeConfigurationRecordersRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns compliance details for each rule in that conformance pack. *

              * *

              * You must provide exact rule names. *

              *
              * * @param describeConformancePackComplianceRequest * @return A Java Future containing the result of the DescribeConformancePackCompliance operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • NoSuchConfigRuleInConformancePackException Config rule that you passed in the filter does not exist.
              • *
              • NoSuchConformancePackException You specified one or more conformance packs that do not exist.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeConformancePackCompliance * @see AWS API Documentation */ @Override public CompletableFuture describeConformancePackCompliance( DescribeConformancePackComplianceRequest describeConformancePackComplianceRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeConformancePackComplianceRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeConformancePackComplianceRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeConformancePackCompliance"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DescribeConformancePackComplianceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeConformancePackCompliance").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeConformancePackComplianceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeConformancePackComplianceRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Provides one or more conformance packs deployment status. *

              * *

              * If there are no conformance packs then you will see an empty result. *

              *
              * * @param describeConformancePackStatusRequest * @return A Java Future containing the result of the DescribeConformancePackStatus operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeConformancePackStatus * @see AWS API Documentation */ @Override public CompletableFuture describeConformancePackStatus( DescribeConformancePackStatusRequest describeConformancePackStatusRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeConformancePackStatusRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeConformancePackStatusRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeConformancePackStatus"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeConformancePackStatusResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeConformancePackStatus").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeConformancePackStatusRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeConformancePackStatusRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns a list of one or more conformance packs. *

              * * @param describeConformancePacksRequest * @return A Java Future containing the result of the DescribeConformancePacks operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • NoSuchConformancePackException You specified one or more conformance packs that do not exist.
              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeConformancePacks * @see AWS API Documentation */ @Override public CompletableFuture describeConformancePacks( DescribeConformancePacksRequest describeConformancePacksRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeConformancePacksRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeConformancePacksRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeConformancePacks"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeConformancePacksResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeConformancePacks").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeConformancePacksRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeConformancePacksRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns the current status of the specified delivery channel. If a delivery channel is not specified, this action * returns the current status of all delivery channels associated with the account. *

              * *

              * Currently, you can specify only one delivery channel per region in your account. *

              *
              * * @param describeDeliveryChannelStatusRequest * The input for the DeliveryChannelStatus action. * @return A Java Future containing the result of the DescribeDeliveryChannelStatus operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • NoSuchDeliveryChannelException You have specified a delivery channel that does not exist.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeDeliveryChannelStatus * @see AWS API Documentation */ @Override public CompletableFuture describeDeliveryChannelStatus( DescribeDeliveryChannelStatusRequest describeDeliveryChannelStatusRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeDeliveryChannelStatusRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeDeliveryChannelStatusRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeDeliveryChannelStatus"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeDeliveryChannelStatusResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeDeliveryChannelStatus").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeDeliveryChannelStatusRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeDeliveryChannelStatusRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns details about the specified delivery channel. If a delivery channel is not specified, this action returns * the details of all delivery channels associated with the account. *

              * *

              * Currently, you can specify only one delivery channel per region in your account. *

              *
              * * @param describeDeliveryChannelsRequest * The input for the DescribeDeliveryChannels action. * @return A Java Future containing the result of the DescribeDeliveryChannels operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • NoSuchDeliveryChannelException You have specified a delivery channel that does not exist.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeDeliveryChannels * @see AWS API Documentation */ @Override public CompletableFuture describeDeliveryChannels( DescribeDeliveryChannelsRequest describeDeliveryChannelsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeDeliveryChannelsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeDeliveryChannelsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeDeliveryChannels"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeDeliveryChannelsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeDeliveryChannels").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeDeliveryChannelsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeDeliveryChannelsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Provides organization Config rule deployment status for an organization. *

              * *

              * The status is not considered successful until organization Config rule is successfully deployed in all the member * accounts with an exception of excluded accounts. *

              *

              * When you specify the limit and the next token, you receive a paginated response. Limit and next token are not * applicable if you specify organization Config rule names. It is only applicable, when you request all the * organization Config rules. *

              *
              * * @param describeOrganizationConfigRuleStatusesRequest * @return A Java Future containing the result of the DescribeOrganizationConfigRuleStatuses operation returned by * the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • NoSuchOrganizationConfigRuleException The Config rule in the request is not valid. Verify that the * rule is an organization Config Process Check rule, that the rule name is correct, and that valid Amazon * Resouce Names (ARNs) are used before trying again.
              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • OrganizationAccessDeniedException For PutConfigurationAggregator API, you can see this * exception for the following reasons:

                *
                  *
                • *

                  * No permission to call EnableAWSServiceAccess API *

                  *
                • *
                • *

                  * The configuration aggregator cannot be updated because your Amazon Web Services Organization management * account or the delegated administrator role changed. Delete this aggregator and create a new one with the * current Amazon Web Services Organization. *

                  *
                • *
                • *

                  * The configuration aggregator is associated with a previous Amazon Web Services Organization and Config * cannot aggregate data with current Amazon Web Services Organization. Delete this aggregator and create a * new one with the current Amazon Web Services Organization. *

                  *
                • *
                • *

                  * You are not a registered delegated administrator for Config with permissions to call * ListDelegatedAdministrators API. Ensure that the management account registers delagated * administrator for Config service principle name before the delegated administrator creates an aggregator. *

                  *
                • *
                *

                * For all OrganizationConfigRule and OrganizationConformancePack APIs, Config * throws an exception if APIs are called from member accounts. All APIs must be called from organization * management account.

              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeOrganizationConfigRuleStatuses * @see AWS API Documentation */ @Override public CompletableFuture describeOrganizationConfigRuleStatuses( DescribeOrganizationConfigRuleStatusesRequest describeOrganizationConfigRuleStatusesRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeOrganizationConfigRuleStatusesRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeOrganizationConfigRuleStatusesRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeOrganizationConfigRuleStatuses"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DescribeOrganizationConfigRuleStatusesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeOrganizationConfigRuleStatuses").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeOrganizationConfigRuleStatusesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeOrganizationConfigRuleStatusesRequest)); CompletableFuture whenCompleted = executeFuture .whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns a list of organization Config rules. *

              * *

              * When you specify the limit and the next token, you receive a paginated response. *

              *

              * Limit and next token are not applicable if you specify organization Config rule names. It is only applicable, * when you request all the organization Config rules. *

              *

              * For accounts within an organization *

              *

              * If you deploy an organizational rule or conformance pack in an organization administrator account, and then * establish a delegated administrator and deploy an organizational rule or conformance pack in the delegated * administrator account, you won't be able to see the organizational rule or conformance pack in the organization * administrator account from the delegated administrator account or see the organizational rule or conformance pack * in the delegated administrator account from organization administrator account. The * DescribeOrganizationConfigRules and DescribeOrganizationConformancePacks APIs can only * see and interact with the organization-related resource that were deployed from within the account calling those * APIs. *

              *
              * * @param describeOrganizationConfigRulesRequest * @return A Java Future containing the result of the DescribeOrganizationConfigRules operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • NoSuchOrganizationConfigRuleException The Config rule in the request is not valid. Verify that the * rule is an organization Config Process Check rule, that the rule name is correct, and that valid Amazon * Resouce Names (ARNs) are used before trying again.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • OrganizationAccessDeniedException For PutConfigurationAggregator API, you can see this * exception for the following reasons:

                *
                  *
                • *

                  * No permission to call EnableAWSServiceAccess API *

                  *
                • *
                • *

                  * The configuration aggregator cannot be updated because your Amazon Web Services Organization management * account or the delegated administrator role changed. Delete this aggregator and create a new one with the * current Amazon Web Services Organization. *

                  *
                • *
                • *

                  * The configuration aggregator is associated with a previous Amazon Web Services Organization and Config * cannot aggregate data with current Amazon Web Services Organization. Delete this aggregator and create a * new one with the current Amazon Web Services Organization. *

                  *
                • *
                • *

                  * You are not a registered delegated administrator for Config with permissions to call * ListDelegatedAdministrators API. Ensure that the management account registers delagated * administrator for Config service principle name before the delegated administrator creates an aggregator. *

                  *
                • *
                *

                * For all OrganizationConfigRule and OrganizationConformancePack APIs, Config * throws an exception if APIs are called from member accounts. All APIs must be called from organization * management account.

              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeOrganizationConfigRules * @see AWS API Documentation */ @Override public CompletableFuture describeOrganizationConfigRules( DescribeOrganizationConfigRulesRequest describeOrganizationConfigRulesRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeOrganizationConfigRulesRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeOrganizationConfigRulesRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeOrganizationConfigRules"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeOrganizationConfigRulesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeOrganizationConfigRules").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeOrganizationConfigRulesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeOrganizationConfigRulesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Provides organization conformance pack deployment status for an organization. *

              * *

              * The status is not considered successful until organization conformance pack is successfully deployed in all the * member accounts with an exception of excluded accounts. *

              *

              * When you specify the limit and the next token, you receive a paginated response. Limit and next token are not * applicable if you specify organization conformance pack names. They are only applicable, when you request all the * organization conformance packs. *

              *
              * * @param describeOrganizationConformancePackStatusesRequest * @return A Java Future containing the result of the DescribeOrganizationConformancePackStatuses operation returned * by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • NoSuchOrganizationConformancePackException Config organization conformance pack that you passed in * the filter does not exist.

                *

                * For DeleteOrganizationConformancePack, you tried to delete an organization conformance pack that does not * exist.

              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • OrganizationAccessDeniedException For PutConfigurationAggregator API, you can see this * exception for the following reasons:

                *
                  *
                • *

                  * No permission to call EnableAWSServiceAccess API *

                  *
                • *
                • *

                  * The configuration aggregator cannot be updated because your Amazon Web Services Organization management * account or the delegated administrator role changed. Delete this aggregator and create a new one with the * current Amazon Web Services Organization. *

                  *
                • *
                • *

                  * The configuration aggregator is associated with a previous Amazon Web Services Organization and Config * cannot aggregate data with current Amazon Web Services Organization. Delete this aggregator and create a * new one with the current Amazon Web Services Organization. *

                  *
                • *
                • *

                  * You are not a registered delegated administrator for Config with permissions to call * ListDelegatedAdministrators API. Ensure that the management account registers delagated * administrator for Config service principle name before the delegated administrator creates an aggregator. *

                  *
                • *
                *

                * For all OrganizationConfigRule and OrganizationConformancePack APIs, Config * throws an exception if APIs are called from member accounts. All APIs must be called from organization * management account.

              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeOrganizationConformancePackStatuses * @see AWS API Documentation */ @Override public CompletableFuture describeOrganizationConformancePackStatuses( DescribeOrganizationConformancePackStatusesRequest describeOrganizationConformancePackStatusesRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration( describeOrganizationConformancePackStatusesRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeOrganizationConformancePackStatusesRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeOrganizationConformancePackStatuses"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DescribeOrganizationConformancePackStatusesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeOrganizationConformancePackStatuses") .withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeOrganizationConformancePackStatusesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeOrganizationConformancePackStatusesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns a list of organization conformance packs. *

              * *

              * When you specify the limit and the next token, you receive a paginated response. *

              *

              * Limit and next token are not applicable if you specify organization conformance packs names. They are only * applicable, when you request all the organization conformance packs. *

              *

              * For accounts within an organization *

              *

              * If you deploy an organizational rule or conformance pack in an organization administrator account, and then * establish a delegated administrator and deploy an organizational rule or conformance pack in the delegated * administrator account, you won't be able to see the organizational rule or conformance pack in the organization * administrator account from the delegated administrator account or see the organizational rule or conformance pack * in the delegated administrator account from organization administrator account. The * DescribeOrganizationConfigRules and DescribeOrganizationConformancePacks APIs can only * see and interact with the organization-related resource that were deployed from within the account calling those * APIs. *

              *
              * * @param describeOrganizationConformancePacksRequest * @return A Java Future containing the result of the DescribeOrganizationConformancePacks operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • NoSuchOrganizationConformancePackException Config organization conformance pack that you passed in * the filter does not exist.

                *

                * For DeleteOrganizationConformancePack, you tried to delete an organization conformance pack that does not * exist.

              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • OrganizationAccessDeniedException For PutConfigurationAggregator API, you can see this * exception for the following reasons:

                *
                  *
                • *

                  * No permission to call EnableAWSServiceAccess API *

                  *
                • *
                • *

                  * The configuration aggregator cannot be updated because your Amazon Web Services Organization management * account or the delegated administrator role changed. Delete this aggregator and create a new one with the * current Amazon Web Services Organization. *

                  *
                • *
                • *

                  * The configuration aggregator is associated with a previous Amazon Web Services Organization and Config * cannot aggregate data with current Amazon Web Services Organization. Delete this aggregator and create a * new one with the current Amazon Web Services Organization. *

                  *
                • *
                • *

                  * You are not a registered delegated administrator for Config with permissions to call * ListDelegatedAdministrators API. Ensure that the management account registers delagated * administrator for Config service principle name before the delegated administrator creates an aggregator. *

                  *
                • *
                *

                * For all OrganizationConfigRule and OrganizationConformancePack APIs, Config * throws an exception if APIs are called from member accounts. All APIs must be called from organization * management account.

              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeOrganizationConformancePacks * @see AWS API Documentation */ @Override public CompletableFuture describeOrganizationConformancePacks( DescribeOrganizationConformancePacksRequest describeOrganizationConformancePacksRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeOrganizationConformancePacksRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeOrganizationConformancePacksRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeOrganizationConformancePacks"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DescribeOrganizationConformancePacksResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeOrganizationConformancePacks").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeOrganizationConformancePacksRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeOrganizationConformancePacksRequest)); CompletableFuture whenCompleted = executeFuture .whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns a list of all pending aggregation requests. *

              * * @param describePendingAggregationRequestsRequest * @return A Java Future containing the result of the DescribePendingAggregationRequests operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribePendingAggregationRequests * @see AWS API Documentation */ @Override public CompletableFuture describePendingAggregationRequests( DescribePendingAggregationRequestsRequest describePendingAggregationRequestsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describePendingAggregationRequestsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describePendingAggregationRequestsRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribePendingAggregationRequests"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DescribePendingAggregationRequestsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribePendingAggregationRequests").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribePendingAggregationRequestsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describePendingAggregationRequestsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns the details of one or more remediation configurations. *

              * * @param describeRemediationConfigurationsRequest * @return A Java Future containing the result of the DescribeRemediationConfigurations operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeRemediationConfigurations * @see AWS API Documentation */ @Override public CompletableFuture describeRemediationConfigurations( DescribeRemediationConfigurationsRequest describeRemediationConfigurationsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeRemediationConfigurationsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeRemediationConfigurationsRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeRemediationConfigurations"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DescribeRemediationConfigurationsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeRemediationConfigurations").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeRemediationConfigurationsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeRemediationConfigurationsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns the details of one or more remediation exceptions. A detailed view of a remediation exception for a set * of resources that includes an explanation of an exception and the time when the exception will be deleted. When * you specify the limit and the next token, you receive a paginated response. *

              * *

              * Config generates a remediation exception when a problem occurs executing a remediation action to a specific * resource. Remediation exceptions blocks auto-remediation until the exception is cleared. *

              *

              * When you specify the limit and the next token, you receive a paginated response. *

              *

              * Limit and next token are not applicable if you request resources in batch. It is only applicable, when you * request all resources. *

              *
              * * @param describeRemediationExceptionsRequest * @return A Java Future containing the result of the DescribeRemediationExceptions operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeRemediationExceptions * @see AWS API Documentation */ @Override public CompletableFuture describeRemediationExceptions( DescribeRemediationExceptionsRequest describeRemediationExceptionsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeRemediationExceptionsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeRemediationExceptionsRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeRemediationExceptions"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeRemediationExceptionsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeRemediationExceptions").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeRemediationExceptionsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeRemediationExceptionsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Provides a detailed view of a Remediation Execution for a set of resources including state, timestamps for when * steps for the remediation execution occur, and any error messages for steps that have failed. When you specify * the limit and the next token, you receive a paginated response. *

              * * @param describeRemediationExecutionStatusRequest * @return A Java Future containing the result of the DescribeRemediationExecutionStatus operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • NoSuchRemediationConfigurationException You specified an Config rule without a remediation * configuration.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeRemediationExecutionStatus * @see AWS API Documentation */ @Override public CompletableFuture describeRemediationExecutionStatus( DescribeRemediationExecutionStatusRequest describeRemediationExecutionStatusRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeRemediationExecutionStatusRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeRemediationExecutionStatusRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeRemediationExecutionStatus"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, DescribeRemediationExecutionStatusResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeRemediationExecutionStatus").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeRemediationExecutionStatusRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeRemediationExecutionStatusRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns the details of one or more retention configurations. If the retention configuration name is not * specified, this action returns the details for all the retention configurations for that account. *

              * *

              * Currently, Config supports only one retention configuration per region in your account. *

              *
              * * @param describeRetentionConfigurationsRequest * @return A Java Future containing the result of the DescribeRetentionConfigurations operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • NoSuchRetentionConfigurationException You have specified a retention configuration that does not * exist.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.DescribeRetentionConfigurations * @see AWS API Documentation */ @Override public CompletableFuture describeRetentionConfigurations( DescribeRetentionConfigurationsRequest describeRetentionConfigurationsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(describeRetentionConfigurationsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeRetentionConfigurationsRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeRetentionConfigurations"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeRetentionConfigurationsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeRetentionConfigurations").withProtocolMetadata(protocolMetadata) .withMarshaller(new DescribeRetentionConfigurationsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(describeRetentionConfigurationsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns the evaluation results for the specified Config rule for a specific resource in a rule. The results * indicate which Amazon Web Services resources were evaluated by the rule, when each resource was last evaluated, * and whether each resource complies with the rule. *

              * *

              * The results can return an empty result page. But if you have a nextToken, the results are displayed * on the next page. *

              *
              * * @param getAggregateComplianceDetailsByConfigRuleRequest * @return A Java Future containing the result of the GetAggregateComplianceDetailsByConfigRule operation returned * by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • ValidationException The requested action is not valid.

                *

                * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                *

                * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • NoSuchConfigurationAggregatorException You have specified a configuration aggregator that does not * exist.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.GetAggregateComplianceDetailsByConfigRule * @see AWS API Documentation */ @Override public CompletableFuture getAggregateComplianceDetailsByConfigRule( GetAggregateComplianceDetailsByConfigRuleRequest getAggregateComplianceDetailsByConfigRuleRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration( getAggregateComplianceDetailsByConfigRuleRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getAggregateComplianceDetailsByConfigRuleRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetAggregateComplianceDetailsByConfigRule"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, GetAggregateComplianceDetailsByConfigRuleResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetAggregateComplianceDetailsByConfigRule") .withProtocolMetadata(protocolMetadata) .withMarshaller(new GetAggregateComplianceDetailsByConfigRuleRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getAggregateComplianceDetailsByConfigRuleRequest)); CompletableFuture whenCompleted = executeFuture .whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns the number of compliant and noncompliant rules for one or more accounts and regions in an aggregator. *

              * *

              * The results can return an empty result page, but if you have a nextToken, the results are displayed on the next * page. *

              *
              * * @param getAggregateConfigRuleComplianceSummaryRequest * @return A Java Future containing the result of the GetAggregateConfigRuleComplianceSummary operation returned by * the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • ValidationException The requested action is not valid.

                *

                * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                *

                * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • NoSuchConfigurationAggregatorException You have specified a configuration aggregator that does not * exist.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.GetAggregateConfigRuleComplianceSummary * @see AWS API Documentation */ @Override public CompletableFuture getAggregateConfigRuleComplianceSummary( GetAggregateConfigRuleComplianceSummaryRequest getAggregateConfigRuleComplianceSummaryRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getAggregateConfigRuleComplianceSummaryRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getAggregateConfigRuleComplianceSummaryRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetAggregateConfigRuleComplianceSummary"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, GetAggregateConfigRuleComplianceSummaryResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetAggregateConfigRuleComplianceSummary").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetAggregateConfigRuleComplianceSummaryRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getAggregateConfigRuleComplianceSummaryRequest)); CompletableFuture whenCompleted = executeFuture .whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns the count of compliant and noncompliant conformance packs across all Amazon Web Services accounts and * Amazon Web Services Regions in an aggregator. You can filter based on Amazon Web Services account ID or Amazon * Web Services Region. *

              * *

              * The results can return an empty result page, but if you have a nextToken, the results are displayed on the next * page. *

              *
              * * @param getAggregateConformancePackComplianceSummaryRequest * @return A Java Future containing the result of the GetAggregateConformancePackComplianceSummary operation * returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • ValidationException The requested action is not valid.

                *

                * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                *

                * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • NoSuchConfigurationAggregatorException You have specified a configuration aggregator that does not * exist.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.GetAggregateConformancePackComplianceSummary * @see AWS API Documentation */ @Override public CompletableFuture getAggregateConformancePackComplianceSummary( GetAggregateConformancePackComplianceSummaryRequest getAggregateConformancePackComplianceSummaryRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration( getAggregateConformancePackComplianceSummaryRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getAggregateConformancePackComplianceSummaryRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetAggregateConformancePackComplianceSummary"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, GetAggregateConformancePackComplianceSummaryResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetAggregateConformancePackComplianceSummary") .withProtocolMetadata(protocolMetadata) .withMarshaller(new GetAggregateConformancePackComplianceSummaryRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getAggregateConformancePackComplianceSummaryRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete(( r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns the resource counts across accounts and regions that are present in your Config aggregator. You can * request the resource counts by providing filters and GroupByKey. *

              *

              * For example, if the input contains accountID 12345678910 and region us-east-1 in filters, the API returns the * count of resources in account ID 12345678910 and region us-east-1. If the input contains ACCOUNT_ID as a * GroupByKey, the API returns resource counts for all source accounts that are present in your aggregator. *

              * * @param getAggregateDiscoveredResourceCountsRequest * @return A Java Future containing the result of the GetAggregateDiscoveredResourceCounts operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • ValidationException The requested action is not valid.

                *

                * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                *

                * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • NoSuchConfigurationAggregatorException You have specified a configuration aggregator that does not * exist.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.GetAggregateDiscoveredResourceCounts * @see AWS API Documentation */ @Override public CompletableFuture getAggregateDiscoveredResourceCounts( GetAggregateDiscoveredResourceCountsRequest getAggregateDiscoveredResourceCountsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getAggregateDiscoveredResourceCountsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getAggregateDiscoveredResourceCountsRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetAggregateDiscoveredResourceCounts"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, GetAggregateDiscoveredResourceCountsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetAggregateDiscoveredResourceCounts").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetAggregateDiscoveredResourceCountsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getAggregateDiscoveredResourceCountsRequest)); CompletableFuture whenCompleted = executeFuture .whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns configuration item that is aggregated for your specific resource in a specific source account and region. *

              * * @param getAggregateResourceConfigRequest * @return A Java Future containing the result of the GetAggregateResourceConfig operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • ValidationException The requested action is not valid.

                *

                * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                *

                * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

              • *
              • NoSuchConfigurationAggregatorException You have specified a configuration aggregator that does not * exist.
              • *
              • OversizedConfigurationItemException The configuration item size is outside the allowable range.
              • *
              • ResourceNotDiscoveredException You have specified a resource that is either unknown or has not been * discovered.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.GetAggregateResourceConfig * @see AWS API Documentation */ @Override public CompletableFuture getAggregateResourceConfig( GetAggregateResourceConfigRequest getAggregateResourceConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getAggregateResourceConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getAggregateResourceConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetAggregateResourceConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetAggregateResourceConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetAggregateResourceConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetAggregateResourceConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getAggregateResourceConfigRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns the evaluation results for the specified Config rule. The results indicate which Amazon Web Services * resources were evaluated by the rule, when each resource was last evaluated, and whether each resource complies * with the rule. *

              * * @param getComplianceDetailsByConfigRuleRequest * @return A Java Future containing the result of the GetComplianceDetailsByConfigRule operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • NoSuchConfigRuleException The Config rule in the request is not valid. Verify that the rule is an * Config Process Check rule, that the rule name is correct, and that valid Amazon Resouce Names (ARNs) are * used before trying again.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.GetComplianceDetailsByConfigRule * @see AWS API Documentation */ @Override public CompletableFuture getComplianceDetailsByConfigRule( GetComplianceDetailsByConfigRuleRequest getComplianceDetailsByConfigRuleRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getComplianceDetailsByConfigRuleRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getComplianceDetailsByConfigRuleRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetComplianceDetailsByConfigRule"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, GetComplianceDetailsByConfigRuleResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetComplianceDetailsByConfigRule").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetComplianceDetailsByConfigRuleRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getComplianceDetailsByConfigRuleRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns the evaluation results for the specified Amazon Web Services resource. The results indicate which Config * rules were used to evaluate the resource, when each rule was last invoked, and whether the resource complies with * each rule. *

              * * @param getComplianceDetailsByResourceRequest * @return A Java Future containing the result of the GetComplianceDetailsByResource operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.GetComplianceDetailsByResource * @see AWS API Documentation */ @Override public CompletableFuture getComplianceDetailsByResource( GetComplianceDetailsByResourceRequest getComplianceDetailsByResourceRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getComplianceDetailsByResourceRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getComplianceDetailsByResourceRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetComplianceDetailsByResource"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetComplianceDetailsByResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetComplianceDetailsByResource").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetComplianceDetailsByResourceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getComplianceDetailsByResourceRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns the number of Config rules that are compliant and noncompliant, up to a maximum of 25 for each. *

              * * @param getComplianceSummaryByConfigRuleRequest * @return A Java Future containing the result of the GetComplianceSummaryByConfigRule operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.GetComplianceSummaryByConfigRule * @see AWS API Documentation */ @Override public CompletableFuture getComplianceSummaryByConfigRule( GetComplianceSummaryByConfigRuleRequest getComplianceSummaryByConfigRuleRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getComplianceSummaryByConfigRuleRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getComplianceSummaryByConfigRuleRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetComplianceSummaryByConfigRule"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, GetComplianceSummaryByConfigRuleResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetComplianceSummaryByConfigRule").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetComplianceSummaryByConfigRuleRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getComplianceSummaryByConfigRuleRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns the number of resources that are compliant and the number that are noncompliant. You can specify one or * more resource types to get these numbers for each resource type. The maximum number returned is 100. *

              * * @param getComplianceSummaryByResourceTypeRequest * @return A Java Future containing the result of the GetComplianceSummaryByResourceType operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.GetComplianceSummaryByResourceType * @see AWS API Documentation */ @Override public CompletableFuture getComplianceSummaryByResourceType( GetComplianceSummaryByResourceTypeRequest getComplianceSummaryByResourceTypeRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getComplianceSummaryByResourceTypeRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getComplianceSummaryByResourceTypeRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetComplianceSummaryByResourceType"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, GetComplianceSummaryByResourceTypeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetComplianceSummaryByResourceType").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetComplianceSummaryByResourceTypeRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getComplianceSummaryByResourceTypeRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns compliance details of a conformance pack for all Amazon Web Services resources that are monitered by * conformance pack. *

              * * @param getConformancePackComplianceDetailsRequest * @return A Java Future containing the result of the GetConformancePackComplianceDetails operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • NoSuchConformancePackException You specified one or more conformance packs that do not exist.
              • *
              • NoSuchConfigRuleInConformancePackException Config rule that you passed in the filter does not exist.
              • *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.GetConformancePackComplianceDetails * @see AWS API Documentation */ @Override public CompletableFuture getConformancePackComplianceDetails( GetConformancePackComplianceDetailsRequest getConformancePackComplianceDetailsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getConformancePackComplianceDetailsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getConformancePackComplianceDetailsRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetConformancePackComplianceDetails"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, GetConformancePackComplianceDetailsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetConformancePackComplianceDetails").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetConformancePackComplianceDetailsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getConformancePackComplianceDetailsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns compliance details for the conformance pack based on the cumulative compliance results of all the rules * in that conformance pack. *

              * * @param getConformancePackComplianceSummaryRequest * @return A Java Future containing the result of the GetConformancePackComplianceSummary operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • NoSuchConformancePackException You specified one or more conformance packs that do not exist.
              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.GetConformancePackComplianceSummary * @see AWS API Documentation */ @Override public CompletableFuture getConformancePackComplianceSummary( GetConformancePackComplianceSummaryRequest getConformancePackComplianceSummaryRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getConformancePackComplianceSummaryRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getConformancePackComplianceSummaryRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetConformancePackComplianceSummary"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, GetConformancePackComplianceSummaryResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetConformancePackComplianceSummary").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetConformancePackComplianceSummaryRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getConformancePackComplianceSummaryRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns the policy definition containing the logic for your Config Custom Policy rule. *

              * * @param getCustomRulePolicyRequest * @return A Java Future containing the result of the GetCustomRulePolicy operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • NoSuchConfigRuleException The Config rule in the request is not valid. Verify that the rule is an * Config Process Check rule, that the rule name is correct, and that valid Amazon Resouce Names (ARNs) are * used before trying again.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.GetCustomRulePolicy * @see AWS * API Documentation */ @Override public CompletableFuture getCustomRulePolicy( GetCustomRulePolicyRequest getCustomRulePolicyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getCustomRulePolicyRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getCustomRulePolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetCustomRulePolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetCustomRulePolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetCustomRulePolicy").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetCustomRulePolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getCustomRulePolicyRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns the resource types, the number of each resource type, and the total number of resources that Config is * recording in this region for your Amazon Web Services account. *

              *

              * Example *

              *
                *
              1. *

                * Config is recording three resource types in the US East (Ohio) Region for your account: 25 EC2 instances, 20 IAM * users, and 15 S3 buckets. *

                *
              2. *
              3. *

                * You make a call to the GetDiscoveredResourceCounts action and specify that you want all resource * types. *

                *
              4. *
              5. *

                * Config returns the following: *

                *
                  *
                • *

                  * The resource types (EC2 instances, IAM users, and S3 buckets). *

                  *
                • *
                • *

                  * The number of each resource type (25, 20, and 15). *

                  *
                • *
                • *

                  * The total number of all resources (60). *

                  *
                • *
                *
              6. *
              *

              * The response is paginated. By default, Config lists 100 ResourceCount objects on each page. You can * customize this number with the limit parameter. The response includes a nextToken * string. To get the next page of results, run the request again and specify the string for the * nextToken parameter. *

              * *

              * If you make a call to the GetDiscoveredResourceCounts action, you might not immediately receive resource * counts in the following situations: *

              *
                *
              • *

                * You are a new Config customer. *

                *
              • *
              • *

                * You just enabled resource recording. *

                *
              • *
              *

              * It might take a few minutes for Config to record and count your resources. Wait a few minutes and then retry the * GetDiscoveredResourceCounts action. *

              *
              * * @param getDiscoveredResourceCountsRequest * @return A Java Future containing the result of the GetDiscoveredResourceCounts operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • ValidationException The requested action is not valid.

                *

                * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                *

                * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.GetDiscoveredResourceCounts * @see AWS API Documentation */ @Override public CompletableFuture getDiscoveredResourceCounts( GetDiscoveredResourceCountsRequest getDiscoveredResourceCountsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getDiscoveredResourceCountsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getDiscoveredResourceCountsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetDiscoveredResourceCounts"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetDiscoveredResourceCountsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetDiscoveredResourceCounts").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetDiscoveredResourceCountsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getDiscoveredResourceCountsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns detailed status for each member account within an organization for a given organization Config rule. *

              * * @param getOrganizationConfigRuleDetailedStatusRequest * @return A Java Future containing the result of the GetOrganizationConfigRuleDetailedStatus operation returned by * the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • NoSuchOrganizationConfigRuleException The Config rule in the request is not valid. Verify that the * rule is an organization Config Process Check rule, that the rule name is correct, and that valid Amazon * Resouce Names (ARNs) are used before trying again.
              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • OrganizationAccessDeniedException For PutConfigurationAggregator API, you can see this * exception for the following reasons:

                *
                  *
                • *

                  * No permission to call EnableAWSServiceAccess API *

                  *
                • *
                • *

                  * The configuration aggregator cannot be updated because your Amazon Web Services Organization management * account or the delegated administrator role changed. Delete this aggregator and create a new one with the * current Amazon Web Services Organization. *

                  *
                • *
                • *

                  * The configuration aggregator is associated with a previous Amazon Web Services Organization and Config * cannot aggregate data with current Amazon Web Services Organization. Delete this aggregator and create a * new one with the current Amazon Web Services Organization. *

                  *
                • *
                • *

                  * You are not a registered delegated administrator for Config with permissions to call * ListDelegatedAdministrators API. Ensure that the management account registers delagated * administrator for Config service principle name before the delegated administrator creates an aggregator. *

                  *
                • *
                *

                * For all OrganizationConfigRule and OrganizationConformancePack APIs, Config * throws an exception if APIs are called from member accounts. All APIs must be called from organization * management account.

              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.GetOrganizationConfigRuleDetailedStatus * @see AWS API Documentation */ @Override public CompletableFuture getOrganizationConfigRuleDetailedStatus( GetOrganizationConfigRuleDetailedStatusRequest getOrganizationConfigRuleDetailedStatusRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getOrganizationConfigRuleDetailedStatusRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getOrganizationConfigRuleDetailedStatusRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetOrganizationConfigRuleDetailedStatus"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, GetOrganizationConfigRuleDetailedStatusResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetOrganizationConfigRuleDetailedStatus").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetOrganizationConfigRuleDetailedStatusRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getOrganizationConfigRuleDetailedStatusRequest)); CompletableFuture whenCompleted = executeFuture .whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns detailed status for each member account within an organization for a given organization conformance pack. *

              * * @param getOrganizationConformancePackDetailedStatusRequest * @return A Java Future containing the result of the GetOrganizationConformancePackDetailedStatus operation * returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • NoSuchOrganizationConformancePackException Config organization conformance pack that you passed in * the filter does not exist.

                *

                * For DeleteOrganizationConformancePack, you tried to delete an organization conformance pack that does not * exist.

              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • OrganizationAccessDeniedException For PutConfigurationAggregator API, you can see this * exception for the following reasons:

                *
                  *
                • *

                  * No permission to call EnableAWSServiceAccess API *

                  *
                • *
                • *

                  * The configuration aggregator cannot be updated because your Amazon Web Services Organization management * account or the delegated administrator role changed. Delete this aggregator and create a new one with the * current Amazon Web Services Organization. *

                  *
                • *
                • *

                  * The configuration aggregator is associated with a previous Amazon Web Services Organization and Config * cannot aggregate data with current Amazon Web Services Organization. Delete this aggregator and create a * new one with the current Amazon Web Services Organization. *

                  *
                • *
                • *

                  * You are not a registered delegated administrator for Config with permissions to call * ListDelegatedAdministrators API. Ensure that the management account registers delagated * administrator for Config service principle name before the delegated administrator creates an aggregator. *

                  *
                • *
                *

                * For all OrganizationConfigRule and OrganizationConformancePack APIs, Config * throws an exception if APIs are called from member accounts. All APIs must be called from organization * management account.

              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.GetOrganizationConformancePackDetailedStatus * @see AWS API Documentation */ @Override public CompletableFuture getOrganizationConformancePackDetailedStatus( GetOrganizationConformancePackDetailedStatusRequest getOrganizationConformancePackDetailedStatusRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration( getOrganizationConformancePackDetailedStatusRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getOrganizationConformancePackDetailedStatusRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetOrganizationConformancePackDetailedStatus"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, GetOrganizationConformancePackDetailedStatusResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetOrganizationConformancePackDetailedStatus") .withProtocolMetadata(protocolMetadata) .withMarshaller(new GetOrganizationConformancePackDetailedStatusRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getOrganizationConformancePackDetailedStatusRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete(( r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns the policy definition containing the logic for your organization Config Custom Policy rule. *

              * * @param getOrganizationCustomRulePolicyRequest * @return A Java Future containing the result of the GetOrganizationCustomRulePolicy operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • NoSuchOrganizationConfigRuleException The Config rule in the request is not valid. Verify that the * rule is an organization Config Process Check rule, that the rule name is correct, and that valid Amazon * Resouce Names (ARNs) are used before trying again.
              • *
              • OrganizationAccessDeniedException For PutConfigurationAggregator API, you can see this * exception for the following reasons:

                *
                  *
                • *

                  * No permission to call EnableAWSServiceAccess API *

                  *
                • *
                • *

                  * The configuration aggregator cannot be updated because your Amazon Web Services Organization management * account or the delegated administrator role changed. Delete this aggregator and create a new one with the * current Amazon Web Services Organization. *

                  *
                • *
                • *

                  * The configuration aggregator is associated with a previous Amazon Web Services Organization and Config * cannot aggregate data with current Amazon Web Services Organization. Delete this aggregator and create a * new one with the current Amazon Web Services Organization. *

                  *
                • *
                • *

                  * You are not a registered delegated administrator for Config with permissions to call * ListDelegatedAdministrators API. Ensure that the management account registers delagated * administrator for Config service principle name before the delegated administrator creates an aggregator. *

                  *
                • *
                *

                * For all OrganizationConfigRule and OrganizationConformancePack APIs, Config * throws an exception if APIs are called from member accounts. All APIs must be called from organization * management account.

              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.GetOrganizationCustomRulePolicy * @see AWS API Documentation */ @Override public CompletableFuture getOrganizationCustomRulePolicy( GetOrganizationCustomRulePolicyRequest getOrganizationCustomRulePolicyRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getOrganizationCustomRulePolicyRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getOrganizationCustomRulePolicyRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetOrganizationCustomRulePolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetOrganizationCustomRulePolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetOrganizationCustomRulePolicy").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetOrganizationCustomRulePolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getOrganizationCustomRulePolicyRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** * *

              * For accurate reporting on the compliance status, you must record the AWS::Config::ResourceCompliance * resource type. For more information, see Selecting Which Resources * Config Records. *

              *
              *

              * Returns a list of ConfigurationItems for the specified resource. The list contains details about * each state of the resource during the specified time interval. If you specified a retention period to retain your * ConfigurationItems between a minimum of 30 days and a maximum of 7 years (2557 days), Config returns * the ConfigurationItems for the specified retention period. *

              *

              * The response is paginated. By default, Config returns a limit of 10 configuration items per page. You can * customize this number with the limit parameter. The response includes a nextToken * string. To get the next page of results, run the request again and specify the string for the * nextToken parameter. *

              * *

              * Each call to the API is limited to span a duration of seven days. It is likely that the number of records * returned is smaller than the specified limit. In such cases, you can make another call, using the * nextToken. *

              *
              * * @param getResourceConfigHistoryRequest * The input for the GetResourceConfigHistory action. * @return A Java Future containing the result of the GetResourceConfigHistory operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • ValidationException The requested action is not valid.

                *

                * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                *

                * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

              • *
              • InvalidTimeRangeException The specified time range is not valid. The earlier time is not * chronologically before the later time.
              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • NoAvailableConfigurationRecorderException There are no configuration recorders available to provide * the role needed to describe your resources. Create a configuration recorder.
              • *
              • ResourceNotDiscoveredException You have specified a resource that is either unknown or has not been * discovered.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.GetResourceConfigHistory * @see AWS API Documentation */ @Override public CompletableFuture getResourceConfigHistory( GetResourceConfigHistoryRequest getResourceConfigHistoryRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getResourceConfigHistoryRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getResourceConfigHistoryRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetResourceConfigHistory"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetResourceConfigHistoryResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetResourceConfigHistory").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetResourceConfigHistoryRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getResourceConfigHistoryRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns a summary of resource evaluation for the specified resource evaluation ID from the proactive rules that * were run. The results indicate which evaluation context was used to evaluate the rules, which resource details * were evaluated, the evaluation mode that was run, and whether the resource details comply with the configuration * of the proactive rules. *

              * *

              * To see additional information about the evaluation result, such as which rule flagged a resource as * NON_COMPLIANT, use the GetComplianceDetailsByResource API. For more information, see the Examples section. *

              *
              * * @param getResourceEvaluationSummaryRequest * @return A Java Future containing the result of the GetResourceEvaluationSummary operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • ResourceNotFoundException You have specified a resource that does not exist.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.GetResourceEvaluationSummary * @see AWS API Documentation */ @Override public CompletableFuture getResourceEvaluationSummary( GetResourceEvaluationSummaryRequest getResourceEvaluationSummaryRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getResourceEvaluationSummaryRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getResourceEvaluationSummaryRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetResourceEvaluationSummary"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetResourceEvaluationSummaryResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetResourceEvaluationSummary").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetResourceEvaluationSummaryRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getResourceEvaluationSummaryRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns the details of a specific stored query. *

              * * @param getStoredQueryRequest * @return A Java Future containing the result of the GetStoredQuery operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • ValidationException The requested action is not valid.

                *

                * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                *

                * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

              • *
              • ResourceNotFoundException You have specified a resource that does not exist.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.GetStoredQuery * @see AWS API * Documentation */ @Override public CompletableFuture getStoredQuery(GetStoredQueryRequest getStoredQueryRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(getStoredQueryRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, getStoredQueryRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetStoredQuery"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetStoredQueryResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetStoredQuery").withProtocolMetadata(protocolMetadata) .withMarshaller(new GetStoredQueryRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(getStoredQueryRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Accepts a resource type and returns a list of resource identifiers that are aggregated for a specific resource * type across accounts and regions. A resource identifier includes the resource type, ID, (if available) the custom * resource name, source account, and source region. You can narrow the results to include only resources that have * specific resource IDs, or a resource name, or source account ID, or source region. *

              *

              * For example, if the input consists of accountID 12345678910 and the region is us-east-1 for resource type * AWS::EC2::Instance then the API returns all the EC2 instance identifiers of accountID 12345678910 * and region us-east-1. *

              * * @param listAggregateDiscoveredResourcesRequest * @return A Java Future containing the result of the ListAggregateDiscoveredResources operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • ValidationException The requested action is not valid.

                *

                * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                *

                * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • NoSuchConfigurationAggregatorException You have specified a configuration aggregator that does not * exist.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.ListAggregateDiscoveredResources * @see AWS API Documentation */ @Override public CompletableFuture listAggregateDiscoveredResources( ListAggregateDiscoveredResourcesRequest listAggregateDiscoveredResourcesRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listAggregateDiscoveredResourcesRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listAggregateDiscoveredResourcesRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListAggregateDiscoveredResources"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, ListAggregateDiscoveredResourcesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListAggregateDiscoveredResources").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListAggregateDiscoveredResourcesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listAggregateDiscoveredResourcesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns a list of conformance pack compliance scores. A compliance score is the percentage of the number of * compliant rule-resource combinations in a conformance pack compared to the number of total possible rule-resource * combinations in the conformance pack. This metric provides you with a high-level view of the compliance state of * your conformance packs. You can use it to identify, investigate, and understand the level of compliance in your * conformance packs. *

              * *

              * Conformance packs with no evaluation results will have a compliance score of INSUFFICIENT_DATA. *

              *
              * * @param listConformancePackComplianceScoresRequest * @return A Java Future containing the result of the ListConformancePackComplianceScores operation returned by the * service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.ListConformancePackComplianceScores * @see AWS API Documentation */ @Override public CompletableFuture listConformancePackComplianceScores( ListConformancePackComplianceScoresRequest listConformancePackComplianceScoresRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listConformancePackComplianceScoresRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listConformancePackComplianceScoresRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListConformancePackComplianceScores"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory .createResponseHandler(operationMetadata, ListConformancePackComplianceScoresResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListConformancePackComplianceScores").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListConformancePackComplianceScoresRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listConformancePackComplianceScoresRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Accepts a resource type and returns a list of resource identifiers for the resources of that type. A resource * identifier includes the resource type, ID, and (if available) the custom resource name. The results consist of * resources that Config has discovered, including those that Config is not currently recording. You can narrow the * results to include only resources that have specific resource IDs or a resource name. *

              * *

              * You can specify either resource IDs or a resource name, but not both, in the same request. *

              *
              *

              * The response is paginated. By default, Config lists 100 resource identifiers on each page. You can customize this * number with the limit parameter. The response includes a nextToken string. To get the * next page of results, run the request again and specify the string for the nextToken parameter. *

              * * @param listDiscoveredResourcesRequest * @return A Java Future containing the result of the ListDiscoveredResources operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • ValidationException The requested action is not valid.

                *

                * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                *

                * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • NoAvailableConfigurationRecorderException There are no configuration recorders available to provide * the role needed to describe your resources. Create a configuration recorder.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.ListDiscoveredResources * @see AWS API Documentation */ @Override public CompletableFuture listDiscoveredResources( ListDiscoveredResourcesRequest listDiscoveredResourcesRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listDiscoveredResourcesRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listDiscoveredResourcesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListDiscoveredResources"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListDiscoveredResourcesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListDiscoveredResources").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListDiscoveredResourcesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listDiscoveredResourcesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Returns a list of proactive resource evaluations. *

              * * @param listResourceEvaluationsRequest * @return A Java Future containing the result of the ListResourceEvaluations operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • InvalidTimeRangeException The specified time range is not valid. The earlier time is not * chronologically before the later time.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.ListResourceEvaluations * @see AWS API Documentation */ @Override public CompletableFuture listResourceEvaluations( ListResourceEvaluationsRequest listResourceEvaluationsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listResourceEvaluationsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listResourceEvaluationsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListResourceEvaluations"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListResourceEvaluationsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListResourceEvaluations").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListResourceEvaluationsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listResourceEvaluationsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Lists the stored queries for a single Amazon Web Services account and a single Amazon Web Services Region. The * default is 100. *

              * * @param listStoredQueriesRequest * @return A Java Future containing the result of the ListStoredQueries operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • ValidationException The requested action is not valid.

                *

                * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                *

                * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.ListStoredQueries * @see AWS API * Documentation */ @Override public CompletableFuture listStoredQueries(ListStoredQueriesRequest listStoredQueriesRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listStoredQueriesRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listStoredQueriesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListStoredQueries"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListStoredQueriesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListStoredQueries").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListStoredQueriesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listStoredQueriesRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * List the tags for Config resource. *

              * * @param listTagsForResourceRequest * @return A Java Future containing the result of the ListTagsForResource operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • ResourceNotFoundException You have specified a resource that does not exist.
              • *
              • ValidationException The requested action is not valid.

                *

                * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                *

                * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

              • *
              • InvalidLimitException The specified limit is outside the allowable range.
              • *
              • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.ListTagsForResource * @see AWS * API Documentation */ @Override public CompletableFuture listTagsForResource( ListTagsForResourceRequest listTagsForResourceRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(listTagsForResourceRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, listTagsForResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListTagsForResource"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListTagsForResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListTagsForResource").withProtocolMetadata(protocolMetadata) .withMarshaller(new ListTagsForResourceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(listTagsForResourceRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Authorizes the aggregator account and region to collect data from the source account and region. *

              * *

              * PutAggregationAuthorization is an idempotent API. Subsequent requests won’t create a duplicate * resource if one was already created. If a following request has different tags values, Config will * ignore these differences and treat it as an idempotent request of the previous. In this case, tags * will not be updated, even if they are different. *

              *
              * * @param putAggregationAuthorizationRequest * @return A Java Future containing the result of the PutAggregationAuthorization operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
              • *
              • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
              • *
              • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
              • *
              * @sample ConfigAsyncClient.PutAggregationAuthorization * @see AWS API Documentation */ @Override public CompletableFuture putAggregationAuthorization( PutAggregationAuthorizationRequest putAggregationAuthorizationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putAggregationAuthorizationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putAggregationAuthorizationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutAggregationAuthorization"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutAggregationAuthorizationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutAggregationAuthorization").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutAggregationAuthorizationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putAggregationAuthorizationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

              * Adds or updates an Config rule to evaluate if your Amazon Web Services resources comply with your desired * configurations. For information on how many Config rules you can have per account, see Service Limits in * the Config Developer Guide. *

              *

              * There are two types of rules: Config Managed Rules and Config Custom Rules. You can use * PutConfigRule to create both Config Managed Rules and Config Custom Rules. *

              *

              * Config Managed Rules are predefined, customizable rules created by Config. For a list of managed rules, see List of Config * Managed Rules. If you are adding an Config managed rule, you must specify the rule's identifier for the * SourceIdentifier key. *

              *

              * Config Custom Rules are rules that you create from scratch. There are two ways to create Config custom rules: * with Lambda functions ( Lambda Developer Guide) and with Guard (Guard GitHub Repository), a policy-as-code * language. Config custom rules created with Lambda are called Config Custom Lambda Rules and Config custom * rules created with Guard are called Config Custom Policy Rules. *

              *

              * If you are adding a new Config Custom Lambda rule, you first need to create an Lambda function that the rule * invokes to evaluate your resources. When you use PutConfigRule to add a Custom Lambda rule to * Config, you must specify the Amazon Resource Name (ARN) that Lambda assigns to the function. You specify the ARN * in the SourceIdentifier key. This key is part of the Source object, which is part of * the ConfigRule object. *

              *

              * For any new Config rule that you add, specify the ConfigRuleName in the ConfigRule * object. Do not specify the ConfigRuleArn or the ConfigRuleId. These values are * generated by Config for new rules. *

              *

              * If you are updating a rule that you added previously, you can specify the rule by ConfigRuleName, * ConfigRuleId, or ConfigRuleArn in the ConfigRule data type that you use in * this request. *

              *

              * For more information about developing and using Config rules, see Evaluating Resources with * Config Rules in the Config Developer Guide. *

              * *

              * PutConfigRule is an idempotent API. Subsequent requests won’t create a duplicate resource if one was * already created. If a following request has different tags values, Config will ignore these * differences and treat it as an idempotent request of the previous. In this case, tags will not be * updated, even if they are different. *

              *
              * * @param putConfigRuleRequest * @return A Java Future containing the result of the PutConfigRule operation returned by the service.
              * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                *
              • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
              • *
              • MaxNumberOfConfigRulesExceededException Failed to add the Config rule because the account already * contains the maximum number of 1000 rules. Consider deleting any deactivated rules before you add new * rules.
              • *
              • ResourceInUseException You see this exception in the following cases:

                *
                  *
                • *

                  * For DeleteConfigRule, Config is deleting this rule. Try your request again later. *

                  *
                • *
                • *

                  * For DeleteConfigRule, the rule is deleting your evaluation results. Try your request again later. *

                  *
                • *
                • *

                  * For DeleteConfigRule, a remediation action is associated with the rule and Config cannot delete this * rule. Delete the remediation action associated with the rule before deleting the rule and try your * request again later. *

                  *
                • *
                • *

                  * For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try your request again * later. *

                  *
                • *
                • *

                  * For DeleteOrganizationConfigRule, organization Config rule creation is in progress. Try your request * again later. *

                  *
                • *
                • *

                  * For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation, update, and * deletion is in progress. Try your request again later. *

                  *
                • *
                • *

                  * For DeleteConformancePack, a conformance pack creation, update, and deletion is in progress. Try your * request again later. *

                  *
                • *
                • InsufficientPermissionsException Indicates one of the following errors:

                  *
                    *
                  • *

                    * For PutConfigRule, the rule cannot be created because the IAM role assigned to Config lacks permissions * to perform the config:Put* action. *

                    *
                  • *
                  • *

                    * For PutConfigRule, the Lambda function cannot be invoked. Check the function ARN, and check the * function's permissions. *

                    *
                  • *
                  • *

                    * For PutOrganizationConfigRule, organization Config rule cannot be created because you do not have * permissions to call IAM GetRole action or create a service-linked role. *

                    *
                  • *
                  • *

                    * For PutConformancePack and PutOrganizationConformancePack, a conformance pack cannot be created because * you do not have the following permissions: *

                    *
                      *
                    • *

                      * You do not have permission to call IAM GetRole action or create a service-linked role. *

                      *
                    • *
                    • *

                      * You do not have permission to read Amazon S3 bucket or call SSM:GetDocument. *

                      *
                    • *
                    *
                  • *
                  • NoAvailableConfigurationRecorderException There are no configuration recorders available to provide * the role needed to describe your resources. Create a configuration recorder.
                  • *
                  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                  • *
                  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                  • *
                  • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                  • *
                  * @sample ConfigAsyncClient.PutConfigRule * @see AWS API * Documentation */ @Override public CompletableFuture putConfigRule(PutConfigRuleRequest putConfigRuleRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putConfigRuleRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putConfigRuleRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutConfigRule"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, PutConfigRuleResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutConfigRule").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutConfigRuleRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putConfigRuleRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                  * Creates and updates the configuration aggregator with the selected source accounts and regions. The source * account can be individual account(s) or an organization. *

                  *

                  * accountIds that are passed will be replaced with existing accounts. If you want to add additional * accounts into the aggregator, call DescribeConfigurationAggregators to get the previous accounts and * then append new ones. *

                  * *

                  * Config should be enabled in source accounts and regions you want to aggregate. *

                  *

                  * If your source type is an organization, you must be signed in to the management account or a registered delegated * administrator and all the features must be enabled in your organization. If the caller is a management account, * Config calls EnableAwsServiceAccess API to enable integration between Config and Organizations. If * the caller is a registered delegated administrator, Config calls ListDelegatedAdministrators API to * verify whether the caller is a valid delegated administrator. *

                  *

                  * To register a delegated administrator, see Register a Delegated Administrator in the Config developer guide. *

                  *
                  *

                  * PutConfigurationAggregator is an idempotent API. Subsequent requests won’t create a duplicate * resource if one was already created. If a following request has different tags values, Config will * ignore these differences and treat it as an idempotent request of the previous. In this case, tags * will not be updated, even if they are different. *

                  *
                  * * @param putConfigurationAggregatorRequest * @return A Java Future containing the result of the PutConfigurationAggregator operation returned by the service.
                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                    *
                  • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
                  • *
                  • LimitExceededException For StartConfigRulesEvaluation API, this exception is thrown if * an evaluation is in progress or if you call the StartConfigRulesEvaluation API more than once per * minute.

                    *

                    * For PutConfigurationAggregator API, this exception is thrown if the number of accounts and * aggregators exceeds the limit.

                  • *
                  • InvalidRoleException You have provided a null or empty Amazon Resource Name (ARN) for the IAM role * assumed by Config and used by the configuration recorder.
                  • *
                  • OrganizationAccessDeniedException For PutConfigurationAggregator API, you can see this * exception for the following reasons:

                    *
                      *
                    • *

                      * No permission to call EnableAWSServiceAccess API *

                      *
                    • *
                    • *

                      * The configuration aggregator cannot be updated because your Amazon Web Services Organization management * account or the delegated administrator role changed. Delete this aggregator and create a new one with the * current Amazon Web Services Organization. *

                      *
                    • *
                    • *

                      * The configuration aggregator is associated with a previous Amazon Web Services Organization and Config * cannot aggregate data with current Amazon Web Services Organization. Delete this aggregator and create a * new one with the current Amazon Web Services Organization. *

                      *
                    • *
                    • *

                      * You are not a registered delegated administrator for Config with permissions to call * ListDelegatedAdministrators API. Ensure that the management account registers delagated * administrator for Config service principle name before the delegated administrator creates an aggregator. *

                      *
                    • *
                    *

                    * For all OrganizationConfigRule and OrganizationConformancePack APIs, Config * throws an exception if APIs are called from member accounts. All APIs must be called from organization * management account.

                  • *
                  • NoAvailableOrganizationException Organization is no longer available.
                  • *
                  • OrganizationAllFeaturesNotEnabledException Config resource cannot be created because your * organization does not have all features enabled.
                  • *
                  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                  • *
                  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                  • *
                  • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                  • *
                  * @sample ConfigAsyncClient.PutConfigurationAggregator * @see AWS API Documentation */ @Override public CompletableFuture putConfigurationAggregator( PutConfigurationAggregatorRequest putConfigurationAggregatorRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putConfigurationAggregatorRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putConfigurationAggregatorRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutConfigurationAggregator"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutConfigurationAggregatorResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutConfigurationAggregator").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutConfigurationAggregatorRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putConfigurationAggregatorRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                  * Creates a new configuration recorder to record configuration changes for specified resource types. *

                  *

                  * You can also use this action to change the roleARN or the recordingGroup of an existing * recorder. For more information, see Managing the * Configuration Recorder in the Config Developer Guide. *

                  * *

                  * You can specify only one configuration recorder for each Amazon Web Services Region for each account. *

                  *

                  * If the configuration recorder does not have the recordingGroup field specified, the default is to * record all supported resource types. *

                  *
                  * * @param putConfigurationRecorderRequest * The input for the PutConfigurationRecorder action. * @return A Java Future containing the result of the PutConfigurationRecorder operation returned by the service.
                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                    *
                  • MaxNumberOfConfigurationRecordersExceededException You have reached the limit of the number of * configuration recorders you can create.
                  • *
                  • ValidationException The requested action is not valid.

                    *

                    * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                    *

                    * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

                  • *
                  • InvalidConfigurationRecorderNameException You have provided a name for the configuration recorder * that is not valid.
                  • *
                  • InvalidRoleException You have provided a null or empty Amazon Resource Name (ARN) for the IAM role * assumed by Config and used by the configuration recorder.
                  • *
                  • InvalidRecordingGroupException Indicates one of the following errors:

                    *
                      *
                    • *

                      * You have provided a combination of parameter values that is not valid. For example: *

                      *
                        *
                      • *

                        * Setting the allSupported field of RecordingGroup * to true, but providing a non-empty list for the resourceTypesfield of RecordingGroup. *

                        *
                      • *
                      • *

                        * Setting the allSupported field of RecordingGroup * to true, but also setting the useOnly field of RecordingStrategy to EXCLUSION_BY_RESOURCE_TYPES. *

                        *
                      • *
                      *
                    • *
                    • *

                      * Every parameter is either null, false, or empty. *

                      *
                    • *
                    • *

                      * You have reached the limit of the number of resource types you can provide for the recording group. *

                      *
                    • *
                    • *

                      * You have provided resource types or a recording strategy that are not valid. *

                      *
                    • *
                    • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                    • *
                    • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                    • *
                    • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                    • *
                    * @sample ConfigAsyncClient.PutConfigurationRecorder * @see AWS API Documentation */ @Override public CompletableFuture putConfigurationRecorder( PutConfigurationRecorderRequest putConfigurationRecorderRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putConfigurationRecorderRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putConfigurationRecorderRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutConfigurationRecorder"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutConfigurationRecorderResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutConfigurationRecorder").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutConfigurationRecorderRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putConfigurationRecorderRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                    * Creates or updates a conformance pack. A conformance pack is a collection of Config rules that can be easily * deployed in an account and a region and across an organization. For information on how many conformance packs you * can have per account, see * Service Limits in the Config Developer Guide. *

                    *

                    * This API creates a service-linked role AWSServiceRoleForConfigConforms in your account. The * service-linked role is created only when the role does not exist in your account. *

                    * *

                    * You must specify only one of the follow parameters: TemplateS3Uri, TemplateBody or * TemplateSSMDocumentDetails. *

                    *
                    * * @param putConformancePackRequest * @return A Java Future containing the result of the PutConformancePack operation returned by the service.
                    * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                      *
                    • InsufficientPermissionsException Indicates one of the following errors:

                      *
                        *
                      • *

                        * For PutConfigRule, the rule cannot be created because the IAM role assigned to Config lacks permissions * to perform the config:Put* action. *

                        *
                      • *
                      • *

                        * For PutConfigRule, the Lambda function cannot be invoked. Check the function ARN, and check the * function's permissions. *

                        *
                      • *
                      • *

                        * For PutOrganizationConfigRule, organization Config rule cannot be created because you do not have * permissions to call IAM GetRole action or create a service-linked role. *

                        *
                      • *
                      • *

                        * For PutConformancePack and PutOrganizationConformancePack, a conformance pack cannot be created because * you do not have the following permissions: *

                        *
                          *
                        • *

                          * You do not have permission to call IAM GetRole action or create a service-linked role. *

                          *
                        • *
                        • *

                          * You do not have permission to read Amazon S3 bucket or call SSM:GetDocument. *

                          *
                        • *
                        *
                      • *
                      • ConformancePackTemplateValidationException You have specified a template that is not valid or * supported.
                      • *
                      • ResourceInUseException You see this exception in the following cases:

                        *
                          *
                        • *

                          * For DeleteConfigRule, Config is deleting this rule. Try your request again later. *

                          *
                        • *
                        • *

                          * For DeleteConfigRule, the rule is deleting your evaluation results. Try your request again later. *

                          *
                        • *
                        • *

                          * For DeleteConfigRule, a remediation action is associated with the rule and Config cannot delete this * rule. Delete the remediation action associated with the rule before deleting the rule and try your * request again later. *

                          *
                        • *
                        • *

                          * For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try your request again * later. *

                          *
                        • *
                        • *

                          * For DeleteOrganizationConfigRule, organization Config rule creation is in progress. Try your request * again later. *

                          *
                        • *
                        • *

                          * For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation, update, and * deletion is in progress. Try your request again later. *

                          *
                        • *
                        • *

                          * For DeleteConformancePack, a conformance pack creation, update, and deletion is in progress. Try your * request again later. *

                          *
                        • *
                        • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
                        • *
                        • MaxNumberOfConformancePacksExceededException You have reached the limit of the number of conformance * packs you can create in an account. For more information, see Service Limits * in the Config Developer Guide.
                        • *
                        • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                        • *
                        • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                        • *
                        • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                        • *
                        * @sample ConfigAsyncClient.PutConformancePack * @see AWS API * Documentation */ @Override public CompletableFuture putConformancePack(PutConformancePackRequest putConformancePackRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putConformancePackRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putConformancePackRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutConformancePack"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutConformancePackResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutConformancePack").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutConformancePackRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putConformancePackRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                        * Creates a delivery channel object to deliver configuration information and other compliance information to an * Amazon S3 bucket and Amazon SNS topic. For more information, see Notifications * that Config Sends to an Amazon SNS topic. *

                        *

                        * Before you can create a delivery channel, you must create a configuration recorder. *

                        *

                        * You can use this action to change the Amazon S3 bucket or an Amazon SNS topic of the existing delivery channel. * To change the Amazon S3 bucket or an Amazon SNS topic, call this action and specify the changed values for the S3 * bucket and the SNS topic. If you specify a different value for either the S3 bucket or the SNS topic, this action * will keep the existing value for the parameter that is not changed. *

                        * *

                        * You can have only one delivery channel per region in your account. *

                        *
                        * * @param putDeliveryChannelRequest * The input for the PutDeliveryChannel action. * @return A Java Future containing the result of the PutDeliveryChannel operation returned by the service.
                        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                          *
                        • MaxNumberOfDeliveryChannelsExceededException You have reached the limit of the number of delivery * channels you can create.
                        • *
                        • NoAvailableConfigurationRecorderException There are no configuration recorders available to provide * the role needed to describe your resources. Create a configuration recorder.
                        • *
                        • InvalidDeliveryChannelNameException The specified delivery channel name is not valid.
                        • *
                        • NoSuchBucketException The specified Amazon S3 bucket does not exist.
                        • *
                        • InvalidS3KeyPrefixException The specified Amazon S3 key prefix is not valid.
                        • *
                        • InvalidS3KmsKeyArnException The specified Amazon KMS Key ARN is not valid.
                        • *
                        • InvalidSnsTopicArnException The specified Amazon SNS topic does not exist.
                        • *
                        • InsufficientDeliveryPolicyException Your Amazon S3 bucket policy does not permit Config to write to * it.
                        • *
                        • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                        • *
                        • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                        • *
                        • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                        • *
                        * @sample ConfigAsyncClient.PutDeliveryChannel * @see AWS API * Documentation */ @Override public CompletableFuture putDeliveryChannel(PutDeliveryChannelRequest putDeliveryChannelRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putDeliveryChannelRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putDeliveryChannelRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutDeliveryChannel"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutDeliveryChannelResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutDeliveryChannel").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutDeliveryChannelRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putDeliveryChannelRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                        * Used by an Lambda function to deliver evaluation results to Config. This action is required in every Lambda * function that is invoked by an Config rule. *

                        * * @param putEvaluationsRequest * @return A Java Future containing the result of the PutEvaluations operation returned by the service.
                        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                          *
                        • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
                        • *
                        • InvalidResultTokenException The specified ResultToken is not valid.
                        • *
                        • NoSuchConfigRuleException The Config rule in the request is not valid. Verify that the rule is an * Config Process Check rule, that the rule name is correct, and that valid Amazon Resouce Names (ARNs) are * used before trying again.
                        • *
                        • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                        • *
                        • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                        • *
                        • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                        • *
                        * @sample ConfigAsyncClient.PutEvaluations * @see AWS API * Documentation */ @Override public CompletableFuture putEvaluations(PutEvaluationsRequest putEvaluationsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putEvaluationsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putEvaluationsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutEvaluations"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutEvaluationsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutEvaluations").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutEvaluationsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putEvaluationsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                        * Add or updates the evaluations for process checks. This API checks if the rule is a process check when the name * of the Config rule is provided. *

                        * * @param putExternalEvaluationRequest * @return A Java Future containing the result of the PutExternalEvaluation operation returned by the service.
                        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                          *
                        • NoSuchConfigRuleException The Config rule in the request is not valid. Verify that the rule is an * Config Process Check rule, that the rule name is correct, and that valid Amazon Resouce Names (ARNs) are * used before trying again.
                        • *
                        • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
                        • *
                        • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                        • *
                        • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                        • *
                        • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                        • *
                        * @sample ConfigAsyncClient.PutExternalEvaluation * @see AWS * API Documentation */ @Override public CompletableFuture putExternalEvaluation( PutExternalEvaluationRequest putExternalEvaluationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putExternalEvaluationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putExternalEvaluationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutExternalEvaluation"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutExternalEvaluationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutExternalEvaluation").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutExternalEvaluationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putExternalEvaluationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                        * Adds or updates an Config rule for your entire organization to evaluate if your Amazon Web Services resources * comply with your desired configurations. For information on how many organization Config rules you can have per * account, see Service * Limits in the Config Developer Guide. *

                        *

                        * Only a management account and a delegated administrator can create or update an organization Config rule. When * calling this API with a delegated administrator, you must ensure Organizations * ListDelegatedAdministrator permissions are added. An organization can have up to 3 delegated * administrators. *

                        *

                        * This API enables organization service access through the EnableAWSServiceAccess action and creates a * service-linked role AWSServiceRoleForConfigMultiAccountSetup in the management or delegated * administrator account of your organization. The service-linked role is created only when the role does not exist * in the caller account. Config verifies the existence of role with GetRole action. *

                        *

                        * To use this API with delegated administrator, register a delegated administrator by calling Amazon Web Services * Organization register-delegated-administrator for * config-multiaccountsetup.amazonaws.com. *

                        *

                        * There are two types of rules: Config Managed Rules and Config Custom Rules. You can use * PutOrganizationConfigRule to create both Config Managed Rules and Config Custom Rules. *

                        *

                        * Config Managed Rules are predefined, customizable rules created by Config. For a list of managed rules, see List of Config * Managed Rules. If you are adding an Config managed rule, you must specify the rule's identifier for the * RuleIdentifier key. *

                        *

                        * Config Custom Rules are rules that you create from scratch. There are two ways to create Config custom rules: * with Lambda functions ( Lambda Developer Guide) and with Guard (Guard GitHub Repository), a policy-as-code * language. Config custom rules created with Lambda are called Config Custom Lambda Rules and Config custom * rules created with Guard are called Config Custom Policy Rules. *

                        *

                        * If you are adding a new Config Custom Lambda rule, you first need to create an Lambda function in the management * account or a delegated administrator that the rule invokes to evaluate your resources. You also need to create an * IAM role in the managed account that can be assumed by the Lambda function. When you use * PutOrganizationConfigRule to add a Custom Lambda rule to Config, you must specify the Amazon * Resource Name (ARN) that Lambda assigns to the function. *

                        * *

                        * Prerequisite: Ensure you call EnableAllFeatures API to enable all features in an organization. *

                        *

                        * Make sure to specify one of either OrganizationCustomPolicyRuleMetadata for Custom Policy rules, * OrganizationCustomRuleMetadata for Custom Lambda rules, or * OrganizationManagedRuleMetadata for managed rules. *

                        *
                        * * @param putOrganizationConfigRuleRequest * @return A Java Future containing the result of the PutOrganizationConfigRule operation returned by the service.
                        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                          *
                        • MaxNumberOfOrganizationConfigRulesExceededException You have reached the limit of the number of * organization Config rules you can create. For more information, see see Service Limits * in the Config Developer Guide.
                        • *
                        • ResourceInUseException You see this exception in the following cases:

                          *
                            *
                          • *

                            * For DeleteConfigRule, Config is deleting this rule. Try your request again later. *

                            *
                          • *
                          • *

                            * For DeleteConfigRule, the rule is deleting your evaluation results. Try your request again later. *

                            *
                          • *
                          • *

                            * For DeleteConfigRule, a remediation action is associated with the rule and Config cannot delete this * rule. Delete the remediation action associated with the rule before deleting the rule and try your * request again later. *

                            *
                          • *
                          • *

                            * For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try your request again * later. *

                            *
                          • *
                          • *

                            * For DeleteOrganizationConfigRule, organization Config rule creation is in progress. Try your request * again later. *

                            *
                          • *
                          • *

                            * For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation, update, and * deletion is in progress. Try your request again later. *

                            *
                          • *
                          • *

                            * For DeleteConformancePack, a conformance pack creation, update, and deletion is in progress. Try your * request again later. *

                            *
                          • *
                          • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
                          • *
                          • ValidationException The requested action is not valid.

                            *

                            * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                            *

                            * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

                          • *
                          • OrganizationAccessDeniedException For PutConfigurationAggregator API, you can see this * exception for the following reasons:

                            *
                              *
                            • *

                              * No permission to call EnableAWSServiceAccess API *

                              *
                            • *
                            • *

                              * The configuration aggregator cannot be updated because your Amazon Web Services Organization management * account or the delegated administrator role changed. Delete this aggregator and create a new one with the * current Amazon Web Services Organization. *

                              *
                            • *
                            • *

                              * The configuration aggregator is associated with a previous Amazon Web Services Organization and Config * cannot aggregate data with current Amazon Web Services Organization. Delete this aggregator and create a * new one with the current Amazon Web Services Organization. *

                              *
                            • *
                            • *

                              * You are not a registered delegated administrator for Config with permissions to call * ListDelegatedAdministrators API. Ensure that the management account registers delagated * administrator for Config service principle name before the delegated administrator creates an aggregator. *

                              *
                            • *
                            *

                            * For all OrganizationConfigRule and OrganizationConformancePack APIs, Config * throws an exception if APIs are called from member accounts. All APIs must be called from organization * management account.

                          • *
                          • NoAvailableOrganizationException Organization is no longer available.
                          • *
                          • OrganizationAllFeaturesNotEnabledException Config resource cannot be created because your * organization does not have all features enabled.
                          • *
                          • InsufficientPermissionsException Indicates one of the following errors:

                            *
                              *
                            • *

                              * For PutConfigRule, the rule cannot be created because the IAM role assigned to Config lacks permissions * to perform the config:Put* action. *

                              *
                            • *
                            • *

                              * For PutConfigRule, the Lambda function cannot be invoked. Check the function ARN, and check the * function's permissions. *

                              *
                            • *
                            • *

                              * For PutOrganizationConfigRule, organization Config rule cannot be created because you do not have * permissions to call IAM GetRole action or create a service-linked role. *

                              *
                            • *
                            • *

                              * For PutConformancePack and PutOrganizationConformancePack, a conformance pack cannot be created because * you do not have the following permissions: *

                              *
                                *
                              • *

                                * You do not have permission to call IAM GetRole action or create a service-linked role. *

                                *
                              • *
                              • *

                                * You do not have permission to read Amazon S3 bucket or call SSM:GetDocument. *

                                *
                              • *
                              *
                            • *
                            • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                            • *
                            • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                            • *
                            • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                            • *
                            * @sample ConfigAsyncClient.PutOrganizationConfigRule * @see AWS API Documentation */ @Override public CompletableFuture putOrganizationConfigRule( PutOrganizationConfigRuleRequest putOrganizationConfigRuleRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putOrganizationConfigRuleRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putOrganizationConfigRuleRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutOrganizationConfigRule"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutOrganizationConfigRuleResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutOrganizationConfigRule").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutOrganizationConfigRuleRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putOrganizationConfigRuleRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                            * Deploys conformance packs across member accounts in an Amazon Web Services Organization. For information on how * many organization conformance packs and how many Config rules you can have per account, see Service Limits in * the Config Developer Guide. *

                            *

                            * Only a management account and a delegated administrator can call this API. When calling this API with a delegated * administrator, you must ensure Organizations ListDelegatedAdministrator permissions are added. An * organization can have up to 3 delegated administrators. *

                            *

                            * This API enables organization service access for config-multiaccountsetup.amazonaws.com through the * EnableAWSServiceAccess action and creates a service-linked role * AWSServiceRoleForConfigMultiAccountSetup in the management or delegated administrator account of * your organization. The service-linked role is created only when the role does not exist in the caller account. To * use this API with delegated administrator, register a delegated administrator by calling Amazon Web Services * Organization register-delegate-admin for config-multiaccountsetup.amazonaws.com. *

                            * *

                            * Prerequisite: Ensure you call EnableAllFeatures API to enable all features in an organization. *

                            *

                            * You must specify either the TemplateS3Uri or the TemplateBody parameter, but not both. * If you provide both Config uses the TemplateS3Uri parameter and ignores the * TemplateBody parameter. *

                            *

                            * Config sets the state of a conformance pack to CREATE_IN_PROGRESS and UPDATE_IN_PROGRESS until the conformance * pack is created or updated. You cannot update a conformance pack while it is in this state. *

                            *
                            * * @param putOrganizationConformancePackRequest * @return A Java Future containing the result of the PutOrganizationConformancePack operation returned by the * service.
                            * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                              *
                            • MaxNumberOfOrganizationConformancePacksExceededException You have reached the limit of the number of * organization conformance packs you can create in an account. For more information, see Service Limits * in the Config Developer Guide.
                            • *
                            • ResourceInUseException You see this exception in the following cases:

                              *
                                *
                              • *

                                * For DeleteConfigRule, Config is deleting this rule. Try your request again later. *

                                *
                              • *
                              • *

                                * For DeleteConfigRule, the rule is deleting your evaluation results. Try your request again later. *

                                *
                              • *
                              • *

                                * For DeleteConfigRule, a remediation action is associated with the rule and Config cannot delete this * rule. Delete the remediation action associated with the rule before deleting the rule and try your * request again later. *

                                *
                              • *
                              • *

                                * For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try your request again * later. *

                                *
                              • *
                              • *

                                * For DeleteOrganizationConfigRule, organization Config rule creation is in progress. Try your request * again later. *

                                *
                              • *
                              • *

                                * For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation, update, and * deletion is in progress. Try your request again later. *

                                *
                              • *
                              • *

                                * For DeleteConformancePack, a conformance pack creation, update, and deletion is in progress. Try your * request again later. *

                                *
                              • *
                              • ValidationException The requested action is not valid.

                                *

                                * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                                *

                                * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

                              • *
                              • OrganizationAccessDeniedException For PutConfigurationAggregator API, you can see this * exception for the following reasons:

                                *
                                  *
                                • *

                                  * No permission to call EnableAWSServiceAccess API *

                                  *
                                • *
                                • *

                                  * The configuration aggregator cannot be updated because your Amazon Web Services Organization management * account or the delegated administrator role changed. Delete this aggregator and create a new one with the * current Amazon Web Services Organization. *

                                  *
                                • *
                                • *

                                  * The configuration aggregator is associated with a previous Amazon Web Services Organization and Config * cannot aggregate data with current Amazon Web Services Organization. Delete this aggregator and create a * new one with the current Amazon Web Services Organization. *

                                  *
                                • *
                                • *

                                  * You are not a registered delegated administrator for Config with permissions to call * ListDelegatedAdministrators API. Ensure that the management account registers delagated * administrator for Config service principle name before the delegated administrator creates an aggregator. *

                                  *
                                • *
                                *

                                * For all OrganizationConfigRule and OrganizationConformancePack APIs, Config * throws an exception if APIs are called from member accounts. All APIs must be called from organization * management account.

                              • *
                              • InsufficientPermissionsException Indicates one of the following errors:

                                *
                                  *
                                • *

                                  * For PutConfigRule, the rule cannot be created because the IAM role assigned to Config lacks permissions * to perform the config:Put* action. *

                                  *
                                • *
                                • *

                                  * For PutConfigRule, the Lambda function cannot be invoked. Check the function ARN, and check the * function's permissions. *

                                  *
                                • *
                                • *

                                  * For PutOrganizationConfigRule, organization Config rule cannot be created because you do not have * permissions to call IAM GetRole action or create a service-linked role. *

                                  *
                                • *
                                • *

                                  * For PutConformancePack and PutOrganizationConformancePack, a conformance pack cannot be created because * you do not have the following permissions: *

                                  *
                                    *
                                  • *

                                    * You do not have permission to call IAM GetRole action or create a service-linked role. *

                                    *
                                  • *
                                  • *

                                    * You do not have permission to read Amazon S3 bucket or call SSM:GetDocument. *

                                    *
                                  • *
                                  *
                                • *
                                • OrganizationConformancePackTemplateValidationException You have specified a template that is not * valid or supported.
                                • *
                                • OrganizationAllFeaturesNotEnabledException Config resource cannot be created because your * organization does not have all features enabled.
                                • *
                                • NoAvailableOrganizationException Organization is no longer available.
                                • *
                                • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                • *
                                • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                • *
                                • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                • *
                                * @sample ConfigAsyncClient.PutOrganizationConformancePack * @see AWS API Documentation */ @Override public CompletableFuture putOrganizationConformancePack( PutOrganizationConformancePackRequest putOrganizationConformancePackRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putOrganizationConformancePackRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putOrganizationConformancePackRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutOrganizationConformancePack"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutOrganizationConformancePackResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutOrganizationConformancePack").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutOrganizationConformancePackRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putOrganizationConformancePackRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                                * Adds or updates the remediation configuration with a specific Config rule with the selected target or action. The * API creates the RemediationConfiguration object for the Config rule. The Config rule must already * exist for you to add a remediation configuration. The target (SSM document) must exist and have permissions to * use the target. *

                                * *

                                * Be aware of backward incompatible changes *

                                *

                                * If you make backward incompatible changes to the SSM document, you must call this again to ensure the * remediations can run. *

                                *

                                * This API does not support adding remediation configurations for service-linked Config Rules such as Organization * Config rules, the rules deployed by conformance packs, and rules deployed by Amazon Web Services Security Hub. *

                                *
                                *

                                * Required fields *

                                *

                                * For manual remediation configuration, you need to provide a value for automationAssumeRole or use a * value in the assumeRolefield to remediate your resources. The SSM automation document can use either * as long as it maps to a valid parameter. *

                                *

                                * However, for automatic remediation configuration, the only valid assumeRole field value is * AutomationAssumeRole and you need to provide a value for AutomationAssumeRole to * remediate your resources. *

                                *
                                *

                                * Auto remediation can be initiated even for compliant resources *

                                *

                                * If you enable auto remediation for a specific Config rule using the PutRemediationConfigurations API or the Config console, it initiates the remediation process for all * non-compliant resources for that specific rule. The auto remediation process relies on the compliance data * snapshot which is captured on a periodic basis. Any non-compliant resource that is updated between the snapshot * schedule will continue to be remediated based on the last known compliance data snapshot. *

                                *

                                * This means that in some cases auto remediation can be initiated even for compliant resources, since the bootstrap * processor uses a database that can have stale evaluation results based on the last known compliance data * snapshot. *

                                *
                                * * @param putRemediationConfigurationsRequest * @return A Java Future containing the result of the PutRemediationConfigurations operation returned by the * service.
                                * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                  *
                                • InsufficientPermissionsException Indicates one of the following errors:

                                  *
                                    *
                                  • *

                                    * For PutConfigRule, the rule cannot be created because the IAM role assigned to Config lacks permissions * to perform the config:Put* action. *

                                    *
                                  • *
                                  • *

                                    * For PutConfigRule, the Lambda function cannot be invoked. Check the function ARN, and check the * function's permissions. *

                                    *
                                  • *
                                  • *

                                    * For PutOrganizationConfigRule, organization Config rule cannot be created because you do not have * permissions to call IAM GetRole action or create a service-linked role. *

                                    *
                                  • *
                                  • *

                                    * For PutConformancePack and PutOrganizationConformancePack, a conformance pack cannot be created because * you do not have the following permissions: *

                                    *
                                      *
                                    • *

                                      * You do not have permission to call IAM GetRole action or create a service-linked role. *

                                      *
                                    • *
                                    • *

                                      * You do not have permission to read Amazon S3 bucket or call SSM:GetDocument. *

                                      *
                                    • *
                                    *
                                  • *
                                  • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
                                  • *
                                  • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                  • *
                                  • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                  • *
                                  • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                  • *
                                  * @sample ConfigAsyncClient.PutRemediationConfigurations * @see AWS API Documentation */ @Override public CompletableFuture putRemediationConfigurations( PutRemediationConfigurationsRequest putRemediationConfigurationsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putRemediationConfigurationsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putRemediationConfigurationsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutRemediationConfigurations"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutRemediationConfigurationsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutRemediationConfigurations").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutRemediationConfigurationsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putRemediationConfigurationsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                                  * A remediation exception is when a specified resource is no longer considered for auto-remediation. This API adds * a new exception or updates an existing exception for a specified resource with a specified Config rule. *

                                  * *

                                  * Exceptions block auto remediation *

                                  *

                                  * Config generates a remediation exception when a problem occurs running a remediation action for a specified * resource. Remediation exceptions blocks auto-remediation until the exception is cleared. *

                                  *
                                  *

                                  * Manual remediation is recommended when placing an exception *

                                  *

                                  * When placing an exception on an Amazon Web Services resource, it is recommended that remediation is set as manual * remediation until the given Config rule for the specified resource evaluates the resource as * NON_COMPLIANT. Once the resource has been evaluated as NON_COMPLIANT, you can add * remediation exceptions and change the remediation type back from Manual to Auto if you want to use * auto-remediation. Otherwise, using auto-remediation before a NON_COMPLIANT evaluation result can * delete resources before the exception is applied. *

                                  *
                                  *

                                  * Exceptions can only be performed on non-compliant resources *

                                  *

                                  * Placing an exception can only be performed on resources that are NON_COMPLIANT. If you use this API * for COMPLIANT resources or resources that are NOT_APPLICABLE, a remediation exception * will not be generated. For more information on the conditions that initiate the possible Config evaluation * results, see Concepts | * Config Rules in the Config Developer Guide. *

                                  *
                                  *

                                  * Auto remediation can be initiated even for compliant resources *

                                  *

                                  * If you enable auto remediation for a specific Config rule using the PutRemediationConfigurations API or the Config console, it initiates the remediation process for all * non-compliant resources for that specific rule. The auto remediation process relies on the compliance data * snapshot which is captured on a periodic basis. Any non-compliant resource that is updated between the snapshot * schedule will continue to be remediated based on the last known compliance data snapshot. *

                                  *

                                  * This means that in some cases auto remediation can be initiated even for compliant resources, since the bootstrap * processor uses a database that can have stale evaluation results based on the last known compliance data * snapshot. *

                                  *
                                  * * @param putRemediationExceptionsRequest * @return A Java Future containing the result of the PutRemediationExceptions operation returned by the service.
                                  * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                    *
                                  • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
                                  • *
                                  • InsufficientPermissionsException Indicates one of the following errors:

                                    *
                                      *
                                    • *

                                      * For PutConfigRule, the rule cannot be created because the IAM role assigned to Config lacks permissions * to perform the config:Put* action. *

                                      *
                                    • *
                                    • *

                                      * For PutConfigRule, the Lambda function cannot be invoked. Check the function ARN, and check the * function's permissions. *

                                      *
                                    • *
                                    • *

                                      * For PutOrganizationConfigRule, organization Config rule cannot be created because you do not have * permissions to call IAM GetRole action or create a service-linked role. *

                                      *
                                    • *
                                    • *

                                      * For PutConformancePack and PutOrganizationConformancePack, a conformance pack cannot be created because * you do not have the following permissions: *

                                      *
                                        *
                                      • *

                                        * You do not have permission to call IAM GetRole action or create a service-linked role. *

                                        *
                                      • *
                                      • *

                                        * You do not have permission to read Amazon S3 bucket or call SSM:GetDocument. *

                                        *
                                      • *
                                      *
                                    • *
                                    • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                    • *
                                    • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                    • *
                                    • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                    • *
                                    * @sample ConfigAsyncClient.PutRemediationExceptions * @see AWS API Documentation */ @Override public CompletableFuture putRemediationExceptions( PutRemediationExceptionsRequest putRemediationExceptionsRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putRemediationExceptionsRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putRemediationExceptionsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutRemediationExceptions"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutRemediationExceptionsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutRemediationExceptions").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutRemediationExceptionsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putRemediationExceptionsRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                                    * Records the configuration state for the resource provided in the request. The configuration state of a resource * is represented in Config as Configuration Items. Once this API records the configuration item, you can retrieve * the list of configuration items for the custom resource type using existing Config APIs. *

                                    * *

                                    * The custom resource type must be registered with CloudFormation. This API accepts the configuration item * registered with CloudFormation. *

                                    *

                                    * When you call this API, Config only stores configuration state of the resource provided in the request. This API * does not change or remediate the configuration of the resource. *

                                    *

                                    * Write-only schema properites are not recorded as part of the published configuration item. *

                                    *
                                    * * @param putResourceConfigRequest * @return A Java Future containing the result of the PutResourceConfig operation returned by the service.
                                    * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                      *
                                    • ValidationException The requested action is not valid.

                                      *

                                      * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                                      *

                                      * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

                                    • *
                                    • InsufficientPermissionsException Indicates one of the following errors:

                                      *
                                        *
                                      • *

                                        * For PutConfigRule, the rule cannot be created because the IAM role assigned to Config lacks permissions * to perform the config:Put* action. *

                                        *
                                      • *
                                      • *

                                        * For PutConfigRule, the Lambda function cannot be invoked. Check the function ARN, and check the * function's permissions. *

                                        *
                                      • *
                                      • *

                                        * For PutOrganizationConfigRule, organization Config rule cannot be created because you do not have * permissions to call IAM GetRole action or create a service-linked role. *

                                        *
                                      • *
                                      • *

                                        * For PutConformancePack and PutOrganizationConformancePack, a conformance pack cannot be created because * you do not have the following permissions: *

                                        *
                                          *
                                        • *

                                          * You do not have permission to call IAM GetRole action or create a service-linked role. *

                                          *
                                        • *
                                        • *

                                          * You do not have permission to read Amazon S3 bucket or call SSM:GetDocument. *

                                          *
                                        • *
                                        *
                                      • *
                                      • NoRunningConfigurationRecorderException There is no configuration recorder running.
                                      • *
                                      • MaxActiveResourcesExceededException You have reached the limit of active custom resource types in * your account. There is a limit of 100,000. Delete unused resources using DeleteResourceConfig .
                                      • *
                                      • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                      • *
                                      • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                      • *
                                      • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                      • *
                                      * @sample ConfigAsyncClient.PutResourceConfig * @see AWS API * Documentation */ @Override public CompletableFuture putResourceConfig(PutResourceConfigRequest putResourceConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putResourceConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putResourceConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutResourceConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutResourceConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutResourceConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutResourceConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putResourceConfigRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                                      * Creates and updates the retention configuration with details about retention period (number of days) that Config * stores your historical information. The API creates the RetentionConfiguration object and names the * object as default. When you have a RetentionConfiguration object named default, * calling the API modifies the default object. *

                                      * *

                                      * Currently, Config supports only one retention configuration per region in your account. *

                                      *
                                      * * @param putRetentionConfigurationRequest * @return A Java Future containing the result of the PutRetentionConfiguration operation returned by the service.
                                      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                        *
                                      • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
                                      • *
                                      • MaxNumberOfRetentionConfigurationsExceededException Failed to add the retention configuration because * a retention configuration with that name already exists.
                                      • *
                                      • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                      • *
                                      • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                      • *
                                      • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                      • *
                                      * @sample ConfigAsyncClient.PutRetentionConfiguration * @see AWS API Documentation */ @Override public CompletableFuture putRetentionConfiguration( PutRetentionConfigurationRequest putRetentionConfigurationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putRetentionConfigurationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putRetentionConfigurationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutRetentionConfiguration"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutRetentionConfigurationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutRetentionConfiguration").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutRetentionConfigurationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putRetentionConfigurationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                                      * Saves a new query or updates an existing saved query. The QueryName must be unique for a single * Amazon Web Services account and a single Amazon Web Services Region. You can create upto 300 queries in a single * Amazon Web Services account and a single Amazon Web Services Region. *

                                      * *

                                      * PutStoredQuery is an idempotent API. Subsequent requests won’t create a duplicate resource if one * was already created. If a following request has different tags values, Config will ignore these * differences and treat it as an idempotent request of the previous. In this case, tags will not be * updated, even if they are different. *

                                      *
                                      * * @param putStoredQueryRequest * @return A Java Future containing the result of the PutStoredQuery operation returned by the service.
                                      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                        *
                                      • ValidationException The requested action is not valid.

                                        *

                                        * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                                        *

                                        * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

                                      • *
                                      • TooManyTagsException You have reached the limit of the number of tags you can use. For more * information, see * Service Limits in the Config Developer Guide.
                                      • *
                                      • ResourceConcurrentModificationException Two users are trying to modify the same query at the same * time. Wait for a moment and try again.
                                      • *
                                      • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                      • *
                                      • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                      • *
                                      • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                      • *
                                      * @sample ConfigAsyncClient.PutStoredQuery * @see AWS API * Documentation */ @Override public CompletableFuture putStoredQuery(PutStoredQueryRequest putStoredQueryRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(putStoredQueryRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, putStoredQueryRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutStoredQuery"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutStoredQueryResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutStoredQuery").withProtocolMetadata(protocolMetadata) .withMarshaller(new PutStoredQueryRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(putStoredQueryRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                                      * Accepts a structured query language (SQL) SELECT command and an aggregator to query configuration state of Amazon * Web Services resources across multiple accounts and regions, performs the corresponding search, and returns * resource configurations matching the properties. *

                                      *

                                      * For more information about query components, see the Query Components * section in the Config Developer Guide. *

                                      * *

                                      * If you run an aggregation query (i.e., using GROUP BY or using aggregate functions such as * COUNT; e.g., * SELECT resourceId, COUNT(*) WHERE resourceType = 'AWS::IAM::Role' GROUP BY resourceId) and do not * specify the MaxResults or the Limit query parameters, the default page size is set to * 500. *

                                      *

                                      * If you run a non-aggregation query (i.e., not using GROUP BY or aggregate function; e.g., * SELECT * WHERE resourceType = 'AWS::IAM::Role') and do not specify the MaxResults or * the Limit query parameters, the default page size is set to 25. *

                                      *
                                      * * @param selectAggregateResourceConfigRequest * @return A Java Future containing the result of the SelectAggregateResourceConfig operation returned by the * service.
                                      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                        *
                                      • InvalidExpressionException The syntax of the query is incorrect.
                                      • *
                                      • NoSuchConfigurationAggregatorException You have specified a configuration aggregator that does not * exist.
                                      • *
                                      • InvalidLimitException The specified limit is outside the allowable range.
                                      • *
                                      • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
                                      • *
                                      • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                      • *
                                      • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                      • *
                                      • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                      • *
                                      * @sample ConfigAsyncClient.SelectAggregateResourceConfig * @see AWS API Documentation */ @Override public CompletableFuture selectAggregateResourceConfig( SelectAggregateResourceConfigRequest selectAggregateResourceConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(selectAggregateResourceConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, selectAggregateResourceConfigRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "SelectAggregateResourceConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, SelectAggregateResourceConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("SelectAggregateResourceConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new SelectAggregateResourceConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(selectAggregateResourceConfigRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                                      * Accepts a structured query language (SQL) SELECT command, performs the corresponding search, and * returns resource configurations matching the properties. *

                                      *

                                      * For more information about query components, see the Query Components * section in the Config Developer Guide. *

                                      * * @param selectResourceConfigRequest * @return A Java Future containing the result of the SelectResourceConfig operation returned by the service.
                                      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                        *
                                      • InvalidExpressionException The syntax of the query is incorrect.
                                      • *
                                      • InvalidLimitException The specified limit is outside the allowable range.
                                      • *
                                      • InvalidNextTokenException The specified next token is not valid. Specify the nextToken * string that was returned in the previous response to get the next page of results.
                                      • *
                                      • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                      • *
                                      • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                      • *
                                      • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                      • *
                                      * @sample ConfigAsyncClient.SelectResourceConfig * @see AWS * API Documentation */ @Override public CompletableFuture selectResourceConfig( SelectResourceConfigRequest selectResourceConfigRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(selectResourceConfigRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, selectResourceConfigRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "SelectResourceConfig"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, SelectResourceConfigResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("SelectResourceConfig").withProtocolMetadata(protocolMetadata) .withMarshaller(new SelectResourceConfigRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(selectResourceConfigRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                                      * Runs an on-demand evaluation for the specified Config rules against the last known configuration state of the * resources. Use StartConfigRulesEvaluation when you want to test that a rule you updated is working * as expected. StartConfigRulesEvaluation does not re-record the latest configuration state for your * resources. It re-runs an evaluation against the last known state of your resources. *

                                      *

                                      * You can specify up to 25 Config rules per request. *

                                      *

                                      * An existing StartConfigRulesEvaluation call for the specified rules must complete before you can * call the API again. If you chose to have Config stream to an Amazon SNS topic, you will receive a * ConfigRuleEvaluationStarted notification when the evaluation starts. *

                                      * *

                                      * You don't need to call the StartConfigRulesEvaluation API to run an evaluation for a new rule. When * you create a rule, Config evaluates your resources against the rule automatically. *

                                      *
                                      *

                                      * The StartConfigRulesEvaluation API is useful if you want to run on-demand evaluations, such as the * following example: *

                                      *
                                        *
                                      1. *

                                        * You have a custom rule that evaluates your IAM resources every 24 hours. *

                                        *
                                      2. *
                                      3. *

                                        * You update your Lambda function to add additional conditions to your rule. *

                                        *
                                      4. *
                                      5. *

                                        * Instead of waiting for the next periodic evaluation, you call the StartConfigRulesEvaluation API. *

                                        *
                                      6. *
                                      7. *

                                        * Config invokes your Lambda function and evaluates your IAM resources. *

                                        *
                                      8. *
                                      9. *

                                        * Your custom rule will still run periodic evaluations every 24 hours. *

                                        *
                                      10. *
                                      * * @param startConfigRulesEvaluationRequest * @return A Java Future containing the result of the StartConfigRulesEvaluation operation returned by the service.
                                      * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                        *
                                      • NoSuchConfigRuleException The Config rule in the request is not valid. Verify that the rule is an * Config Process Check rule, that the rule name is correct, and that valid Amazon Resouce Names (ARNs) are * used before trying again.
                                      • *
                                      • LimitExceededException For StartConfigRulesEvaluation API, this exception is thrown if * an evaluation is in progress or if you call the StartConfigRulesEvaluation API more than once per * minute.

                                        *

                                        * For PutConfigurationAggregator API, this exception is thrown if the number of accounts and * aggregators exceeds the limit.

                                      • *
                                      • ResourceInUseException You see this exception in the following cases:

                                        *
                                          *
                                        • *

                                          * For DeleteConfigRule, Config is deleting this rule. Try your request again later. *

                                          *
                                        • *
                                        • *

                                          * For DeleteConfigRule, the rule is deleting your evaluation results. Try your request again later. *

                                          *
                                        • *
                                        • *

                                          * For DeleteConfigRule, a remediation action is associated with the rule and Config cannot delete this * rule. Delete the remediation action associated with the rule before deleting the rule and try your * request again later. *

                                          *
                                        • *
                                        • *

                                          * For PutConfigOrganizationRule, organization Config rule deletion is in progress. Try your request again * later. *

                                          *
                                        • *
                                        • *

                                          * For DeleteOrganizationConfigRule, organization Config rule creation is in progress. Try your request * again later. *

                                          *
                                        • *
                                        • *

                                          * For PutConformancePack and PutOrganizationConformancePack, a conformance pack creation, update, and * deletion is in progress. Try your request again later. *

                                          *
                                        • *
                                        • *

                                          * For DeleteConformancePack, a conformance pack creation, update, and deletion is in progress. Try your * request again later. *

                                          *
                                        • *
                                        • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
                                        • *
                                        • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                        • *
                                        • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                        • *
                                        • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                        • *
                                        * @sample ConfigAsyncClient.StartConfigRulesEvaluation * @see AWS API Documentation */ @Override public CompletableFuture startConfigRulesEvaluation( StartConfigRulesEvaluationRequest startConfigRulesEvaluationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(startConfigRulesEvaluationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, startConfigRulesEvaluationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StartConfigRulesEvaluation"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, StartConfigRulesEvaluationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("StartConfigRulesEvaluation").withProtocolMetadata(protocolMetadata) .withMarshaller(new StartConfigRulesEvaluationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(startConfigRulesEvaluationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                                        * Starts recording configurations of the Amazon Web Services resources you have selected to record in your Amazon * Web Services account. *

                                        *

                                        * You must have created at least one delivery channel to successfully start the configuration recorder. *

                                        * * @param startConfigurationRecorderRequest * The input for the StartConfigurationRecorder action. * @return A Java Future containing the result of the StartConfigurationRecorder operation returned by the service.
                                        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                          *
                                        • NoSuchConfigurationRecorderException You have specified a configuration recorder that does not exist. *
                                        • *
                                        • NoAvailableDeliveryChannelException There is no delivery channel available to record configurations.
                                        • *
                                        • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                        • *
                                        • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                        • *
                                        • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                        • *
                                        * @sample ConfigAsyncClient.StartConfigurationRecorder * @see AWS API Documentation */ @Override public CompletableFuture startConfigurationRecorder( StartConfigurationRecorderRequest startConfigurationRecorderRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(startConfigurationRecorderRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, startConfigurationRecorderRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StartConfigurationRecorder"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, StartConfigurationRecorderResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("StartConfigurationRecorder").withProtocolMetadata(protocolMetadata) .withMarshaller(new StartConfigurationRecorderRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(startConfigurationRecorderRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                                        * Runs an on-demand remediation for the specified Config rules against the last known remediation configuration. It * runs an execution against the current state of your resources. Remediation execution is asynchronous. *

                                        *

                                        * You can specify up to 100 resource keys per request. An existing StartRemediationExecution call for the specified * resource keys must complete before you can call the API again. *

                                        * * @param startRemediationExecutionRequest * @return A Java Future containing the result of the StartRemediationExecution operation returned by the service.
                                        * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                          *
                                        • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
                                        • *
                                        • InsufficientPermissionsException Indicates one of the following errors:

                                          *
                                            *
                                          • *

                                            * For PutConfigRule, the rule cannot be created because the IAM role assigned to Config lacks permissions * to perform the config:Put* action. *

                                            *
                                          • *
                                          • *

                                            * For PutConfigRule, the Lambda function cannot be invoked. Check the function ARN, and check the * function's permissions. *

                                            *
                                          • *
                                          • *

                                            * For PutOrganizationConfigRule, organization Config rule cannot be created because you do not have * permissions to call IAM GetRole action or create a service-linked role. *

                                            *
                                          • *
                                          • *

                                            * For PutConformancePack and PutOrganizationConformancePack, a conformance pack cannot be created because * you do not have the following permissions: *

                                            *
                                              *
                                            • *

                                              * You do not have permission to call IAM GetRole action or create a service-linked role. *

                                              *
                                            • *
                                            • *

                                              * You do not have permission to read Amazon S3 bucket or call SSM:GetDocument. *

                                              *
                                            • *
                                            *
                                          • *
                                          • NoSuchRemediationConfigurationException You specified an Config rule without a remediation * configuration.
                                          • *
                                          • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                          • *
                                          • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                          • *
                                          • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                          • *
                                          * @sample ConfigAsyncClient.StartRemediationExecution * @see AWS API Documentation */ @Override public CompletableFuture startRemediationExecution( StartRemediationExecutionRequest startRemediationExecutionRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(startRemediationExecutionRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, startRemediationExecutionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StartRemediationExecution"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, StartRemediationExecutionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("StartRemediationExecution").withProtocolMetadata(protocolMetadata) .withMarshaller(new StartRemediationExecutionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(startRemediationExecutionRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                                          * Runs an on-demand evaluation for the specified resource to determine whether the resource details will comply * with configured Config rules. You can also use it for evaluation purposes. Config recommends using an evaluation * context. It runs an execution against the resource details with all of the Config rules in your account that * match with the specified proactive mode and resource type. *

                                          * *

                                          * Ensure you have the cloudformation:DescribeType role setup to validate the resource type schema. *

                                          *

                                          * You can find the Resource type * schema in "Amazon Web Services public extensions" within the CloudFormation registry or with the * following CLI commmand: * aws cloudformation describe-type --type-name "AWS::S3::Bucket" --type RESOURCE. *

                                          *

                                          * For more information, see Managing * extensions through the CloudFormation registry and Amazon * Web Services resource and property types reference in the CloudFormation User Guide. *

                                          *
                                          * * @param startResourceEvaluationRequest * @return A Java Future containing the result of the StartResourceEvaluation operation returned by the service.
                                          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                            *
                                          • InvalidParameterValueException One or more of the specified parameters are not valid. Verify that * your parameters are valid and try again.
                                          • *
                                          • IdempotentParameterMismatchException Using the same client token with one or more different * parameters. Specify a new client token with the parameter changes and try again.
                                          • *
                                          • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                          • *
                                          • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                          • *
                                          • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                          • *
                                          * @sample ConfigAsyncClient.StartResourceEvaluation * @see AWS API Documentation */ @Override public CompletableFuture startResourceEvaluation( StartResourceEvaluationRequest startResourceEvaluationRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(startResourceEvaluationRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, startResourceEvaluationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StartResourceEvaluation"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, StartResourceEvaluationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("StartResourceEvaluation").withProtocolMetadata(protocolMetadata) .withMarshaller(new StartResourceEvaluationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(startResourceEvaluationRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                                          * Stops recording configurations of the Amazon Web Services resources you have selected to record in your Amazon * Web Services account. *

                                          * * @param stopConfigurationRecorderRequest * The input for the StopConfigurationRecorder action. * @return A Java Future containing the result of the StopConfigurationRecorder operation returned by the service.
                                          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                            *
                                          • NoSuchConfigurationRecorderException You have specified a configuration recorder that does not exist. *
                                          • *
                                          • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                          • *
                                          • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                          • *
                                          • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                          • *
                                          * @sample ConfigAsyncClient.StopConfigurationRecorder * @see AWS API Documentation */ @Override public CompletableFuture stopConfigurationRecorder( StopConfigurationRecorderRequest stopConfigurationRecorderRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(stopConfigurationRecorderRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, stopConfigurationRecorderRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StopConfigurationRecorder"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, StopConfigurationRecorderResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("StopConfigurationRecorder").withProtocolMetadata(protocolMetadata) .withMarshaller(new StopConfigurationRecorderRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(stopConfigurationRecorderRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                                          * Associates the specified tags to a resource with the specified resourceArn. If existing tags on a resource are * not specified in the request parameters, they are not changed. If existing tags are specified, however, then * their values will be updated. When a resource is deleted, the tags associated with that resource are deleted as * well. *

                                          * * @param tagResourceRequest * @return A Java Future containing the result of the TagResource operation returned by the service.
                                          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                            *
                                          • ValidationException The requested action is not valid.

                                            *

                                            * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                                            *

                                            * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

                                          • *
                                          • ResourceNotFoundException You have specified a resource that does not exist.
                                          • *
                                          • TooManyTagsException You have reached the limit of the number of tags you can use. For more * information, see * Service Limits in the Config Developer Guide.
                                          • *
                                          • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                          • *
                                          • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                          • *
                                          • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                          • *
                                          * @sample ConfigAsyncClient.TagResource * @see AWS API * Documentation */ @Override public CompletableFuture tagResource(TagResourceRequest tagResourceRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(tagResourceRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, tagResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "TagResource"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, TagResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("TagResource").withProtocolMetadata(protocolMetadata) .withMarshaller(new TagResourceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(tagResourceRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } /** *

                                          * Deletes specified tags from a resource. *

                                          * * @param untagResourceRequest * @return A Java Future containing the result of the UntagResource operation returned by the service.
                                          * The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. The exception returned is wrapped with CompletionException, so you need to invoke * {@link Throwable#getCause} to retrieve the underlying exception. *
                                            *
                                          • ValidationException The requested action is not valid.

                                            *

                                            * For PutStoredQuery, you will see this exception if there are missing required fields or if the input * value fails the validation, or if you are trying to create more than 300 queries. *

                                            *

                                            * For GetStoredQuery, ListStoredQuery, and DeleteStoredQuery you will see this exception if there are * missing required fields or if the input value fails the validation.

                                          • *
                                          • ResourceNotFoundException You have specified a resource that does not exist.
                                          • *
                                          • SdkException Base class for all exceptions that can be thrown by the SDK (both service and client). * Can be used for catch all scenarios.
                                          • *
                                          • SdkClientException If any client side error occurs such as an IO related failure, failure to get * credentials, etc.
                                          • *
                                          • ConfigException Base class for all service exceptions. Unknown exceptions will be thrown as an * instance of this type.
                                          • *
                                          * @sample ConfigAsyncClient.UntagResource * @see AWS API * Documentation */ @Override public CompletableFuture untagResource(UntagResourceRequest untagResourceRequest) { SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration(untagResourceRequest, this.clientConfiguration); List metricPublishers = resolveMetricPublishers(clientConfiguration, untagResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Config Service"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UntagResource"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, UntagResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UntagResource").withProtocolMetadata(protocolMetadata) .withMarshaller(new UntagResourceRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withRequestConfiguration(clientConfiguration).withMetricCollector(apiCallMetricCollector) .withInput(untagResourceRequest)); CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); }); executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture); return executeFuture; } catch (Throwable t) { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); return CompletableFutureUtils.failedFuture(t); } } @Override public final ConfigServiceClientConfiguration serviceClientConfiguration() { return new ConfigServiceClientConfigurationBuilder(this.clientConfiguration.toBuilder()).build(); } @Override public final String serviceName() { return SERVICE_NAME; } private > T init(T builder) { return builder .clientConfiguration(clientConfiguration) .defaultServiceExceptionSupplier(ConfigException::builder) .protocol(AwsJsonProtocol.AWS_JSON) .protocolVersion("1.1") .registerModeledException( ExceptionMetadata.builder().errorCode("NoRunningConfigurationRecorderException") .exceptionBuilderSupplier(NoRunningConfigurationRecorderException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("OrganizationConformancePackTemplateValidationException") .exceptionBuilderSupplier(OrganizationConformancePackTemplateValidationException::builder) .httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ResourceNotDiscoveredException") .exceptionBuilderSupplier(ResourceNotDiscoveredException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("NoSuchRemediationConfigurationException") .exceptionBuilderSupplier(NoSuchRemediationConfigurationException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("NoAvailableDeliveryChannelException") .exceptionBuilderSupplier(NoAvailableDeliveryChannelException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("NoSuchRemediationExceptionException") .exceptionBuilderSupplier(NoSuchRemediationExceptionException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("NoSuchRetentionConfigurationException") .exceptionBuilderSupplier(NoSuchRetentionConfigurationException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidResultTokenException") .exceptionBuilderSupplier(InvalidResultTokenException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("OversizedConfigurationItemException") .exceptionBuilderSupplier(OversizedConfigurationItemException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ResourceConcurrentModificationException") .exceptionBuilderSupplier(ResourceConcurrentModificationException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InsufficientDeliveryPolicyException") .exceptionBuilderSupplier(InsufficientDeliveryPolicyException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("NoSuchConfigurationAggregatorException") .exceptionBuilderSupplier(NoSuchConfigurationAggregatorException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("RemediationInProgressException") .exceptionBuilderSupplier(RemediationInProgressException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("OrganizationAccessDeniedException") .exceptionBuilderSupplier(OrganizationAccessDeniedException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("NoAvailableConfigurationRecorderException") .exceptionBuilderSupplier(NoAvailableConfigurationRecorderException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("NoAvailableOrganizationException") .exceptionBuilderSupplier(NoAvailableOrganizationException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("NoSuchDeliveryChannelException") .exceptionBuilderSupplier(NoSuchDeliveryChannelException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidNextTokenException") .exceptionBuilderSupplier(InvalidNextTokenException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("LimitExceededException") .exceptionBuilderSupplier(LimitExceededException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("LastDeliveryChannelDeleteFailedException") .exceptionBuilderSupplier(LastDeliveryChannelDeleteFailedException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("OrganizationAllFeaturesNotEnabledException") .exceptionBuilderSupplier(OrganizationAllFeaturesNotEnabledException::builder) .httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ResourceNotFoundException") .exceptionBuilderSupplier(ResourceNotFoundException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidLimitException") .exceptionBuilderSupplier(InvalidLimitException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("NoSuchOrganizationConfigRuleException") .exceptionBuilderSupplier(NoSuchOrganizationConfigRuleException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("IdempotentParameterMismatch") .exceptionBuilderSupplier(IdempotentParameterMismatchException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("MaxNumberOfDeliveryChannelsExceededException") .exceptionBuilderSupplier(MaxNumberOfDeliveryChannelsExceededException::builder) .httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("NoSuchConfigurationRecorderException") .exceptionBuilderSupplier(NoSuchConfigurationRecorderException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ValidationException") .exceptionBuilderSupplier(ValidationException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("MaxNumberOfConfigRulesExceededException") .exceptionBuilderSupplier(MaxNumberOfConfigRulesExceededException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InsufficientPermissionsException") .exceptionBuilderSupplier(InsufficientPermissionsException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidExpressionException") .exceptionBuilderSupplier(InvalidExpressionException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidSNSTopicARNException") .exceptionBuilderSupplier(InvalidSnsTopicArnException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("NoSuchOrganizationConformancePackException") .exceptionBuilderSupplier(NoSuchOrganizationConformancePackException::builder) .httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("MaxNumberOfConformancePacksExceededException") .exceptionBuilderSupplier(MaxNumberOfConformancePacksExceededException::builder) .httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("MaxNumberOfOrganizationConfigRulesExceededException") .exceptionBuilderSupplier(MaxNumberOfOrganizationConfigRulesExceededException::builder) .httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("MaxActiveResourcesExceededException") .exceptionBuilderSupplier(MaxActiveResourcesExceededException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidParameterValueException") .exceptionBuilderSupplier(InvalidParameterValueException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ResourceInUseException") .exceptionBuilderSupplier(ResourceInUseException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("NoSuchConfigRuleInConformancePackException") .exceptionBuilderSupplier(NoSuchConfigRuleInConformancePackException::builder) .httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("MaxNumberOfConfigurationRecordersExceededException") .exceptionBuilderSupplier(MaxNumberOfConfigurationRecordersExceededException::builder) .httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("NoSuchConformancePackException") .exceptionBuilderSupplier(NoSuchConformancePackException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidS3KmsKeyArnException") .exceptionBuilderSupplier(InvalidS3KmsKeyArnException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("NoSuchBucketException") .exceptionBuilderSupplier(NoSuchBucketException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidRecordingGroupException") .exceptionBuilderSupplier(InvalidRecordingGroupException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidConfigurationRecorderNameException") .exceptionBuilderSupplier(InvalidConfigurationRecorderNameException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("TooManyTagsException") .exceptionBuilderSupplier(TooManyTagsException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("MaxNumberOfRetentionConfigurationsExceededException") .exceptionBuilderSupplier(MaxNumberOfRetentionConfigurationsExceededException::builder) .httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidTimeRangeException") .exceptionBuilderSupplier(InvalidTimeRangeException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("NoSuchConfigRuleException") .exceptionBuilderSupplier(NoSuchConfigRuleException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidRoleException") .exceptionBuilderSupplier(InvalidRoleException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidDeliveryChannelNameException") .exceptionBuilderSupplier(InvalidDeliveryChannelNameException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ConformancePackTemplateValidationException") .exceptionBuilderSupplier(ConformancePackTemplateValidationException::builder) .httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("MaxNumberOfOrganizationConformancePacksExceededException") .exceptionBuilderSupplier(MaxNumberOfOrganizationConformancePacksExceededException::builder) .httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidS3KeyPrefixException") .exceptionBuilderSupplier(InvalidS3KeyPrefixException::builder).httpStatusCode(400).build()); } private static List resolveMetricPublishers(SdkClientConfiguration clientConfiguration, RequestOverrideConfiguration requestOverrideConfiguration) { List publishers = null; if (requestOverrideConfiguration != null) { publishers = requestOverrideConfiguration.metricPublishers(); } if (publishers == null || publishers.isEmpty()) { publishers = clientConfiguration.option(SdkClientOption.METRIC_PUBLISHERS); } if (publishers == null) { publishers = Collections.emptyList(); } return publishers; } private void updateRetryStrategyClientConfiguration(SdkClientConfiguration.Builder configuration) { ClientOverrideConfiguration.Builder builder = configuration.asOverrideConfigurationBuilder(); RetryMode retryMode = builder.retryMode(); if (retryMode != null) { configuration.option(SdkClientOption.RETRY_STRATEGY, AwsRetryStrategy.forRetryMode(retryMode)); } else { Consumer> configurator = builder.retryStrategyConfigurator(); if (configurator != null) { RetryStrategy.Builder defaultBuilder = AwsRetryStrategy.defaultRetryStrategy().toBuilder(); configurator.accept(defaultBuilder); configuration.option(SdkClientOption.RETRY_STRATEGY, defaultBuilder.build()); } else { RetryStrategy retryStrategy = builder.retryStrategy(); if (retryStrategy != null) { configuration.option(SdkClientOption.RETRY_STRATEGY, retryStrategy); } } } configuration.option(SdkClientOption.CONFIGURED_RETRY_MODE, null); configuration.option(SdkClientOption.CONFIGURED_RETRY_STRATEGY, null); configuration.option(SdkClientOption.CONFIGURED_RETRY_CONFIGURATOR, null); } private SdkClientConfiguration updateSdkClientConfiguration(SdkRequest request, SdkClientConfiguration clientConfiguration) { List plugins = request.overrideConfiguration().map(c -> c.plugins()).orElse(Collections.emptyList()); SdkClientConfiguration.Builder configuration = clientConfiguration.toBuilder(); if (plugins.isEmpty()) { return configuration.build(); } ConfigServiceClientConfigurationBuilder serviceConfigBuilder = new ConfigServiceClientConfigurationBuilder(configuration); for (SdkPlugin plugin : plugins) { plugin.configureClient(serviceConfigBuilder); } updateRetryStrategyClientConfiguration(configuration); return configuration.build(); } private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, JsonOperationMetadata operationMetadata) { return protocolFactory.createErrorResponseHandler(operationMetadata); } @Override public void close() { clientHandler.close(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy