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

software.amazon.awssdk.services.cloudwatchlogs.DefaultCloudWatchLogsAsyncClient Maven / Gradle / Ivy

/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
 * the License. A copy of the License is located at
 * 
 * http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
 * and limitations under the License.
 */

package software.amazon.awssdk.services.cloudwatchlogs;

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.AwsRequestOverrideConfiguration;
import software.amazon.awssdk.awscore.client.handler.AwsAsyncClientHandler;
import software.amazon.awssdk.awscore.exception.AwsServiceException;
import software.amazon.awssdk.core.ApiName;
import software.amazon.awssdk.core.RequestOverrideConfiguration;
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.util.VersionInfo;
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.services.cloudwatchlogs.model.AssociateKmsKeyRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.AssociateKmsKeyResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.CancelExportTaskRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.CancelExportTaskResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.CloudWatchLogsException;
import software.amazon.awssdk.services.cloudwatchlogs.model.CloudWatchLogsRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.CreateExportTaskRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.CreateExportTaskResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.CreateLogGroupRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.CreateLogGroupResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.CreateLogStreamRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.CreateLogStreamResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.DataAlreadyAcceptedException;
import software.amazon.awssdk.services.cloudwatchlogs.model.DeleteDestinationRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.DeleteDestinationResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.DeleteLogGroupRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.DeleteLogGroupResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.DeleteLogStreamRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.DeleteLogStreamResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.DeleteMetricFilterRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.DeleteMetricFilterResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.DeleteQueryDefinitionRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.DeleteQueryDefinitionResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.DeleteResourcePolicyRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.DeleteResourcePolicyResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.DeleteRetentionPolicyRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.DeleteRetentionPolicyResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.DeleteSubscriptionFilterRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.DeleteSubscriptionFilterResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeDestinationsRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeDestinationsResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeExportTasksRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeExportTasksResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeLogGroupsRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeLogGroupsResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeLogStreamsRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeLogStreamsResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeMetricFiltersRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeMetricFiltersResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeQueriesRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeQueriesResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeQueryDefinitionsRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeQueryDefinitionsResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeResourcePoliciesRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeResourcePoliciesResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeSubscriptionFiltersRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeSubscriptionFiltersResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.DisassociateKmsKeyRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.DisassociateKmsKeyResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.FilterLogEventsRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.FilterLogEventsResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.GetLogEventsRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.GetLogEventsResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.GetLogGroupFieldsRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.GetLogGroupFieldsResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.GetLogRecordRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.GetLogRecordResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.GetQueryResultsRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.GetQueryResultsResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.InvalidOperationException;
import software.amazon.awssdk.services.cloudwatchlogs.model.InvalidParameterException;
import software.amazon.awssdk.services.cloudwatchlogs.model.InvalidSequenceTokenException;
import software.amazon.awssdk.services.cloudwatchlogs.model.LimitExceededException;
import software.amazon.awssdk.services.cloudwatchlogs.model.ListTagsLogGroupRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.ListTagsLogGroupResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.MalformedQueryException;
import software.amazon.awssdk.services.cloudwatchlogs.model.OperationAbortedException;
import software.amazon.awssdk.services.cloudwatchlogs.model.PutDestinationPolicyRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.PutDestinationPolicyResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.PutDestinationRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.PutDestinationResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.PutLogEventsRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.PutLogEventsResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.PutMetricFilterRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.PutMetricFilterResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.PutQueryDefinitionRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.PutQueryDefinitionResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.PutResourcePolicyRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.PutResourcePolicyResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.PutRetentionPolicyRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.PutRetentionPolicyResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.PutSubscriptionFilterRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.PutSubscriptionFilterResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.ResourceAlreadyExistsException;
import software.amazon.awssdk.services.cloudwatchlogs.model.ResourceNotFoundException;
import software.amazon.awssdk.services.cloudwatchlogs.model.ServiceUnavailableException;
import software.amazon.awssdk.services.cloudwatchlogs.model.StartQueryRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.StartQueryResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.StopQueryRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.StopQueryResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.TagLogGroupRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.TagLogGroupResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.TestMetricFilterRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.TestMetricFilterResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.UnrecognizedClientException;
import software.amazon.awssdk.services.cloudwatchlogs.model.UntagLogGroupRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.UntagLogGroupResponse;
import software.amazon.awssdk.services.cloudwatchlogs.paginators.DescribeDestinationsPublisher;
import software.amazon.awssdk.services.cloudwatchlogs.paginators.DescribeLogGroupsPublisher;
import software.amazon.awssdk.services.cloudwatchlogs.paginators.DescribeLogStreamsPublisher;
import software.amazon.awssdk.services.cloudwatchlogs.paginators.DescribeMetricFiltersPublisher;
import software.amazon.awssdk.services.cloudwatchlogs.paginators.DescribeSubscriptionFiltersPublisher;
import software.amazon.awssdk.services.cloudwatchlogs.paginators.FilterLogEventsPublisher;
import software.amazon.awssdk.services.cloudwatchlogs.paginators.GetLogEventsPublisher;
import software.amazon.awssdk.services.cloudwatchlogs.transform.AssociateKmsKeyRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.CancelExportTaskRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.CreateExportTaskRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.CreateLogGroupRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.CreateLogStreamRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.DeleteDestinationRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.DeleteLogGroupRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.DeleteLogStreamRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.DeleteMetricFilterRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.DeleteQueryDefinitionRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.DeleteResourcePolicyRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.DeleteRetentionPolicyRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.DeleteSubscriptionFilterRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.DescribeDestinationsRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.DescribeExportTasksRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.DescribeLogGroupsRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.DescribeLogStreamsRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.DescribeMetricFiltersRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.DescribeQueriesRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.DescribeQueryDefinitionsRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.DescribeResourcePoliciesRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.DescribeSubscriptionFiltersRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.DisassociateKmsKeyRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.FilterLogEventsRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.GetLogEventsRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.GetLogGroupFieldsRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.GetLogRecordRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.GetQueryResultsRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.ListTagsLogGroupRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.PutDestinationPolicyRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.PutDestinationRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.PutLogEventsRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.PutMetricFilterRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.PutQueryDefinitionRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.PutResourcePolicyRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.PutRetentionPolicyRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.PutSubscriptionFilterRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.StartQueryRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.StopQueryRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.TagLogGroupRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.TestMetricFilterRequestMarshaller;
import software.amazon.awssdk.services.cloudwatchlogs.transform.UntagLogGroupRequestMarshaller;
import software.amazon.awssdk.utils.CompletableFutureUtils;

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

    private final AsyncClientHandler clientHandler;

    private final AwsJsonProtocolFactory protocolFactory;

    private final SdkClientConfiguration clientConfiguration;

    protected DefaultCloudWatchLogsAsyncClient(SdkClientConfiguration clientConfiguration) {
        this.clientHandler = new AwsAsyncClientHandler(clientConfiguration);
        this.clientConfiguration = clientConfiguration;
        this.protocolFactory = init(AwsJsonProtocolFactory.builder()).build();
    }

    @Override
    public final String serviceName() {
        return SERVICE_NAME;
    }

    /**
     * 

* Associates the specified AWS Key Management Service (AWS KMS) customer master key (CMK) with the specified log * group. *

*

* Associating an AWS KMS CMK with a log group overrides any existing associations between the log group and a CMK. * After a CMK is associated with a log group, all newly ingested data for the log group is encrypted using the CMK. * This association is stored as long as the data encrypted with the CMK is still within Amazon CloudWatch Logs. * This enables Amazon CloudWatch Logs to decrypt this data whenever it is requested. *

* *

* CloudWatch Logs supports only symmetric CMKs. Do not use an associate an asymmetric CMK with your log group. For * more information, see Using Symmetric and * Asymmetric Keys. *

*
*

* It can take up to 5 minutes for this operation to take effect. *

*

* If you attempt to associate a CMK with a log group but the CMK does not exist or the CMK is disabled, you receive * an InvalidParameterException error. *

* * @param associateKmsKeyRequest * @return A Java Future containing the result of the AssociateKmsKey operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • OperationAbortedException Multiple requests to update the same resource were in conflict.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.AssociateKmsKey * @see AWS API * Documentation */ @Override public CompletableFuture associateKmsKey(AssociateKmsKeyRequest associateKmsKeyRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, associateKmsKeyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "AssociateKmsKey"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, AssociateKmsKeyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("AssociateKmsKey") .withMarshaller(new AssociateKmsKeyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(associateKmsKeyRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = associateKmsKeyRequest.overrideConfiguration().orElse(null); 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); } } /** *

* Cancels the specified export task. *

*

* The task must be in the PENDING or RUNNING state. *

* * @param cancelExportTaskRequest * @return A Java Future containing the result of the CancelExportTask operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • InvalidOperationException The operation is not valid on the specified resource.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.CancelExportTask * @see AWS API * Documentation */ @Override public CompletableFuture cancelExportTask(CancelExportTaskRequest cancelExportTaskRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, cancelExportTaskRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CancelExportTask"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CancelExportTaskResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CancelExportTask") .withMarshaller(new CancelExportTaskRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(cancelExportTaskRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = cancelExportTaskRequest.overrideConfiguration().orElse(null); 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 an export task, which allows you to efficiently export data from a log group to an Amazon S3 bucket. When * you perform a CreateExportTask operation, you must use credentials that have permission to write to * the S3 bucket that you specify as the destination. *

*

* This is an asynchronous call. If all the required information is provided, this operation initiates an export * task and responds with the ID of the task. After the task has started, you can use DescribeExportTasks to get the status of the export task. Each account can only have one active ( * RUNNING or PENDING) export task at a time. To cancel an export task, use CancelExportTask. *

*

* You can export logs from multiple log groups or multiple time ranges to the same S3 bucket. To separate out log * data for each export task, you can specify a prefix to be used as the Amazon S3 key prefix for all exported * objects. *

*

* Exporting to S3 buckets that are encrypted with AES-256 is supported. Exporting to S3 buckets encrypted with * SSE-KMS is not supported. *

* * @param createExportTaskRequest * @return A Java Future containing the result of the CreateExportTask operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • LimitExceededException You have reached the maximum number of resources that can be created.
  • *
  • OperationAbortedException Multiple requests to update the same resource were in conflict.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ResourceAlreadyExistsException The specified resource 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.CreateExportTask * @see AWS API * Documentation */ @Override public CompletableFuture createExportTask(CreateExportTaskRequest createExportTaskRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, createExportTaskRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateExportTask"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateExportTaskResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateExportTask") .withMarshaller(new CreateExportTaskRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(createExportTaskRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = createExportTaskRequest.overrideConfiguration().orElse(null); 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 log group with the specified name. You can create up to 20,000 log groups per account. *

*

* You must use the following guidelines when naming a log group: *

*
    *
  • *

    * Log group names must be unique within a region for an AWS account. *

    *
  • *
  • *

    * Log group names can be between 1 and 512 characters long. *

    *
  • *
  • *

    * Log group names consist of the following characters: a-z, A-Z, 0-9, '_' (underscore), '-' (hyphen), '/' (forward * slash), '.' (period), and '#' (number sign) *

    *
  • *
*

* When you create a log group, by default the log events in the log group never expire. To set a retention policy * so that events expire and are deleted after a specified time, use PutRetentionPolicy. *

*

* If you associate a AWS Key Management Service (AWS KMS) customer master key (CMK) with the log group, ingested * data is encrypted using the CMK. This association is stored as long as the data encrypted with the CMK is still * within Amazon CloudWatch Logs. This enables Amazon CloudWatch Logs to decrypt this data whenever it is requested. *

*

* If you attempt to associate a CMK with the log group but the CMK does not exist or the CMK is disabled, you * receive an InvalidParameterException error. *

* *

* CloudWatch Logs supports only symmetric CMKs. Do not associate an asymmetric CMK with your log group. For more * information, see Using * Symmetric and Asymmetric Keys. *

*
* * @param createLogGroupRequest * @return A Java Future containing the result of the CreateLogGroup operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceAlreadyExistsException The specified resource already exists.
  • *
  • LimitExceededException You have reached the maximum number of resources that can be created.
  • *
  • OperationAbortedException Multiple requests to update the same resource were in conflict.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.CreateLogGroup * @see AWS API * Documentation */ @Override public CompletableFuture createLogGroup(CreateLogGroupRequest createLogGroupRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, createLogGroupRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateLogGroup"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateLogGroupResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateLogGroup") .withMarshaller(new CreateLogGroupRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(createLogGroupRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = createLogGroupRequest.overrideConfiguration().orElse(null); 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 log stream for the specified log group. A log stream is a sequence of log events that originate from a * single source, such as an application instance or a resource that is being monitored. *

*

* There is no limit on the number of log streams that you can create for a log group. There is a limit of 50 TPS on * CreateLogStream operations, after which transactions are throttled. *

*

* You must use the following guidelines when naming a log stream: *

*
    *
  • *

    * Log stream names must be unique within the log group. *

    *
  • *
  • *

    * Log stream names can be between 1 and 512 characters long. *

    *
  • *
  • *

    * The ':' (colon) and '*' (asterisk) characters are not allowed. *

    *
  • *
* * @param createLogStreamRequest * @return A Java Future containing the result of the CreateLogStream operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceAlreadyExistsException The specified resource already exists.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.CreateLogStream * @see AWS API * Documentation */ @Override public CompletableFuture createLogStream(CreateLogStreamRequest createLogStreamRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, createLogStreamRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateLogStream"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CreateLogStreamResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("CreateLogStream") .withMarshaller(new CreateLogStreamRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(createLogStreamRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = createLogStreamRequest.overrideConfiguration().orElse(null); 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 destination, and eventually disables all the subscription filters that publish to it. This * operation does not delete the physical resource encapsulated by the destination. *

* * @param deleteDestinationRequest * @return A Java Future containing the result of the DeleteDestination operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • OperationAbortedException Multiple requests to update the same resource were in conflict.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DeleteDestination * @see AWS API * Documentation */ @Override public CompletableFuture deleteDestination(DeleteDestinationRequest deleteDestinationRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteDestinationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteDestination"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteDestinationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteDestination") .withMarshaller(new DeleteDestinationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteDestinationRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = deleteDestinationRequest.overrideConfiguration().orElse(null); 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 log group and permanently deletes all the archived log events associated with the log * group. *

* * @param deleteLogGroupRequest * @return A Java Future containing the result of the DeleteLogGroup operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • OperationAbortedException Multiple requests to update the same resource were in conflict.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DeleteLogGroup * @see AWS API * Documentation */ @Override public CompletableFuture deleteLogGroup(DeleteLogGroupRequest deleteLogGroupRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteLogGroupRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteLogGroup"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteLogGroupResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteLogGroup") .withMarshaller(new DeleteLogGroupRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteLogGroupRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = deleteLogGroupRequest.overrideConfiguration().orElse(null); 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 log stream and permanently deletes all the archived log events associated with the log * stream. *

* * @param deleteLogStreamRequest * @return A Java Future containing the result of the DeleteLogStream operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • OperationAbortedException Multiple requests to update the same resource were in conflict.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DeleteLogStream * @see AWS API * Documentation */ @Override public CompletableFuture deleteLogStream(DeleteLogStreamRequest deleteLogStreamRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteLogStreamRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteLogStream"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteLogStreamResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteLogStream") .withMarshaller(new DeleteLogStreamRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteLogStreamRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = deleteLogStreamRequest.overrideConfiguration().orElse(null); 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 metric filter. *

* * @param deleteMetricFilterRequest * @return A Java Future containing the result of the DeleteMetricFilter operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • OperationAbortedException Multiple requests to update the same resource were in conflict.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DeleteMetricFilter * @see AWS API * Documentation */ @Override public CompletableFuture deleteMetricFilter(DeleteMetricFilterRequest deleteMetricFilterRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteMetricFilterRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteMetricFilter"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteMetricFilterResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteMetricFilter") .withMarshaller(new DeleteMetricFilterRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteMetricFilterRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = deleteMetricFilterRequest.overrideConfiguration() .orElse(null); 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 a saved CloudWatch Logs Insights query definition. A query definition contains details about a saved * CloudWatch Logs Insights query. *

*

* Each DeleteQueryDefinition operation can delete one query definition. *

*

* You must have the logs:DeleteQueryDefinition permission to be able to perform this operation. *

* * @param deleteQueryDefinitionRequest * @return A Java Future containing the result of the DeleteQueryDefinition operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DeleteQueryDefinition * @see AWS * API Documentation */ @Override public CompletableFuture deleteQueryDefinition( DeleteQueryDefinitionRequest deleteQueryDefinitionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteQueryDefinitionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteQueryDefinition"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteQueryDefinitionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteQueryDefinition") .withMarshaller(new DeleteQueryDefinitionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteQueryDefinitionRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = deleteQueryDefinitionRequest.overrideConfiguration().orElse( null); 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 a resource policy from this account. This revokes the access of the identities in that policy to put log * events to this account. *

* * @param deleteResourcePolicyRequest * @return A Java Future containing the result of the DeleteResourcePolicy operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DeleteResourcePolicy * @see AWS API * Documentation */ @Override public CompletableFuture deleteResourcePolicy( DeleteResourcePolicyRequest deleteResourcePolicyRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteResourcePolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteResourcePolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteResourcePolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteResourcePolicy") .withMarshaller(new DeleteResourcePolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteResourcePolicyRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = deleteResourcePolicyRequest.overrideConfiguration().orElse( null); 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 retention policy. *

*

* Log events do not expire if they belong to log groups without a retention policy. *

* * @param deleteRetentionPolicyRequest * @return A Java Future containing the result of the DeleteRetentionPolicy operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • OperationAbortedException Multiple requests to update the same resource were in conflict.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DeleteRetentionPolicy * @see AWS * API Documentation */ @Override public CompletableFuture deleteRetentionPolicy( DeleteRetentionPolicyRequest deleteRetentionPolicyRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteRetentionPolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteRetentionPolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteRetentionPolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteRetentionPolicy") .withMarshaller(new DeleteRetentionPolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteRetentionPolicyRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = deleteRetentionPolicyRequest.overrideConfiguration().orElse( null); 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 subscription filter. *

* * @param deleteSubscriptionFilterRequest * @return A Java Future containing the result of the DeleteSubscriptionFilter operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • OperationAbortedException Multiple requests to update the same resource were in conflict.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DeleteSubscriptionFilter * @see AWS * API Documentation */ @Override public CompletableFuture deleteSubscriptionFilter( DeleteSubscriptionFilterRequest deleteSubscriptionFilterRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteSubscriptionFilterRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteSubscriptionFilter"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeleteSubscriptionFilterResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DeleteSubscriptionFilter") .withMarshaller(new DeleteSubscriptionFilterRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(deleteSubscriptionFilterRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = deleteSubscriptionFilterRequest.overrideConfiguration() .orElse(null); 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 all your destinations. The results are ASCII-sorted by destination name. *

* * @param describeDestinationsRequest * @return A Java Future containing the result of the DescribeDestinations operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DescribeDestinations * @see AWS API * Documentation */ @Override public CompletableFuture describeDestinations( DescribeDestinationsRequest describeDestinationsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeDestinationsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeDestinations"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeDestinationsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeDestinations") .withMarshaller(new DescribeDestinationsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeDestinationsRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = describeDestinationsRequest.overrideConfiguration().orElse( null); 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 all your destinations. The results are ASCII-sorted by destination name. *

*
*

* This is a variant of * {@link #describeDestinations(software.amazon.awssdk.services.cloudwatchlogs.model.DescribeDestinationsRequest)} * operation. The return type is a custom publisher that can be subscribed to request a stream of response pages. * SDK will internally handle making service calls for you. *

*

* When the operation is called, an instance of this class is returned. At this point, no service calls are made yet * and so there is no guarantee that the request is valid. If there are errors in your request, you will see the * failures only after you start streaming the data. The subscribe method should be called as a request to start * streaming data. For more info, see * {@link org.reactivestreams.Publisher#subscribe(org.reactivestreams.Subscriber)}. Each call to the subscribe * method will result in a new {@link org.reactivestreams.Subscription} i.e., a new contract to stream data from the * starting request. *

* *

* The following are few ways to use the response class: *

* 1) Using the subscribe helper method * *
     * {@code
     * software.amazon.awssdk.services.cloudwatchlogs.paginators.DescribeDestinationsPublisher publisher = client.describeDestinationsPaginator(request);
     * CompletableFuture future = publisher.subscribe(res -> { // Do something with the response });
     * future.get();
     * }
     * 
* * 2) Using a custom subscriber * *
     * {@code
     * software.amazon.awssdk.services.cloudwatchlogs.paginators.DescribeDestinationsPublisher publisher = client.describeDestinationsPaginator(request);
     * publisher.subscribe(new Subscriber() {
     * 
     * public void onSubscribe(org.reactivestreams.Subscriber subscription) { //... };
     * 
     * 
     * public void onNext(software.amazon.awssdk.services.cloudwatchlogs.model.DescribeDestinationsResponse response) { //... };
     * });}
     * 
* * As the response is a publisher, it can work well with third party reactive streams implementations like RxJava2. *

* Please notice that the configuration of limit won't limit the number of results you get with the paginator. It * only limits the number of results in each page. *

*

* Note: If you prefer to have control on service calls, use the * {@link #describeDestinations(software.amazon.awssdk.services.cloudwatchlogs.model.DescribeDestinationsRequest)} * operation. *

* * @param describeDestinationsRequest * @return A custom publisher that can be subscribed to request a stream of response pages.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DescribeDestinations * @see AWS API * Documentation */ public DescribeDestinationsPublisher describeDestinationsPaginator(DescribeDestinationsRequest describeDestinationsRequest) { return new DescribeDestinationsPublisher(this, applyPaginatorUserAgent(describeDestinationsRequest)); } /** *

* Lists the specified export tasks. You can list all your export tasks or filter the results based on task ID or * task status. *

* * @param describeExportTasksRequest * @return A Java Future containing the result of the DescribeExportTasks operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DescribeExportTasks * @see AWS API * Documentation */ @Override public CompletableFuture describeExportTasks( DescribeExportTasksRequest describeExportTasksRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeExportTasksRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeExportTasks"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeExportTasksResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeExportTasks") .withMarshaller(new DescribeExportTasksRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeExportTasksRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = describeExportTasksRequest.overrideConfiguration().orElse( null); 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 specified log groups. You can list all your log groups or filter the results by prefix. The results are * ASCII-sorted by log group name. *

* * @param describeLogGroupsRequest * @return A Java Future containing the result of the DescribeLogGroups operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DescribeLogGroups * @see AWS API * Documentation */ @Override public CompletableFuture describeLogGroups(DescribeLogGroupsRequest describeLogGroupsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeLogGroupsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeLogGroups"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeLogGroupsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeLogGroups") .withMarshaller(new DescribeLogGroupsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeLogGroupsRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = describeLogGroupsRequest.overrideConfiguration().orElse(null); 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 specified log groups. You can list all your log groups or filter the results by prefix. The results are * ASCII-sorted by log group name. *

*
*

* This is a variant of * {@link #describeLogGroups(software.amazon.awssdk.services.cloudwatchlogs.model.DescribeLogGroupsRequest)} * operation. The return type is a custom publisher that can be subscribed to request a stream of response pages. * SDK will internally handle making service calls for you. *

*

* When the operation is called, an instance of this class is returned. At this point, no service calls are made yet * and so there is no guarantee that the request is valid. If there are errors in your request, you will see the * failures only after you start streaming the data. The subscribe method should be called as a request to start * streaming data. For more info, see * {@link org.reactivestreams.Publisher#subscribe(org.reactivestreams.Subscriber)}. Each call to the subscribe * method will result in a new {@link org.reactivestreams.Subscription} i.e., a new contract to stream data from the * starting request. *

* *

* The following are few ways to use the response class: *

* 1) Using the subscribe helper method * *
     * {@code
     * software.amazon.awssdk.services.cloudwatchlogs.paginators.DescribeLogGroupsPublisher publisher = client.describeLogGroupsPaginator(request);
     * CompletableFuture future = publisher.subscribe(res -> { // Do something with the response });
     * future.get();
     * }
     * 
* * 2) Using a custom subscriber * *
     * {@code
     * software.amazon.awssdk.services.cloudwatchlogs.paginators.DescribeLogGroupsPublisher publisher = client.describeLogGroupsPaginator(request);
     * publisher.subscribe(new Subscriber() {
     * 
     * public void onSubscribe(org.reactivestreams.Subscriber subscription) { //... };
     * 
     * 
     * public void onNext(software.amazon.awssdk.services.cloudwatchlogs.model.DescribeLogGroupsResponse response) { //... };
     * });}
     * 
* * As the response is a publisher, it can work well with third party reactive streams implementations like RxJava2. *

* Please notice that the configuration of limit won't limit the number of results you get with the paginator. It * only limits the number of results in each page. *

*

* Note: If you prefer to have control on service calls, use the * {@link #describeLogGroups(software.amazon.awssdk.services.cloudwatchlogs.model.DescribeLogGroupsRequest)} * operation. *

* * @param describeLogGroupsRequest * @return A custom publisher that can be subscribed to request a stream of response pages.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DescribeLogGroups * @see AWS API * Documentation */ public DescribeLogGroupsPublisher describeLogGroupsPaginator(DescribeLogGroupsRequest describeLogGroupsRequest) { return new DescribeLogGroupsPublisher(this, applyPaginatorUserAgent(describeLogGroupsRequest)); } /** *

* Lists the log streams for the specified log group. You can list all the log streams or filter the results by * prefix. You can also control how the results are ordered. *

*

* This operation has a limit of five transactions per second, after which transactions are throttled. *

* * @param describeLogStreamsRequest * @return A Java Future containing the result of the DescribeLogStreams operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DescribeLogStreams * @see AWS API * Documentation */ @Override public CompletableFuture describeLogStreams(DescribeLogStreamsRequest describeLogStreamsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeLogStreamsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeLogStreams"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeLogStreamsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeLogStreams") .withMarshaller(new DescribeLogStreamsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeLogStreamsRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = describeLogStreamsRequest.overrideConfiguration() .orElse(null); 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 log streams for the specified log group. You can list all the log streams or filter the results by * prefix. You can also control how the results are ordered. *

*

* This operation has a limit of five transactions per second, after which transactions are throttled. *

*
*

* This is a variant of * {@link #describeLogStreams(software.amazon.awssdk.services.cloudwatchlogs.model.DescribeLogStreamsRequest)} * operation. The return type is a custom publisher that can be subscribed to request a stream of response pages. * SDK will internally handle making service calls for you. *

*

* When the operation is called, an instance of this class is returned. At this point, no service calls are made yet * and so there is no guarantee that the request is valid. If there are errors in your request, you will see the * failures only after you start streaming the data. The subscribe method should be called as a request to start * streaming data. For more info, see * {@link org.reactivestreams.Publisher#subscribe(org.reactivestreams.Subscriber)}. Each call to the subscribe * method will result in a new {@link org.reactivestreams.Subscription} i.e., a new contract to stream data from the * starting request. *

* *

* The following are few ways to use the response class: *

* 1) Using the subscribe helper method * *
     * {@code
     * software.amazon.awssdk.services.cloudwatchlogs.paginators.DescribeLogStreamsPublisher publisher = client.describeLogStreamsPaginator(request);
     * CompletableFuture future = publisher.subscribe(res -> { // Do something with the response });
     * future.get();
     * }
     * 
* * 2) Using a custom subscriber * *
     * {@code
     * software.amazon.awssdk.services.cloudwatchlogs.paginators.DescribeLogStreamsPublisher publisher = client.describeLogStreamsPaginator(request);
     * publisher.subscribe(new Subscriber() {
     * 
     * public void onSubscribe(org.reactivestreams.Subscriber subscription) { //... };
     * 
     * 
     * public void onNext(software.amazon.awssdk.services.cloudwatchlogs.model.DescribeLogStreamsResponse response) { //... };
     * });}
     * 
* * As the response is a publisher, it can work well with third party reactive streams implementations like RxJava2. *

* Please notice that the configuration of limit won't limit the number of results you get with the paginator. It * only limits the number of results in each page. *

*

* Note: If you prefer to have control on service calls, use the * {@link #describeLogStreams(software.amazon.awssdk.services.cloudwatchlogs.model.DescribeLogStreamsRequest)} * operation. *

* * @param describeLogStreamsRequest * @return A custom publisher that can be subscribed to request a stream of response pages.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DescribeLogStreams * @see AWS API * Documentation */ public DescribeLogStreamsPublisher describeLogStreamsPaginator(DescribeLogStreamsRequest describeLogStreamsRequest) { return new DescribeLogStreamsPublisher(this, applyPaginatorUserAgent(describeLogStreamsRequest)); } /** *

* Lists the specified metric filters. You can list all of the metric filters or filter the results by log name, * prefix, metric name, or metric namespace. The results are ASCII-sorted by filter name. *

* * @param describeMetricFiltersRequest * @return A Java Future containing the result of the DescribeMetricFilters operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DescribeMetricFilters * @see AWS * API Documentation */ @Override public CompletableFuture describeMetricFilters( DescribeMetricFiltersRequest describeMetricFiltersRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeMetricFiltersRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeMetricFilters"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeMetricFiltersResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeMetricFilters") .withMarshaller(new DescribeMetricFiltersRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeMetricFiltersRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = describeMetricFiltersRequest.overrideConfiguration().orElse( null); 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 specified metric filters. You can list all of the metric filters or filter the results by log name, * prefix, metric name, or metric namespace. The results are ASCII-sorted by filter name. *

*
*

* This is a variant of * {@link #describeMetricFilters(software.amazon.awssdk.services.cloudwatchlogs.model.DescribeMetricFiltersRequest)} * operation. The return type is a custom publisher that can be subscribed to request a stream of response pages. * SDK will internally handle making service calls for you. *

*

* When the operation is called, an instance of this class is returned. At this point, no service calls are made yet * and so there is no guarantee that the request is valid. If there are errors in your request, you will see the * failures only after you start streaming the data. The subscribe method should be called as a request to start * streaming data. For more info, see * {@link org.reactivestreams.Publisher#subscribe(org.reactivestreams.Subscriber)}. Each call to the subscribe * method will result in a new {@link org.reactivestreams.Subscription} i.e., a new contract to stream data from the * starting request. *

* *

* The following are few ways to use the response class: *

* 1) Using the subscribe helper method * *
     * {@code
     * software.amazon.awssdk.services.cloudwatchlogs.paginators.DescribeMetricFiltersPublisher publisher = client.describeMetricFiltersPaginator(request);
     * CompletableFuture future = publisher.subscribe(res -> { // Do something with the response });
     * future.get();
     * }
     * 
* * 2) Using a custom subscriber * *
     * {@code
     * software.amazon.awssdk.services.cloudwatchlogs.paginators.DescribeMetricFiltersPublisher publisher = client.describeMetricFiltersPaginator(request);
     * publisher.subscribe(new Subscriber() {
     * 
     * public void onSubscribe(org.reactivestreams.Subscriber subscription) { //... };
     * 
     * 
     * public void onNext(software.amazon.awssdk.services.cloudwatchlogs.model.DescribeMetricFiltersResponse response) { //... };
     * });}
     * 
* * As the response is a publisher, it can work well with third party reactive streams implementations like RxJava2. *

* Please notice that the configuration of limit won't limit the number of results you get with the paginator. It * only limits the number of results in each page. *

*

* Note: If you prefer to have control on service calls, use the * {@link #describeMetricFilters(software.amazon.awssdk.services.cloudwatchlogs.model.DescribeMetricFiltersRequest)} * operation. *

* * @param describeMetricFiltersRequest * @return A custom publisher that can be subscribed to request a stream of response pages.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DescribeMetricFilters * @see AWS * API Documentation */ public DescribeMetricFiltersPublisher describeMetricFiltersPaginator(DescribeMetricFiltersRequest describeMetricFiltersRequest) { return new DescribeMetricFiltersPublisher(this, applyPaginatorUserAgent(describeMetricFiltersRequest)); } /** *

* Returns a list of CloudWatch Logs Insights queries that are scheduled, executing, or have been executed recently * in this account. You can request all queries or limit it to queries of a specific log group or queries with a * certain status. *

* * @param describeQueriesRequest * @return A Java Future containing the result of the DescribeQueries operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DescribeQueries * @see AWS API * Documentation */ @Override public CompletableFuture describeQueries(DescribeQueriesRequest describeQueriesRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeQueriesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeQueries"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeQueriesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeQueries") .withMarshaller(new DescribeQueriesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeQueriesRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = describeQueriesRequest.overrideConfiguration().orElse(null); 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); } } /** *

* This operation returns a paginated list of your saved CloudWatch Logs Insights query definitions. *

*

* You can use the queryDefinitionNamePrefix parameter to limit the results to only the query * definitions that have names that start with a certain string. *

* * @param describeQueryDefinitionsRequest * @return A Java Future containing the result of the DescribeQueryDefinitions operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DescribeQueryDefinitions * @see AWS * API Documentation */ @Override public CompletableFuture describeQueryDefinitions( DescribeQueryDefinitionsRequest describeQueryDefinitionsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeQueryDefinitionsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeQueryDefinitions"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeQueryDefinitionsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeQueryDefinitions") .withMarshaller(new DescribeQueryDefinitionsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeQueryDefinitionsRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = describeQueryDefinitionsRequest.overrideConfiguration() .orElse(null); 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 resource policies in this account. *

* * @param describeResourcePoliciesRequest * @return A Java Future containing the result of the DescribeResourcePolicies operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DescribeResourcePolicies * @see AWS * API Documentation */ @Override public CompletableFuture describeResourcePolicies( DescribeResourcePoliciesRequest describeResourcePoliciesRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeResourcePoliciesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeResourcePolicies"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeResourcePoliciesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeResourcePolicies") .withMarshaller(new DescribeResourcePoliciesRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeResourcePoliciesRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = describeResourcePoliciesRequest.overrideConfiguration() .orElse(null); 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 subscription filters for the specified log group. You can list all the subscription filters or filter * the results by prefix. The results are ASCII-sorted by filter name. *

* * @param describeSubscriptionFiltersRequest * @return A Java Future containing the result of the DescribeSubscriptionFilters operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DescribeSubscriptionFilters * @see AWS API Documentation */ @Override public CompletableFuture describeSubscriptionFilters( DescribeSubscriptionFiltersRequest describeSubscriptionFiltersRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, describeSubscriptionFiltersRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeSubscriptionFilters"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeSubscriptionFiltersResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeSubscriptionFilters") .withMarshaller(new DescribeSubscriptionFiltersRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(describeSubscriptionFiltersRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = describeSubscriptionFiltersRequest.overrideConfiguration() .orElse(null); 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 subscription filters for the specified log group. You can list all the subscription filters or filter * the results by prefix. The results are ASCII-sorted by filter name. *

*
*

* This is a variant of * {@link #describeSubscriptionFilters(software.amazon.awssdk.services.cloudwatchlogs.model.DescribeSubscriptionFiltersRequest)} * operation. The return type is a custom publisher that can be subscribed to request a stream of response pages. * SDK will internally handle making service calls for you. *

*

* When the operation is called, an instance of this class is returned. At this point, no service calls are made yet * and so there is no guarantee that the request is valid. If there are errors in your request, you will see the * failures only after you start streaming the data. The subscribe method should be called as a request to start * streaming data. For more info, see * {@link org.reactivestreams.Publisher#subscribe(org.reactivestreams.Subscriber)}. Each call to the subscribe * method will result in a new {@link org.reactivestreams.Subscription} i.e., a new contract to stream data from the * starting request. *

* *

* The following are few ways to use the response class: *

* 1) Using the subscribe helper method * *
     * {@code
     * software.amazon.awssdk.services.cloudwatchlogs.paginators.DescribeSubscriptionFiltersPublisher publisher = client.describeSubscriptionFiltersPaginator(request);
     * CompletableFuture future = publisher.subscribe(res -> { // Do something with the response });
     * future.get();
     * }
     * 
* * 2) Using a custom subscriber * *
     * {@code
     * software.amazon.awssdk.services.cloudwatchlogs.paginators.DescribeSubscriptionFiltersPublisher publisher = client.describeSubscriptionFiltersPaginator(request);
     * publisher.subscribe(new Subscriber() {
     * 
     * public void onSubscribe(org.reactivestreams.Subscriber subscription) { //... };
     * 
     * 
     * public void onNext(software.amazon.awssdk.services.cloudwatchlogs.model.DescribeSubscriptionFiltersResponse response) { //... };
     * });}
     * 
* * As the response is a publisher, it can work well with third party reactive streams implementations like RxJava2. *

* Please notice that the configuration of limit won't limit the number of results you get with the paginator. It * only limits the number of results in each page. *

*

* Note: If you prefer to have control on service calls, use the * {@link #describeSubscriptionFilters(software.amazon.awssdk.services.cloudwatchlogs.model.DescribeSubscriptionFiltersRequest)} * operation. *

* * @param describeSubscriptionFiltersRequest * @return A custom publisher that can be subscribed to request a stream of response pages.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DescribeSubscriptionFilters * @see AWS API Documentation */ public DescribeSubscriptionFiltersPublisher describeSubscriptionFiltersPaginator( DescribeSubscriptionFiltersRequest describeSubscriptionFiltersRequest) { return new DescribeSubscriptionFiltersPublisher(this, applyPaginatorUserAgent(describeSubscriptionFiltersRequest)); } /** *

* Disassociates the associated AWS Key Management Service (AWS KMS) customer master key (CMK) from the specified * log group. *

*

* After the AWS KMS CMK is disassociated from the log group, AWS CloudWatch Logs stops encrypting newly ingested * data for the log group. All previously ingested data remains encrypted, and AWS CloudWatch Logs requires * permissions for the CMK whenever the encrypted data is requested. *

*

* Note that it can take up to 5 minutes for this operation to take effect. *

* * @param disassociateKmsKeyRequest * @return A Java Future containing the result of the DisassociateKmsKey operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • OperationAbortedException Multiple requests to update the same resource were in conflict.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.DisassociateKmsKey * @see AWS API * Documentation */ @Override public CompletableFuture disassociateKmsKey(DisassociateKmsKeyRequest disassociateKmsKeyRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, disassociateKmsKeyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DisassociateKmsKey"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DisassociateKmsKeyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("DisassociateKmsKey") .withMarshaller(new DisassociateKmsKeyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(disassociateKmsKeyRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = disassociateKmsKeyRequest.overrideConfiguration() .orElse(null); 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 log events from the specified log group. You can list all the log events or filter the results using a * filter pattern, a time range, and the name of the log stream. *

*

* By default, this operation returns as many log events as can fit in 1 MB (up to 10,000 log events) or all the * events found within the time range that you specify. If the results include a token, then there are more log * events available, and you can get additional results by specifying the token in a subsequent call. This operation * can return empty results while there are more log events available through the token. *

*

* The returned log events are sorted by event timestamp, the timestamp when the event was ingested by CloudWatch * Logs, and the ID of the PutLogEvents request. *

* * @param filterLogEventsRequest * @return A Java Future containing the result of the FilterLogEvents operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.FilterLogEvents * @see AWS API * Documentation */ @Override public CompletableFuture filterLogEvents(FilterLogEventsRequest filterLogEventsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, filterLogEventsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "FilterLogEvents"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, FilterLogEventsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("FilterLogEvents") .withMarshaller(new FilterLogEventsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(filterLogEventsRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = filterLogEventsRequest.overrideConfiguration().orElse(null); 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 log events from the specified log group. You can list all the log events or filter the results using a * filter pattern, a time range, and the name of the log stream. *

*

* By default, this operation returns as many log events as can fit in 1 MB (up to 10,000 log events) or all the * events found within the time range that you specify. If the results include a token, then there are more log * events available, and you can get additional results by specifying the token in a subsequent call. This operation * can return empty results while there are more log events available through the token. *

*

* The returned log events are sorted by event timestamp, the timestamp when the event was ingested by CloudWatch * Logs, and the ID of the PutLogEvents request. *

*
*

* This is a variant of * {@link #filterLogEvents(software.amazon.awssdk.services.cloudwatchlogs.model.FilterLogEventsRequest)} operation. * The return type is a custom publisher that can be subscribed to request a stream of response pages. SDK will * internally handle making service calls for you. *

*

* When the operation is called, an instance of this class is returned. At this point, no service calls are made yet * and so there is no guarantee that the request is valid. If there are errors in your request, you will see the * failures only after you start streaming the data. The subscribe method should be called as a request to start * streaming data. For more info, see * {@link org.reactivestreams.Publisher#subscribe(org.reactivestreams.Subscriber)}. Each call to the subscribe * method will result in a new {@link org.reactivestreams.Subscription} i.e., a new contract to stream data from the * starting request. *

* *

* The following are few ways to use the response class: *

* 1) Using the subscribe helper method * *
     * {@code
     * software.amazon.awssdk.services.cloudwatchlogs.paginators.FilterLogEventsPublisher publisher = client.filterLogEventsPaginator(request);
     * CompletableFuture future = publisher.subscribe(res -> { // Do something with the response });
     * future.get();
     * }
     * 
* * 2) Using a custom subscriber * *
     * {@code
     * software.amazon.awssdk.services.cloudwatchlogs.paginators.FilterLogEventsPublisher publisher = client.filterLogEventsPaginator(request);
     * publisher.subscribe(new Subscriber() {
     * 
     * public void onSubscribe(org.reactivestreams.Subscriber subscription) { //... };
     * 
     * 
     * public void onNext(software.amazon.awssdk.services.cloudwatchlogs.model.FilterLogEventsResponse response) { //... };
     * });}
     * 
* * As the response is a publisher, it can work well with third party reactive streams implementations like RxJava2. *

* Please notice that the configuration of limit won't limit the number of results you get with the paginator. It * only limits the number of results in each page. *

*

* Note: If you prefer to have control on service calls, use the * {@link #filterLogEvents(software.amazon.awssdk.services.cloudwatchlogs.model.FilterLogEventsRequest)} * operation. *

* * @param filterLogEventsRequest * @return A custom publisher that can be subscribed to request a stream of response pages.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.FilterLogEvents * @see AWS API * Documentation */ public FilterLogEventsPublisher filterLogEventsPaginator(FilterLogEventsRequest filterLogEventsRequest) { return new FilterLogEventsPublisher(this, applyPaginatorUserAgent(filterLogEventsRequest)); } /** *

* Lists log events from the specified log stream. You can list all of the log events or filter using a time range. *

*

* By default, this operation returns as many log events as can fit in a response size of 1MB (up to 10,000 log * events). You can get additional log events by specifying one of the tokens in a subsequent call. This operation * can return empty results while there are more log events available through the token. *

* * @param getLogEventsRequest * @return A Java Future containing the result of the GetLogEvents operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.GetLogEvents * @see AWS API * Documentation */ @Override public CompletableFuture getLogEvents(GetLogEventsRequest getLogEventsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, getLogEventsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetLogEvents"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, GetLogEventsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetLogEvents").withMarshaller(new GetLogEventsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(getLogEventsRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = getLogEventsRequest.overrideConfiguration().orElse(null); 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 log events from the specified log stream. You can list all of the log events or filter using a time range. *

*

* By default, this operation returns as many log events as can fit in a response size of 1MB (up to 10,000 log * events). You can get additional log events by specifying one of the tokens in a subsequent call. This operation * can return empty results while there are more log events available through the token. *

*
*

* This is a variant of * {@link #getLogEvents(software.amazon.awssdk.services.cloudwatchlogs.model.GetLogEventsRequest)} operation. The * return type is a custom publisher that can be subscribed to request a stream of response pages. SDK will * internally handle making service calls for you. *

*

* When the operation is called, an instance of this class is returned. At this point, no service calls are made yet * and so there is no guarantee that the request is valid. If there are errors in your request, you will see the * failures only after you start streaming the data. The subscribe method should be called as a request to start * streaming data. For more info, see * {@link org.reactivestreams.Publisher#subscribe(org.reactivestreams.Subscriber)}. Each call to the subscribe * method will result in a new {@link org.reactivestreams.Subscription} i.e., a new contract to stream data from the * starting request. *

* *

* The following are few ways to use the response class: *

* 1) Using the subscribe helper method * *
     * {@code
     * software.amazon.awssdk.services.cloudwatchlogs.paginators.GetLogEventsPublisher publisher = client.getLogEventsPaginator(request);
     * CompletableFuture future = publisher.subscribe(res -> { // Do something with the response });
     * future.get();
     * }
     * 
* * 2) Using a custom subscriber * *
     * {@code
     * software.amazon.awssdk.services.cloudwatchlogs.paginators.GetLogEventsPublisher publisher = client.getLogEventsPaginator(request);
     * publisher.subscribe(new Subscriber() {
     * 
     * public void onSubscribe(org.reactivestreams.Subscriber subscription) { //... };
     * 
     * 
     * public void onNext(software.amazon.awssdk.services.cloudwatchlogs.model.GetLogEventsResponse response) { //... };
     * });}
     * 
* * As the response is a publisher, it can work well with third party reactive streams implementations like RxJava2. *

* Please notice that the configuration of limit won't limit the number of results you get with the paginator. It * only limits the number of results in each page. *

*

* Note: If you prefer to have control on service calls, use the * {@link #getLogEvents(software.amazon.awssdk.services.cloudwatchlogs.model.GetLogEventsRequest)} operation. *

* * @param getLogEventsRequest * @return A custom publisher that can be subscribed to request a stream of response pages.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.GetLogEvents * @see AWS API * Documentation */ public GetLogEventsPublisher getLogEventsPaginator(GetLogEventsRequest getLogEventsRequest) { return new GetLogEventsPublisher(this, applyPaginatorUserAgent(getLogEventsRequest)); } /** *

* Returns a list of the fields that are included in log events in the specified log group, along with the * percentage of log events that contain each field. The search is limited to a time period that you specify. *

*

* In the results, fields that start with @ are fields generated by CloudWatch Logs. For example, * @timestamp is the timestamp of each log event. For more information about the fields that are * generated by CloudWatch logs, see Supported Logs and Discovered Fields. *

*

* The response results are sorted by the frequency percentage, starting with the highest percentage. *

* * @param getLogGroupFieldsRequest * @return A Java Future containing the result of the GetLogGroupFields operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • LimitExceededException You have reached the maximum number of resources that can be created.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.GetLogGroupFields * @see AWS API * Documentation */ @Override public CompletableFuture getLogGroupFields(GetLogGroupFieldsRequest getLogGroupFieldsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, getLogGroupFieldsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetLogGroupFields"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetLogGroupFieldsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetLogGroupFields") .withMarshaller(new GetLogGroupFieldsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(getLogGroupFieldsRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = getLogGroupFieldsRequest.overrideConfiguration().orElse(null); 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); } } /** *

* Retrieves all of the fields and values of a single log event. All fields are retrieved, even if the original * query that produced the logRecordPointer retrieved only a subset of fields. Fields are returned as * field name/field value pairs. *

*

* The full unparsed log event is returned within @message. *

* * @param getLogRecordRequest * @return A Java Future containing the result of the GetLogRecord operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • LimitExceededException You have reached the maximum number of resources that can be created.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.GetLogRecord * @see AWS API * Documentation */ @Override public CompletableFuture getLogRecord(GetLogRecordRequest getLogRecordRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, getLogRecordRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetLogRecord"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, GetLogRecordResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetLogRecord").withMarshaller(new GetLogRecordRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(getLogRecordRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = getLogRecordRequest.overrideConfiguration().orElse(null); 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 results from the specified query. *

*

* Only the fields requested in the query are returned, along with a @ptr field, which is the * identifier for the log record. You can use the value of @ptr in a GetLogRecord operation to get the full log record. *

*

* GetQueryResults does not start a query execution. To run a query, use StartQuery. *

*

* If the value of the Status field in the output is Running, this operation returns only * partial results. If you see a value of Scheduled or Running for the status, you can * retry the operation later to see the final results. *

* * @param getQueryResultsRequest * @return A Java Future containing the result of the GetQueryResults operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.GetQueryResults * @see AWS API * Documentation */ @Override public CompletableFuture getQueryResults(GetQueryResultsRequest getQueryResultsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, getQueryResultsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetQueryResults"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetQueryResultsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("GetQueryResults") .withMarshaller(new GetQueryResultsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(getQueryResultsRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = getQueryResultsRequest.overrideConfiguration().orElse(null); 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 tags for the specified log group. *

* * @param listTagsLogGroupRequest * @return A Java Future containing the result of the ListTagsLogGroup operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.ListTagsLogGroup * @see AWS API * Documentation */ @Override public CompletableFuture listTagsLogGroup(ListTagsLogGroupRequest listTagsLogGroupRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, listTagsLogGroupRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListTagsLogGroup"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListTagsLogGroupResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("ListTagsLogGroup") .withMarshaller(new ListTagsLogGroupRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(listTagsLogGroupRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = listTagsLogGroupRequest.overrideConfiguration().orElse(null); 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 destination. This operation is used only to create destinations for cross-account * subscriptions. *

*

* A destination encapsulates a physical resource (such as an Amazon Kinesis stream) and enables you to subscribe to * a real-time stream of log events for a different account, ingested using PutLogEvents. *

*

* Through an access policy, a destination controls what is written to it. By default, PutDestination * does not set any access policy with the destination, which means a cross-account user cannot call PutSubscriptionFilter against this destination. To enable this, the destination owner must call PutDestinationPolicy after PutDestination. *

*

* To perform a PutDestination operation, you must also have the iam:PassRole permission. *

* * @param putDestinationRequest * @return A Java Future containing the result of the PutDestination operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • OperationAbortedException Multiple requests to update the same resource were in conflict.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.PutDestination * @see AWS API * Documentation */ @Override public CompletableFuture putDestination(PutDestinationRequest putDestinationRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, putDestinationRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutDestination"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutDestinationResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutDestination") .withMarshaller(new PutDestinationRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(putDestinationRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = putDestinationRequest.overrideConfiguration().orElse(null); 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 an access policy associated with an existing destination. An access policy is an IAM policy document that is * used to authorize claims to register a subscription filter against a given destination. *

* * @param putDestinationPolicyRequest * @return A Java Future containing the result of the PutDestinationPolicy operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • OperationAbortedException Multiple requests to update the same resource were in conflict.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.PutDestinationPolicy * @see AWS API * Documentation */ @Override public CompletableFuture putDestinationPolicy( PutDestinationPolicyRequest putDestinationPolicyRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, putDestinationPolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutDestinationPolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutDestinationPolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutDestinationPolicy") .withMarshaller(new PutDestinationPolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(putDestinationPolicyRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = putDestinationPolicyRequest.overrideConfiguration().orElse( null); 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); } } /** *

* Uploads a batch of log events to the specified log stream. *

*

* You must include the sequence token obtained from the response of the previous call. An upload in a newly created * log stream does not require a sequence token. You can also get the sequence token in the * expectedSequenceToken field from InvalidSequenceTokenException. If you call * PutLogEvents twice within a narrow time period using the same value for sequenceToken, * both calls might be successful or one might be rejected. *

*

* The batch of events must satisfy the following constraints: *

*
    *
  • *

    * The maximum batch size is 1,048,576 bytes. This size is calculated as the sum of all event messages in UTF-8, * plus 26 bytes for each log event. *

    *
  • *
  • *

    * None of the log events in the batch can be more than 2 hours in the future. *

    *
  • *
  • *

    * None of the log events in the batch can be older than 14 days or older than the retention period of the log * group. *

    *
  • *
  • *

    * The log events in the batch must be in chronological order by their timestamp. The timestamp is the time the * event occurred, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. (In AWS Tools for * PowerShell and the AWS SDK for .NET, the timestamp is specified in .NET format: yyyy-mm-ddThh:mm:ss. For example, * 2017-09-15T13:45:30.) *

    *
  • *
  • *

    * A batch of log events in a single request cannot span more than 24 hours. Otherwise, the operation fails. *

    *
  • *
  • *

    * The maximum number of log events in a batch is 10,000. *

    *
  • *
  • *

    * There is a quota of 5 requests per second per log stream. Additional requests are throttled. This quota can't be * changed. *

    *
  • *
*

* If a call to PutLogEvents returns "UnrecognizedClientException" the most likely cause is an invalid * AWS access key ID or secret key. *

* * @param putLogEventsRequest * @return A Java Future containing the result of the PutLogEvents operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • InvalidSequenceTokenException The sequence token is not valid. You can get the correct sequence token * in the expectedSequenceToken field in the InvalidSequenceTokenException * message.
  • *
  • DataAlreadyAcceptedException The event was already logged.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • UnrecognizedClientException The most likely cause is an invalid AWS access key ID or secret key.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.PutLogEvents * @see AWS API * Documentation */ @Override public CompletableFuture putLogEvents(PutLogEventsRequest putLogEventsRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, putLogEventsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutLogEvents"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, PutLogEventsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutLogEvents").withMarshaller(new PutLogEventsRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(putLogEventsRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = putLogEventsRequest.overrideConfiguration().orElse(null); 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 metric filter and associates it with the specified log group. Metric filters allow you to * configure rules to extract metric data from log events ingested through PutLogEvents. *

*

* The maximum number of metric filters that can be associated with a log group is 100. *

* * @param putMetricFilterRequest * @return A Java Future containing the result of the PutMetricFilter operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • OperationAbortedException Multiple requests to update the same resource were in conflict.
  • *
  • LimitExceededException You have reached the maximum number of resources that can be created.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.PutMetricFilter * @see AWS API * Documentation */ @Override public CompletableFuture putMetricFilter(PutMetricFilterRequest putMetricFilterRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, putMetricFilterRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutMetricFilter"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutMetricFilterResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutMetricFilter") .withMarshaller(new PutMetricFilterRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(putMetricFilterRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = putMetricFilterRequest.overrideConfiguration().orElse(null); 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 query definition for CloudWatch Logs Insights. For more information, see Analyzing Log Data with * CloudWatch Logs Insights. *

*

* To update a query definition, specify its queryDefinitionId in your request. The values of * name, queryString, and logGroupNames are changed to the values that you * specify in your update operation. No current values are retained from the current query definition. For example, * if you update a current query definition that includes log groups, and you don't specify the * logGroupNames parameter in your update operation, the query definition changes to contain no log * groups. *

*

* You must have the logs:PutQueryDefinition permission to be able to perform this operation. *

* * @param putQueryDefinitionRequest * @return A Java Future containing the result of the PutQueryDefinition operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.PutQueryDefinition * @see AWS API * Documentation */ @Override public CompletableFuture putQueryDefinition(PutQueryDefinitionRequest putQueryDefinitionRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, putQueryDefinitionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutQueryDefinition"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutQueryDefinitionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutQueryDefinition") .withMarshaller(new PutQueryDefinitionRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(putQueryDefinitionRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = putQueryDefinitionRequest.overrideConfiguration() .orElse(null); 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 resource policy allowing other AWS services to put log events to this account, such as * Amazon Route 53. An account can have up to 10 resource policies per AWS Region. *

* * @param putResourcePolicyRequest * @return A Java Future containing the result of the PutResourcePolicy operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • LimitExceededException You have reached the maximum number of resources that can be created.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.PutResourcePolicy * @see AWS API * Documentation */ @Override public CompletableFuture putResourcePolicy(PutResourcePolicyRequest putResourcePolicyRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, putResourcePolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutResourcePolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutResourcePolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutResourcePolicy") .withMarshaller(new PutResourcePolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(putResourcePolicyRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = putResourcePolicyRequest.overrideConfiguration().orElse(null); 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); } } /** *

* Sets the retention of the specified log group. A retention policy allows you to configure the number of days for * which to retain log events in the specified log group. *

* * @param putRetentionPolicyRequest * @return A Java Future containing the result of the PutRetentionPolicy operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • OperationAbortedException Multiple requests to update the same resource were in conflict.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.PutRetentionPolicy * @see AWS API * Documentation */ @Override public CompletableFuture putRetentionPolicy(PutRetentionPolicyRequest putRetentionPolicyRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, putRetentionPolicyRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutRetentionPolicy"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutRetentionPolicyResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutRetentionPolicy") .withMarshaller(new PutRetentionPolicyRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(putRetentionPolicyRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = putRetentionPolicyRequest.overrideConfiguration() .orElse(null); 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 subscription filter and associates it with the specified log group. Subscription filters * allow you to subscribe to a real-time stream of log events ingested through PutLogEvents and have them delivered to a specific destination. When log events are sent to the receiving * service, they are Base64 encoded and compressed with the gzip format. *

*

* The following destinations are supported for subscription filters: *

*
    *
  • *

    * An Amazon Kinesis stream belonging to the same account as the subscription filter, for same-account delivery. *

    *
  • *
  • *

    * A logical destination that belongs to a different account, for cross-account delivery. *

    *
  • *
  • *

    * An Amazon Kinesis Firehose delivery stream that belongs to the same account as the subscription filter, for * same-account delivery. *

    *
  • *
  • *

    * An AWS Lambda function that belongs to the same account as the subscription filter, for same-account delivery. *

    *
  • *
*

* There can only be one subscription filter associated with a log group. If you are updating an existing filter, * you must specify the correct name in filterName. Otherwise, the call fails because you cannot * associate a second filter with a log group. *

*

* To perform a PutSubscriptionFilter operation, you must also have the iam:PassRole * permission. *

* * @param putSubscriptionFilterRequest * @return A Java Future containing the result of the PutSubscriptionFilter operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • OperationAbortedException Multiple requests to update the same resource were in conflict.
  • *
  • LimitExceededException You have reached the maximum number of resources that can be created.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.PutSubscriptionFilter * @see AWS * API Documentation */ @Override public CompletableFuture putSubscriptionFilter( PutSubscriptionFilterRequest putSubscriptionFilterRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, putSubscriptionFilterRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PutSubscriptionFilter"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PutSubscriptionFilterResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("PutSubscriptionFilter") .withMarshaller(new PutSubscriptionFilterRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(putSubscriptionFilterRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = putSubscriptionFilterRequest.overrideConfiguration().orElse( null); 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 a query of a log group using CloudWatch Logs Insights. You specify the log group and time range to * query and the query string to use. *

*

* For more information, see CloudWatch Logs Insights * Query Syntax. *

*

* Queries time out after 15 minutes of execution. If your queries are timing out, reduce the time range being * searched or partition your query into a number of queries. *

* * @param startQueryRequest * @return A Java Future containing the result of the StartQuery operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • MalformedQueryException The query string is not valid. Details about this error are displayed in a * QueryCompileError object. For more information, see QueryCompileError.

    *

    * For more information about valid query syntax, see CloudWatch Logs * Insights Query Syntax.

  • *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • LimitExceededException You have reached the maximum number of resources that can be created.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.StartQuery * @see AWS API * Documentation */ @Override public CompletableFuture startQuery(StartQueryRequest startQueryRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, startQueryRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StartQuery"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, StartQueryResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("StartQuery") .withMarshaller(new StartQueryRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(startQueryRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = startQueryRequest.overrideConfiguration().orElse(null); 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 a CloudWatch Logs Insights query that is in progress. If the query has already ended, the operation returns * an error indicating that the specified query is not running. *

* * @param stopQueryRequest * @return A Java Future containing the result of the StopQuery operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.StopQuery * @see AWS API * Documentation */ @Override public CompletableFuture stopQuery(StopQueryRequest stopQueryRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, stopQueryRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StopQuery"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, StopQueryResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams().withOperationName("StopQuery") .withMarshaller(new StopQueryRequestMarshaller(protocolFactory)).withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withMetricCollector(apiCallMetricCollector) .withInput(stopQueryRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = stopQueryRequest.overrideConfiguration().orElse(null); 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 specified tags for the specified log group. *

*

* To list the tags for a log group, use ListTagsLogGroup. To remove tags, use UntagLogGroup. *

*

* For more information about tags, see Tag Log Groups in Amazon CloudWatch Logs in the Amazon CloudWatch Logs User Guide. *

* * @param tagLogGroupRequest * @return A Java Future containing the result of the TagLogGroup operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • ResourceNotFoundException The specified resource does not exist.
  • *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.TagLogGroup * @see AWS API * Documentation */ @Override public CompletableFuture tagLogGroup(TagLogGroupRequest tagLogGroupRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, tagLogGroupRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "TagLogGroup"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, TagLogGroupResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("TagLogGroup").withMarshaller(new TagLogGroupRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(tagLogGroupRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = tagLogGroupRequest.overrideConfiguration().orElse(null); 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); } } /** *

* Tests the filter pattern of a metric filter against a sample of log event messages. You can use this operation to * validate the correctness of a metric filter pattern. *

* * @param testMetricFilterRequest * @return A Java Future containing the result of the TestMetricFilter operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • InvalidParameterException A parameter is specified incorrectly.
  • *
  • ServiceUnavailableException The service cannot complete the request.
  • *
  • 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.TestMetricFilter * @see AWS API * Documentation */ @Override public CompletableFuture testMetricFilter(TestMetricFilterRequest testMetricFilterRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, testMetricFilterRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "TestMetricFilter"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, TestMetricFilterResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("TestMetricFilter") .withMarshaller(new TestMetricFilterRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(testMetricFilterRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = testMetricFilterRequest.overrideConfiguration().orElse(null); 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); } } /** *

* Removes the specified tags from the specified log group. *

*

* To list the tags for a log group, use ListTagsLogGroup. To add tags, use TagLogGroup. *

* * @param untagLogGroupRequest * @return A Java Future containing the result of the UntagLogGroup operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following * exceptions. *
    *
  • ResourceNotFoundException The specified resource 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.
  • *
  • CloudWatchLogsException Base class for all service exceptions. Unknown exceptions will be thrown as * an instance of this type.
  • *
* @sample CloudWatchLogsAsyncClient.UntagLogGroup * @see AWS API * Documentation */ @Override public CompletableFuture untagLogGroup(UntagLogGroupRequest untagLogGroupRequest) { List metricPublishers = resolveMetricPublishers(clientConfiguration, untagLogGroupRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "CloudWatch Logs"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UntagLogGroup"); JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, UntagLogGroupResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); CompletableFuture executeFuture = clientHandler .execute(new ClientExecutionParams() .withOperationName("UntagLogGroup") .withMarshaller(new UntagLogGroupRequestMarshaller(protocolFactory)) .withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler) .withMetricCollector(apiCallMetricCollector).withInput(untagLogGroupRequest)); AwsRequestOverrideConfiguration requestOverrideConfig = untagLogGroupRequest.overrideConfiguration().orElse(null); 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 void close() { clientHandler.close(); } private > T init(T builder) { return builder .clientConfiguration(clientConfiguration) .defaultServiceExceptionSupplier(CloudWatchLogsException::builder) .protocol(AwsJsonProtocol.AWS_JSON) .protocolVersion("1.1") .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidParameterException") .exceptionBuilderSupplier(InvalidParameterException::builder).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidOperationException") .exceptionBuilderSupplier(InvalidOperationException::builder).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("OperationAbortedException") .exceptionBuilderSupplier(OperationAbortedException::builder).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("LimitExceededException") .exceptionBuilderSupplier(LimitExceededException::builder).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("UnrecognizedClientException") .exceptionBuilderSupplier(UnrecognizedClientException::builder).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("MalformedQueryException") .exceptionBuilderSupplier(MalformedQueryException::builder).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ResourceNotFoundException") .exceptionBuilderSupplier(ResourceNotFoundException::builder).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("DataAlreadyAcceptedException") .exceptionBuilderSupplier(DataAlreadyAcceptedException::builder).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("InvalidSequenceTokenException") .exceptionBuilderSupplier(InvalidSequenceTokenException::builder).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ServiceUnavailableException") .exceptionBuilderSupplier(ServiceUnavailableException::builder).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("ResourceAlreadyExistsException") .exceptionBuilderSupplier(ResourceAlreadyExistsException::builder).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 T applyPaginatorUserAgent(T request) { Consumer userAgentApplier = b -> b.addApiName(ApiName.builder() .version(VersionInfo.SDK_VERSION).name("PAGINATED").build()); AwsRequestOverrideConfiguration overrideConfiguration = request.overrideConfiguration() .map(c -> c.toBuilder().applyMutation(userAgentApplier).build()) .orElse((AwsRequestOverrideConfiguration.builder().applyMutation(userAgentApplier).build())); return (T) request.toBuilder().overrideConfiguration(overrideConfiguration).build(); } private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, JsonOperationMetadata operationMetadata) { return protocolFactory.createErrorResponseHandler(operationMetadata); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy