
software.amazon.awssdk.services.rekognition.DefaultRekognitionAsyncClient 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.rekognition;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ScheduledExecutorService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.annotations.SdkInternalApi;
import software.amazon.awssdk.awscore.client.handler.AwsAsyncClientHandler;
import software.amazon.awssdk.awscore.exception.AwsServiceException;
import software.amazon.awssdk.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.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.rekognition.model.AccessDeniedException;
import software.amazon.awssdk.services.rekognition.model.AssociateFacesRequest;
import software.amazon.awssdk.services.rekognition.model.AssociateFacesResponse;
import software.amazon.awssdk.services.rekognition.model.CompareFacesRequest;
import software.amazon.awssdk.services.rekognition.model.CompareFacesResponse;
import software.amazon.awssdk.services.rekognition.model.ConflictException;
import software.amazon.awssdk.services.rekognition.model.CopyProjectVersionRequest;
import software.amazon.awssdk.services.rekognition.model.CopyProjectVersionResponse;
import software.amazon.awssdk.services.rekognition.model.CreateCollectionRequest;
import software.amazon.awssdk.services.rekognition.model.CreateCollectionResponse;
import software.amazon.awssdk.services.rekognition.model.CreateDatasetRequest;
import software.amazon.awssdk.services.rekognition.model.CreateDatasetResponse;
import software.amazon.awssdk.services.rekognition.model.CreateFaceLivenessSessionRequest;
import software.amazon.awssdk.services.rekognition.model.CreateFaceLivenessSessionResponse;
import software.amazon.awssdk.services.rekognition.model.CreateProjectRequest;
import software.amazon.awssdk.services.rekognition.model.CreateProjectResponse;
import software.amazon.awssdk.services.rekognition.model.CreateProjectVersionRequest;
import software.amazon.awssdk.services.rekognition.model.CreateProjectVersionResponse;
import software.amazon.awssdk.services.rekognition.model.CreateStreamProcessorRequest;
import software.amazon.awssdk.services.rekognition.model.CreateStreamProcessorResponse;
import software.amazon.awssdk.services.rekognition.model.CreateUserRequest;
import software.amazon.awssdk.services.rekognition.model.CreateUserResponse;
import software.amazon.awssdk.services.rekognition.model.DeleteCollectionRequest;
import software.amazon.awssdk.services.rekognition.model.DeleteCollectionResponse;
import software.amazon.awssdk.services.rekognition.model.DeleteDatasetRequest;
import software.amazon.awssdk.services.rekognition.model.DeleteDatasetResponse;
import software.amazon.awssdk.services.rekognition.model.DeleteFacesRequest;
import software.amazon.awssdk.services.rekognition.model.DeleteFacesResponse;
import software.amazon.awssdk.services.rekognition.model.DeleteProjectPolicyRequest;
import software.amazon.awssdk.services.rekognition.model.DeleteProjectPolicyResponse;
import software.amazon.awssdk.services.rekognition.model.DeleteProjectRequest;
import software.amazon.awssdk.services.rekognition.model.DeleteProjectResponse;
import software.amazon.awssdk.services.rekognition.model.DeleteProjectVersionRequest;
import software.amazon.awssdk.services.rekognition.model.DeleteProjectVersionResponse;
import software.amazon.awssdk.services.rekognition.model.DeleteStreamProcessorRequest;
import software.amazon.awssdk.services.rekognition.model.DeleteStreamProcessorResponse;
import software.amazon.awssdk.services.rekognition.model.DeleteUserRequest;
import software.amazon.awssdk.services.rekognition.model.DeleteUserResponse;
import software.amazon.awssdk.services.rekognition.model.DescribeCollectionRequest;
import software.amazon.awssdk.services.rekognition.model.DescribeCollectionResponse;
import software.amazon.awssdk.services.rekognition.model.DescribeDatasetRequest;
import software.amazon.awssdk.services.rekognition.model.DescribeDatasetResponse;
import software.amazon.awssdk.services.rekognition.model.DescribeProjectVersionsRequest;
import software.amazon.awssdk.services.rekognition.model.DescribeProjectVersionsResponse;
import software.amazon.awssdk.services.rekognition.model.DescribeProjectsRequest;
import software.amazon.awssdk.services.rekognition.model.DescribeProjectsResponse;
import software.amazon.awssdk.services.rekognition.model.DescribeStreamProcessorRequest;
import software.amazon.awssdk.services.rekognition.model.DescribeStreamProcessorResponse;
import software.amazon.awssdk.services.rekognition.model.DetectCustomLabelsRequest;
import software.amazon.awssdk.services.rekognition.model.DetectCustomLabelsResponse;
import software.amazon.awssdk.services.rekognition.model.DetectFacesRequest;
import software.amazon.awssdk.services.rekognition.model.DetectFacesResponse;
import software.amazon.awssdk.services.rekognition.model.DetectLabelsRequest;
import software.amazon.awssdk.services.rekognition.model.DetectLabelsResponse;
import software.amazon.awssdk.services.rekognition.model.DetectModerationLabelsRequest;
import software.amazon.awssdk.services.rekognition.model.DetectModerationLabelsResponse;
import software.amazon.awssdk.services.rekognition.model.DetectProtectiveEquipmentRequest;
import software.amazon.awssdk.services.rekognition.model.DetectProtectiveEquipmentResponse;
import software.amazon.awssdk.services.rekognition.model.DetectTextRequest;
import software.amazon.awssdk.services.rekognition.model.DetectTextResponse;
import software.amazon.awssdk.services.rekognition.model.DisassociateFacesRequest;
import software.amazon.awssdk.services.rekognition.model.DisassociateFacesResponse;
import software.amazon.awssdk.services.rekognition.model.DistributeDatasetEntriesRequest;
import software.amazon.awssdk.services.rekognition.model.DistributeDatasetEntriesResponse;
import software.amazon.awssdk.services.rekognition.model.GetCelebrityInfoRequest;
import software.amazon.awssdk.services.rekognition.model.GetCelebrityInfoResponse;
import software.amazon.awssdk.services.rekognition.model.GetCelebrityRecognitionRequest;
import software.amazon.awssdk.services.rekognition.model.GetCelebrityRecognitionResponse;
import software.amazon.awssdk.services.rekognition.model.GetContentModerationRequest;
import software.amazon.awssdk.services.rekognition.model.GetContentModerationResponse;
import software.amazon.awssdk.services.rekognition.model.GetFaceDetectionRequest;
import software.amazon.awssdk.services.rekognition.model.GetFaceDetectionResponse;
import software.amazon.awssdk.services.rekognition.model.GetFaceLivenessSessionResultsRequest;
import software.amazon.awssdk.services.rekognition.model.GetFaceLivenessSessionResultsResponse;
import software.amazon.awssdk.services.rekognition.model.GetFaceSearchRequest;
import software.amazon.awssdk.services.rekognition.model.GetFaceSearchResponse;
import software.amazon.awssdk.services.rekognition.model.GetLabelDetectionRequest;
import software.amazon.awssdk.services.rekognition.model.GetLabelDetectionResponse;
import software.amazon.awssdk.services.rekognition.model.GetPersonTrackingRequest;
import software.amazon.awssdk.services.rekognition.model.GetPersonTrackingResponse;
import software.amazon.awssdk.services.rekognition.model.GetSegmentDetectionRequest;
import software.amazon.awssdk.services.rekognition.model.GetSegmentDetectionResponse;
import software.amazon.awssdk.services.rekognition.model.GetTextDetectionRequest;
import software.amazon.awssdk.services.rekognition.model.GetTextDetectionResponse;
import software.amazon.awssdk.services.rekognition.model.HumanLoopQuotaExceededException;
import software.amazon.awssdk.services.rekognition.model.IdempotentParameterMismatchException;
import software.amazon.awssdk.services.rekognition.model.ImageTooLargeException;
import software.amazon.awssdk.services.rekognition.model.IndexFacesRequest;
import software.amazon.awssdk.services.rekognition.model.IndexFacesResponse;
import software.amazon.awssdk.services.rekognition.model.InternalServerErrorException;
import software.amazon.awssdk.services.rekognition.model.InvalidImageFormatException;
import software.amazon.awssdk.services.rekognition.model.InvalidPaginationTokenException;
import software.amazon.awssdk.services.rekognition.model.InvalidParameterException;
import software.amazon.awssdk.services.rekognition.model.InvalidPolicyRevisionIdException;
import software.amazon.awssdk.services.rekognition.model.InvalidS3ObjectException;
import software.amazon.awssdk.services.rekognition.model.LimitExceededException;
import software.amazon.awssdk.services.rekognition.model.ListCollectionsRequest;
import software.amazon.awssdk.services.rekognition.model.ListCollectionsResponse;
import software.amazon.awssdk.services.rekognition.model.ListDatasetEntriesRequest;
import software.amazon.awssdk.services.rekognition.model.ListDatasetEntriesResponse;
import software.amazon.awssdk.services.rekognition.model.ListDatasetLabelsRequest;
import software.amazon.awssdk.services.rekognition.model.ListDatasetLabelsResponse;
import software.amazon.awssdk.services.rekognition.model.ListFacesRequest;
import software.amazon.awssdk.services.rekognition.model.ListFacesResponse;
import software.amazon.awssdk.services.rekognition.model.ListProjectPoliciesRequest;
import software.amazon.awssdk.services.rekognition.model.ListProjectPoliciesResponse;
import software.amazon.awssdk.services.rekognition.model.ListStreamProcessorsRequest;
import software.amazon.awssdk.services.rekognition.model.ListStreamProcessorsResponse;
import software.amazon.awssdk.services.rekognition.model.ListTagsForResourceRequest;
import software.amazon.awssdk.services.rekognition.model.ListTagsForResourceResponse;
import software.amazon.awssdk.services.rekognition.model.ListUsersRequest;
import software.amazon.awssdk.services.rekognition.model.ListUsersResponse;
import software.amazon.awssdk.services.rekognition.model.MalformedPolicyDocumentException;
import software.amazon.awssdk.services.rekognition.model.ProvisionedThroughputExceededException;
import software.amazon.awssdk.services.rekognition.model.PutProjectPolicyRequest;
import software.amazon.awssdk.services.rekognition.model.PutProjectPolicyResponse;
import software.amazon.awssdk.services.rekognition.model.RecognizeCelebritiesRequest;
import software.amazon.awssdk.services.rekognition.model.RecognizeCelebritiesResponse;
import software.amazon.awssdk.services.rekognition.model.RekognitionException;
import software.amazon.awssdk.services.rekognition.model.ResourceAlreadyExistsException;
import software.amazon.awssdk.services.rekognition.model.ResourceInUseException;
import software.amazon.awssdk.services.rekognition.model.ResourceNotFoundException;
import software.amazon.awssdk.services.rekognition.model.ResourceNotReadyException;
import software.amazon.awssdk.services.rekognition.model.SearchFacesByImageRequest;
import software.amazon.awssdk.services.rekognition.model.SearchFacesByImageResponse;
import software.amazon.awssdk.services.rekognition.model.SearchFacesRequest;
import software.amazon.awssdk.services.rekognition.model.SearchFacesResponse;
import software.amazon.awssdk.services.rekognition.model.SearchUsersByImageRequest;
import software.amazon.awssdk.services.rekognition.model.SearchUsersByImageResponse;
import software.amazon.awssdk.services.rekognition.model.SearchUsersRequest;
import software.amazon.awssdk.services.rekognition.model.SearchUsersResponse;
import software.amazon.awssdk.services.rekognition.model.ServiceQuotaExceededException;
import software.amazon.awssdk.services.rekognition.model.SessionNotFoundException;
import software.amazon.awssdk.services.rekognition.model.StartCelebrityRecognitionRequest;
import software.amazon.awssdk.services.rekognition.model.StartCelebrityRecognitionResponse;
import software.amazon.awssdk.services.rekognition.model.StartContentModerationRequest;
import software.amazon.awssdk.services.rekognition.model.StartContentModerationResponse;
import software.amazon.awssdk.services.rekognition.model.StartFaceDetectionRequest;
import software.amazon.awssdk.services.rekognition.model.StartFaceDetectionResponse;
import software.amazon.awssdk.services.rekognition.model.StartFaceSearchRequest;
import software.amazon.awssdk.services.rekognition.model.StartFaceSearchResponse;
import software.amazon.awssdk.services.rekognition.model.StartLabelDetectionRequest;
import software.amazon.awssdk.services.rekognition.model.StartLabelDetectionResponse;
import software.amazon.awssdk.services.rekognition.model.StartPersonTrackingRequest;
import software.amazon.awssdk.services.rekognition.model.StartPersonTrackingResponse;
import software.amazon.awssdk.services.rekognition.model.StartProjectVersionRequest;
import software.amazon.awssdk.services.rekognition.model.StartProjectVersionResponse;
import software.amazon.awssdk.services.rekognition.model.StartSegmentDetectionRequest;
import software.amazon.awssdk.services.rekognition.model.StartSegmentDetectionResponse;
import software.amazon.awssdk.services.rekognition.model.StartStreamProcessorRequest;
import software.amazon.awssdk.services.rekognition.model.StartStreamProcessorResponse;
import software.amazon.awssdk.services.rekognition.model.StartTextDetectionRequest;
import software.amazon.awssdk.services.rekognition.model.StartTextDetectionResponse;
import software.amazon.awssdk.services.rekognition.model.StopProjectVersionRequest;
import software.amazon.awssdk.services.rekognition.model.StopProjectVersionResponse;
import software.amazon.awssdk.services.rekognition.model.StopStreamProcessorRequest;
import software.amazon.awssdk.services.rekognition.model.StopStreamProcessorResponse;
import software.amazon.awssdk.services.rekognition.model.TagResourceRequest;
import software.amazon.awssdk.services.rekognition.model.TagResourceResponse;
import software.amazon.awssdk.services.rekognition.model.ThrottlingException;
import software.amazon.awssdk.services.rekognition.model.UntagResourceRequest;
import software.amazon.awssdk.services.rekognition.model.UntagResourceResponse;
import software.amazon.awssdk.services.rekognition.model.UpdateDatasetEntriesRequest;
import software.amazon.awssdk.services.rekognition.model.UpdateDatasetEntriesResponse;
import software.amazon.awssdk.services.rekognition.model.UpdateStreamProcessorRequest;
import software.amazon.awssdk.services.rekognition.model.UpdateStreamProcessorResponse;
import software.amazon.awssdk.services.rekognition.model.VideoTooLargeException;
import software.amazon.awssdk.services.rekognition.transform.AssociateFacesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.CompareFacesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.CopyProjectVersionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.CreateCollectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.CreateDatasetRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.CreateFaceLivenessSessionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.CreateProjectRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.CreateProjectVersionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.CreateStreamProcessorRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.CreateUserRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DeleteCollectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DeleteDatasetRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DeleteFacesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DeleteProjectPolicyRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DeleteProjectRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DeleteProjectVersionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DeleteStreamProcessorRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DeleteUserRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DescribeCollectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DescribeDatasetRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DescribeProjectVersionsRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DescribeProjectsRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DescribeStreamProcessorRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DetectCustomLabelsRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DetectFacesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DetectLabelsRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DetectModerationLabelsRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DetectProtectiveEquipmentRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DetectTextRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DisassociateFacesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.DistributeDatasetEntriesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.GetCelebrityInfoRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.GetCelebrityRecognitionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.GetContentModerationRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.GetFaceDetectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.GetFaceLivenessSessionResultsRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.GetFaceSearchRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.GetLabelDetectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.GetPersonTrackingRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.GetSegmentDetectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.GetTextDetectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.IndexFacesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.ListCollectionsRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.ListDatasetEntriesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.ListDatasetLabelsRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.ListFacesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.ListProjectPoliciesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.ListStreamProcessorsRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.ListTagsForResourceRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.ListUsersRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.PutProjectPolicyRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.RecognizeCelebritiesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.SearchFacesByImageRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.SearchFacesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.SearchUsersByImageRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.SearchUsersRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StartCelebrityRecognitionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StartContentModerationRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StartFaceDetectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StartFaceSearchRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StartLabelDetectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StartPersonTrackingRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StartProjectVersionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StartSegmentDetectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StartStreamProcessorRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StartTextDetectionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StopProjectVersionRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.StopStreamProcessorRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.TagResourceRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.UntagResourceRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.UpdateDatasetEntriesRequestMarshaller;
import software.amazon.awssdk.services.rekognition.transform.UpdateStreamProcessorRequestMarshaller;
import software.amazon.awssdk.services.rekognition.waiters.RekognitionAsyncWaiter;
import software.amazon.awssdk.utils.CompletableFutureUtils;
/**
* Internal implementation of {@link RekognitionAsyncClient}.
*
* @see RekognitionAsyncClient#builder()
*/
@Generated("software.amazon.awssdk:codegen")
@SdkInternalApi
final class DefaultRekognitionAsyncClient implements RekognitionAsyncClient {
private static final Logger log = LoggerFactory.getLogger(DefaultRekognitionAsyncClient.class);
private final AsyncClientHandler clientHandler;
private final AwsJsonProtocolFactory protocolFactory;
private final SdkClientConfiguration clientConfiguration;
private final RekognitionServiceClientConfiguration serviceClientConfiguration;
private final ScheduledExecutorService executorService;
protected DefaultRekognitionAsyncClient(RekognitionServiceClientConfiguration serviceClientConfiguration,
SdkClientConfiguration clientConfiguration) {
this.clientHandler = new AwsAsyncClientHandler(clientConfiguration);
this.clientConfiguration = clientConfiguration;
this.serviceClientConfiguration = serviceClientConfiguration;
this.protocolFactory = init(AwsJsonProtocolFactory.builder()).build();
this.executorService = clientConfiguration.option(SdkClientOption.SCHEDULED_EXECUTOR_SERVICE);
}
/**
*
* Associates one or more faces with an existing UserID. Takes an array of FaceIds
. Each
* FaceId
that are present in the FaceIds
list is associated with the provided UserID. The
* maximum number of total FaceIds
per UserID is 100.
*
*
* The UserMatchThreshold
parameter specifies the minimum user match confidence required for the face
* to be associated with a UserID that has at least one FaceID
already associated. This ensures that
* the FaceIds
are associated with the right UserID. The value ranges from 0-100 and default value is
* 75.
*
*
* If successful, an array of AssociatedFace
objects containing the associated FaceIds
is
* returned. If a given face is already associated with the given UserID
, it will be ignored and will
* not be returned in the response. If a given face is already associated to a different UserID
, isn't
* found in the collection, doesn’t meet the UserMatchThreshold
, or there are already 100 faces
* associated with the UserID
, it will be returned as part of an array of
* UnsuccessfulFaceAssociations.
*
*
* The UserStatus
reflects the status of an operation which updates a UserID representation with a list
* of given faces. The UserStatus
can be:
*
*
* -
*
* ACTIVE - All associations or disassociations of FaceID(s) for a UserID are complete.
*
*
* -
*
* CREATED - A UserID has been created, but has no FaceID(s) associated with it.
*
*
* -
*
* UPDATING - A UserID is being updated and there are current associations or disassociations of FaceID(s) taking
* place.
*
*
*
*
* @param associateFacesRequest
* @return A Java Future containing the result of the AssociateFaces operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - IdempotentParameterMismatchException A
ClientRequestToken
input parameter was reused
* with an operation, but at least one of the other input parameters is different from the previous call to
* the operation.
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - ConflictException A User with the same Id already exists within the collection, or the update or
* deletion of the User caused an inconsistent state. **
* - ServiceQuotaExceededException
*
* The size of the collection exceeds the allowed limit. For more information, see Guidelines and quotas in
* Amazon Rekognition in the Amazon Rekognition Developer Guide.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.AssociateFaces
*/
@Override
public CompletableFuture associateFaces(AssociateFacesRequest associateFacesRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, associateFacesRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "AssociateFaces");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, AssociateFacesResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("AssociateFaces")
.withMarshaller(new AssociateFacesRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(associateFacesRequest));
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);
}
}
/**
*
* Compares a face in the source input image with each of the 100 largest faces detected in the target
* input image.
*
*
* If the source image contains multiple faces, the service detects the largest face and compares it with each face
* detected in the target image.
*
*
*
* CompareFaces uses machine learning algorithms, which are probabilistic. A false negative is an incorrect
* prediction that a face in the target image has a low similarity confidence score when compared to the face in the
* source image. To reduce the probability of false negatives, we recommend that you compare the target image
* against multiple source images. If you plan to use CompareFaces
to make a decision that impacts an
* individual's rights, privacy, or access to services, we recommend that you pass the result to a human for review
* and further validation before taking action.
*
*
*
* You pass the input and target images either as base64-encoded image bytes or as references to images in an Amazon
* S3 bucket. If you use the AWS CLI to call Amazon Rekognition operations, passing image bytes isn't supported. The
* image must be formatted as a PNG or JPEG file.
*
*
* In response, the operation returns an array of face matches ordered by similarity score in descending order. For
* each face match, the response provides a bounding box of the face, facial landmarks, pose details (pitch, roll,
* and yaw), quality (brightness and sharpness), and confidence value (indicating the level of confidence that the
* bounding box contains a face). The response also provides a similarity score, which indicates how closely the
* faces match.
*
*
*
* By default, only faces with a similarity score of greater than or equal to 80% are returned in the response. You
* can change this value by specifying the SimilarityThreshold
parameter.
*
*
*
* CompareFaces
also returns an array of faces that don't match the source image. For each face, it
* returns a bounding box, confidence value, landmarks, pose details, and quality. The response also returns
* information about the face in the source image, including the bounding box of the face and confidence value.
*
*
* The QualityFilter
input parameter allows you to filter out detected faces that don’t meet a required
* quality bar. The quality bar is based on a variety of common use cases. Use QualityFilter
to set the
* quality bar by specifying LOW
, MEDIUM
, or HIGH
. If you do not want to
* filter detected faces, specify NONE
. The default value is NONE
.
*
*
* If the image doesn't contain Exif metadata, CompareFaces
returns orientation information for the
* source and target images. Use these values to display the images with the correct image orientation.
*
*
* If no faces are detected in the source or target images, CompareFaces
returns an
* InvalidParameterException
error.
*
*
*
* This is a stateless API operation. That is, data returned by this operation doesn't persist.
*
*
*
* For an example, see Comparing Faces in Images in the Amazon Rekognition Developer Guide.
*
*
* This operation requires permissions to perform the rekognition:CompareFaces
action.
*
*
* @param compareFacesRequest
* @return A Java Future containing the result of the CompareFaces operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the
* request.
* - ImageTooLargeException The input image size exceeds the allowed limit. If you are calling
* DetectProtectiveEquipment, the image size or resolution exceeds the allowed limit. For more information,
* see Guidelines and quotas in Amazon Rekognition in the Amazon Rekognition Developer Guide.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - InvalidImageFormatException The provided image format is not supported.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.CompareFaces
*/
@Override
public CompletableFuture compareFaces(CompareFacesRequest compareFacesRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, compareFacesRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CompareFaces");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
CompareFacesResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CompareFaces").withMarshaller(new CompareFacesRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(compareFacesRequest));
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);
}
}
/**
*
* Copies a version of an Amazon Rekognition Custom Labels model from a source project to a destination project. The
* source and destination projects can be in different AWS accounts but must be in the same AWS Region. You can't
* copy a model to another AWS service.
*
*
* To copy a model version to a different AWS account, you need to create a resource-based policy known as a
* project policy. You attach the project policy to the source project by calling PutProjectPolicy.
* The project policy gives permission to copy the model version from a trusting AWS account to a trusted account.
*
*
* For more information creating and attaching a project policy, see Attaching a project policy (SDK) in the
* Amazon Rekognition Custom Labels Developer Guide.
*
*
* If you are copying a model version to a project in the same AWS account, you don't need to create a project
* policy.
*
*
*
* To copy a model, the destination project, source project, and source model version must already exist.
*
*
*
* Copying a model version takes a while to complete. To get the current status, call DescribeProjectVersions
* and check the value of Status
in the ProjectVersionDescription object. The copy operation has
* finished when the value of Status
is COPYING_COMPLETED
.
*
*
* This operation requires permissions to perform the rekognition:CopyProjectVersion
action.
*
*
* @param copyProjectVersionRequest
* @return A Java Future containing the result of the CopyProjectVersion operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start
* too many Amazon Rekognition Video jobs concurrently, calls to start operations (
*
StartLabelDetection
, for example) will raise a LimitExceededException
exception
* (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition
* service limit.
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ServiceQuotaExceededException
*
* The size of the collection exceeds the allowed limit. For more information, see Guidelines and quotas in
* Amazon Rekognition in the Amazon Rekognition Developer Guide.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - ResourceInUseException The specified resource is already being used.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.CopyProjectVersion
*/
@Override
public CompletableFuture copyProjectVersion(CopyProjectVersionRequest copyProjectVersionRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, copyProjectVersionRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CopyProjectVersion");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, CopyProjectVersionResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CopyProjectVersion")
.withMarshaller(new CopyProjectVersionRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(copyProjectVersionRequest));
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 collection in an AWS Region. You can add faces to the collection using the IndexFaces operation.
*
*
* For example, you might create collections, one for each of your application users. A user can then index faces
* using the IndexFaces
operation and persist results in a specific collection. Then, a user can search
* the collection for faces in the user-specific container.
*
*
* When you create a collection, it is associated with the latest version of the face model version.
*
*
*
* Collection names are case-sensitive.
*
*
*
* This operation requires permissions to perform the rekognition:CreateCollection
action. If you want
* to tag your collection, you also require permission to perform the rekognition:TagResource
* operation.
*
*
* @param createCollectionRequest
* @return A Java Future containing the result of the CreateCollection operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - ResourceAlreadyExistsException A resource with the specified ID already exists.
* - ServiceQuotaExceededException
*
* The size of the collection exceeds the allowed limit. For more information, see Guidelines and quotas in
* Amazon Rekognition in the Amazon Rekognition Developer Guide.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.CreateCollection
*/
@Override
public CompletableFuture createCollection(CreateCollectionRequest createCollectionRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, createCollectionRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateCollection");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, CreateCollectionResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CreateCollection")
.withMarshaller(new CreateCollectionRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(createCollectionRequest));
CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> {
metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
});
executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture);
return executeFuture;
} catch (Throwable t) {
metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
return CompletableFutureUtils.failedFuture(t);
}
}
/**
*
* Creates a new Amazon Rekognition Custom Labels dataset. You can create a dataset by using an Amazon Sagemaker
* format manifest file or by copying an existing Amazon Rekognition Custom Labels dataset.
*
*
* To create a training dataset for a project, specify train
for the value of DatasetType
.
* To create the test dataset for a project, specify test
for the value of DatasetType
.
*
*
* The response from CreateDataset
is the Amazon Resource Name (ARN) for the dataset. Creating a
* dataset takes a while to complete. Use DescribeDataset to check the current status. The dataset created
* successfully if the value of Status
is CREATE_COMPLETE
.
*
*
* To check if any non-terminal errors occurred, call ListDatasetEntries and check for the presence of
* errors
lists in the JSON Lines.
*
*
* Dataset creation fails if a terminal error occurs (Status
= CREATE_FAILED
). Currently,
* you can't access the terminal error information.
*
*
* For more information, see Creating dataset in the Amazon Rekognition Custom Labels Developer Guide.
*
*
* This operation requires permissions to perform the rekognition:CreateDataset
action. If you want to
* copy an existing dataset, you also require permission to perform the rekognition:ListDatasetEntries
* action.
*
*
* @param createDatasetRequest
* @return A Java Future containing the result of the CreateDataset operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - AccessDeniedException You are not authorized to perform the action.
* - LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start
* too many Amazon Rekognition Video jobs concurrently, calls to start operations (
*
StartLabelDetection
, for example) will raise a LimitExceededException
exception
* (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition
* service limit.
* - InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the
* request.
* - ResourceAlreadyExistsException A resource with the specified ID already exists.
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.CreateDataset
*/
@Override
public CompletableFuture createDataset(CreateDatasetRequest createDatasetRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, createDatasetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateDataset");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
CreateDatasetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CreateDataset")
.withMarshaller(new CreateDatasetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(createDatasetRequest));
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 API operation initiates a Face Liveness session. It returns a SessionId
, which you can use to
* start streaming Face Liveness video and get the results for a Face Liveness session. You can use the
* OutputConfig
option in the Settings parameter to provide an Amazon S3 bucket location. The Amazon S3
* bucket stores reference images and audit images. You can use AuditImagesLimit
to limit the number of
* audit images returned. This number is between 0 and 4. By default, it is set to 0. The limit is best effort and
* based on the duration of the selfie-video.
*
*
* @param createFaceLivenessSessionRequest
* @return A Java Future containing the result of the CreateFaceLivenessSession operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.CreateFaceLivenessSession
*/
@Override
public CompletableFuture createFaceLivenessSession(
CreateFaceLivenessSessionRequest createFaceLivenessSessionRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, createFaceLivenessSessionRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateFaceLivenessSession");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, CreateFaceLivenessSessionResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CreateFaceLivenessSession")
.withMarshaller(new CreateFaceLivenessSessionRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(createFaceLivenessSessionRequest));
CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> {
metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
});
executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture);
return executeFuture;
} catch (Throwable t) {
metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
return CompletableFutureUtils.failedFuture(t);
}
}
/**
*
* Creates a new Amazon Rekognition Custom Labels project. A project is a group of resources (datasets, model
* versions) that you use to create and manage Amazon Rekognition Custom Labels models.
*
*
* This operation requires permissions to perform the rekognition:CreateProject
action.
*
*
* @param createProjectRequest
* @return A Java Future containing the result of the CreateProject operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - ResourceInUseException The specified resource is already being used.
* - LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start
* too many Amazon Rekognition Video jobs concurrently, calls to start operations (
*
StartLabelDetection
, for example) will raise a LimitExceededException
exception
* (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition
* service limit.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.CreateProject
*/
@Override
public CompletableFuture createProject(CreateProjectRequest createProjectRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, createProjectRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateProject");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
CreateProjectResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CreateProject")
.withMarshaller(new CreateProjectRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(createProjectRequest));
CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> {
metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
});
executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture);
return executeFuture;
} catch (Throwable t) {
metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
return CompletableFutureUtils.failedFuture(t);
}
}
/**
*
* Creates a new version of a model and begins training. Models are managed as part of an Amazon Rekognition Custom
* Labels project. The response from CreateProjectVersion
is an Amazon Resource Name (ARN) for the
* version of the model.
*
*
* Training uses the training and test datasets associated with the project. For more information, see Creating
* training and test dataset in the Amazon Rekognition Custom Labels Developer Guide.
*
*
*
* You can train a model in a project that doesn't have associated datasets by specifying manifest files in the
* TrainingData
and TestingData
fields.
*
*
* If you open the console after training a model with manifest files, Amazon Rekognition Custom Labels creates the
* datasets for you using the most recent manifest files. You can no longer train a model version for the project by
* specifying manifest files.
*
*
* Instead of training with a project without associated datasets, we recommend that you use the manifest files to
* create training and test datasets for the project.
*
*
*
* Training takes a while to complete. You can get the current status by calling DescribeProjectVersions.
* Training completed successfully if the value of the Status
field is TRAINING_COMPLETED
.
*
*
* If training fails, see Debugging a failed model training in the Amazon Rekognition Custom Labels developer
* guide.
*
*
* Once training has successfully completed, call DescribeProjectVersions to get the training results and
* evaluate the model. For more information, see Improving a trained Amazon Rekognition Custom Labels model in the
* Amazon Rekognition Custom Labels developers guide.
*
*
* After evaluating the model, you start the model by calling StartProjectVersion.
*
*
* This operation requires permissions to perform the rekognition:CreateProjectVersion
action.
*
*
* @param createProjectVersionRequest
* @return A Java Future containing the result of the CreateProjectVersion operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - ResourceInUseException The specified resource is already being used.
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start
* too many Amazon Rekognition Video jobs concurrently, calls to start operations (
*
StartLabelDetection
, for example) will raise a LimitExceededException
exception
* (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition
* service limit.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - ServiceQuotaExceededException
*
* The size of the collection exceeds the allowed limit. For more information, see Guidelines and quotas in
* Amazon Rekognition in the Amazon Rekognition Developer Guide.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.CreateProjectVersion
*/
@Override
public CompletableFuture createProjectVersion(
CreateProjectVersionRequest createProjectVersionRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, createProjectVersionRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateProjectVersion");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, CreateProjectVersionResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CreateProjectVersion")
.withMarshaller(new CreateProjectVersionRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(createProjectVersionRequest));
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 Amazon Rekognition stream processor that you can use to detect and recognize faces or to detect labels
* in a streaming video.
*
*
* Amazon Rekognition Video is a consumer of live video from Amazon Kinesis Video Streams. There are two different
* settings for stream processors in Amazon Rekognition: detecting faces and detecting labels.
*
*
* -
*
* If you are creating a stream processor for detecting faces, you provide as input a Kinesis video stream (
* Input
) and a Kinesis data stream (Output
) stream for receiving the output. You must use
* the FaceSearch
option in Settings
, specifying the collection that contains the faces
* you want to recognize. After you have finished analyzing a streaming video, use StopStreamProcessor to
* stop processing.
*
*
* -
*
* If you are creating a stream processor to detect labels, you provide as input a Kinesis video stream (
* Input
), Amazon S3 bucket information (Output
), and an Amazon SNS topic ARN (
* NotificationChannel
). You can also provide a KMS key ID to encrypt the data sent to your Amazon S3
* bucket. You specify what you want to detect by using the ConnectedHome
option in settings, and
* selecting one of the following: PERSON
, PET
, PACKAGE
, ALL
You
* can also specify where in the frame you want Amazon Rekognition to monitor with RegionsOfInterest
.
* When you run the StartStreamProcessor operation on a label detection stream processor, you input start and
* stop information to determine the length of the processing time.
*
*
*
*
* Use Name
to assign an identifier for the stream processor. You use Name
to manage the
* stream processor. For example, you can start processing the source video by calling StartStreamProcessor
* with the Name
field.
*
*
* This operation requires permissions to perform the rekognition:CreateStreamProcessor
action. If you
* want to tag your stream processor, you also require permission to perform the
* rekognition:TagResource
operation.
*
*
* @param createStreamProcessorRequest
* @return A Java Future containing the result of the CreateStreamProcessor operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start
* too many Amazon Rekognition Video jobs concurrently, calls to start operations (
*
StartLabelDetection
, for example) will raise a LimitExceededException
exception
* (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition
* service limit.
* - ResourceInUseException The specified resource is already being used.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - ServiceQuotaExceededException
*
* The size of the collection exceeds the allowed limit. For more information, see Guidelines and quotas in
* Amazon Rekognition in the Amazon Rekognition Developer Guide.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.CreateStreamProcessor
*/
@Override
public CompletableFuture createStreamProcessor(
CreateStreamProcessorRequest createStreamProcessorRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, createStreamProcessorRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateStreamProcessor");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, CreateStreamProcessorResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("CreateStreamProcessor")
.withMarshaller(new CreateStreamProcessorRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(createStreamProcessorRequest));
CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> {
metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
});
executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture);
return executeFuture;
} catch (Throwable t) {
metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
return CompletableFutureUtils.failedFuture(t);
}
}
/**
*
* Creates a new User within a collection specified by CollectionId
. Takes UserId
as a
* parameter, which is a user provided ID which should be unique within the collection. The provided
* UserId
will alias the system generated UUID to make the UserId
more user friendly.
*
*
* Uses a ClientToken
, an idempotency token that ensures a call to CreateUser
completes
* only once. If the value is not supplied, the AWS SDK generates an idempotency token for the requests. This
* prevents retries after a network error results from making multiple CreateUser
calls.
*
*
* @param createUserRequest
* @return A Java Future containing the result of the CreateUser operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - ConflictException A User with the same Id already exists within the collection, or the update or
* deletion of the User caused an inconsistent state. **
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - ServiceQuotaExceededException
*
* The size of the collection exceeds the allowed limit. For more information, see Guidelines and quotas in
* Amazon Rekognition in the Amazon Rekognition Developer Guide.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - IdempotentParameterMismatchException A
ClientRequestToken
input parameter was reused
* with an operation, but at least one of the other input parameters is different from the previous call to
* the operation.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.CreateUser
*/
@Override
public CompletableFuture createUser(CreateUserRequest createUserRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, createUserRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CreateUser");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
CreateUserResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams().withOperationName("CreateUser")
.withMarshaller(new CreateUserRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(createUserRequest));
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 collection. Note that this operation removes all faces in the collection. For an example,
* see Deleting a
* collection.
*
*
* This operation requires permissions to perform the rekognition:DeleteCollection
action.
*
*
* @param deleteCollectionRequest
* @return A Java Future containing the result of the DeleteCollection operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DeleteCollection
*/
@Override
public CompletableFuture deleteCollection(DeleteCollectionRequest deleteCollectionRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteCollectionRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteCollection");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DeleteCollectionResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteCollection")
.withMarshaller(new DeleteCollectionRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(deleteCollectionRequest));
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 an existing Amazon Rekognition Custom Labels dataset. Deleting a dataset might take while. Use
* DescribeDataset to check the current status. The dataset is still deleting if the value of
* Status
is DELETE_IN_PROGRESS
. If you try to access the dataset after it is deleted, you
* get a ResourceNotFoundException
exception.
*
*
* You can't delete a dataset while it is creating (Status
= CREATE_IN_PROGRESS
) or if the
* dataset is updating (Status
= UPDATE_IN_PROGRESS
).
*
*
* This operation requires permissions to perform the rekognition:DeleteDataset
action.
*
*
* @param deleteDatasetRequest
* @return A Java Future containing the result of the DeleteDataset operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - AccessDeniedException You are not authorized to perform the action.
* - LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start
* too many Amazon Rekognition Video jobs concurrently, calls to start operations (
*
StartLabelDetection
, for example) will raise a LimitExceededException
exception
* (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition
* service limit.
* - ResourceInUseException The specified resource is already being used.
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DeleteDataset
*/
@Override
public CompletableFuture deleteDataset(DeleteDatasetRequest deleteDatasetRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteDatasetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteDataset");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
DeleteDatasetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteDataset")
.withMarshaller(new DeleteDatasetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(deleteDatasetRequest));
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 faces from a collection. You specify a collection ID and an array of face IDs to remove from the
* collection.
*
*
* This operation requires permissions to perform the rekognition:DeleteFaces
action.
*
*
* @param deleteFacesRequest
* @return A Java Future containing the result of the DeleteFaces operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DeleteFaces
*/
@Override
public CompletableFuture deleteFaces(DeleteFacesRequest deleteFacesRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteFacesRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteFaces");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
DeleteFacesResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteFaces").withMarshaller(new DeleteFacesRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(deleteFacesRequest));
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 an Amazon Rekognition Custom Labels project. To delete a project you must first delete all models
* associated with the project. To delete a model, see DeleteProjectVersion.
*
*
* DeleteProject
is an asynchronous operation. To check if the project is deleted, call
* DescribeProjects. The project is deleted when the project no longer appears in the response. Be aware that
* deleting a given project will also delete any ProjectPolicies
associated with that project.
*
*
* This operation requires permissions to perform the rekognition:DeleteProject
action.
*
*
* @param deleteProjectRequest
* @return A Java Future containing the result of the DeleteProject operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - ResourceInUseException The specified resource is already being used.
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DeleteProject
*/
@Override
public CompletableFuture deleteProject(DeleteProjectRequest deleteProjectRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteProjectRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteProject");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
DeleteProjectResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteProject")
.withMarshaller(new DeleteProjectRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(deleteProjectRequest));
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 an existing project policy.
*
*
* To get a list of project policies attached to a project, call ListProjectPolicies. To attach a project
* policy to a project, call PutProjectPolicy.
*
*
* This operation requires permissions to perform the rekognition:DeleteProjectPolicy
action.
*
*
* @param deleteProjectPolicyRequest
* @return A Java Future containing the result of the DeleteProjectPolicy operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - InvalidPolicyRevisionIdException The supplied revision id for the project policy is invalid.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DeleteProjectPolicy
*/
@Override
public CompletableFuture deleteProjectPolicy(
DeleteProjectPolicyRequest deleteProjectPolicyRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteProjectPolicyRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteProjectPolicy");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DeleteProjectPolicyResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteProjectPolicy")
.withMarshaller(new DeleteProjectPolicyRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(deleteProjectPolicyRequest));
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 an Amazon Rekognition Custom Labels model.
*
*
* You can't delete a model if it is running or if it is training. To check the status of a model, use the
* Status
field returned from DescribeProjectVersions. To stop a running model call
* StopProjectVersion. If the model is training, wait until it finishes.
*
*
* This operation requires permissions to perform the rekognition:DeleteProjectVersion
action.
*
*
* @param deleteProjectVersionRequest
* @return A Java Future containing the result of the DeleteProjectVersion operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - ResourceInUseException The specified resource is already being used.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DeleteProjectVersion
*/
@Override
public CompletableFuture deleteProjectVersion(
DeleteProjectVersionRequest deleteProjectVersionRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteProjectVersionRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteProjectVersion");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DeleteProjectVersionResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteProjectVersion")
.withMarshaller(new DeleteProjectVersionRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(deleteProjectVersionRequest));
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 stream processor identified by Name
. You assign the value for Name
when you
* create the stream processor with CreateStreamProcessor. You might not be able to use the same name for a
* stream processor for a few seconds after calling DeleteStreamProcessor
.
*
*
* @param deleteStreamProcessorRequest
* @return A Java Future containing the result of the DeleteStreamProcessor operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - ResourceInUseException The specified resource is already being used.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DeleteStreamProcessor
*/
@Override
public CompletableFuture deleteStreamProcessor(
DeleteStreamProcessorRequest deleteStreamProcessorRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteStreamProcessorRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteStreamProcessor");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DeleteStreamProcessorResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DeleteStreamProcessor")
.withMarshaller(new DeleteStreamProcessorRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(deleteStreamProcessorRequest));
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 UserID within the collection. Faces that are associated with the UserID are disassociated
* from the UserID before deleting the specified UserID. If the specified Collection
or
* UserID
is already deleted or not found, a ResourceNotFoundException
will be thrown. If
* the action is successful with a 200 response, an empty HTTP body is returned.
*
*
* @param deleteUserRequest
* @return A Java Future containing the result of the DeleteUser operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - ConflictException A User with the same Id already exists within the collection, or the update or
* deletion of the User caused an inconsistent state. **
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - IdempotentParameterMismatchException A
ClientRequestToken
input parameter was reused
* with an operation, but at least one of the other input parameters is different from the previous call to
* the operation.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DeleteUser
*/
@Override
public CompletableFuture deleteUser(DeleteUserRequest deleteUserRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, deleteUserRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeleteUser");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
DeleteUserResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams().withOperationName("DeleteUser")
.withMarshaller(new DeleteUserRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(deleteUserRequest));
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);
}
}
/**
*
* Describes the specified collection. You can use DescribeCollection
to get information, such as the
* number of faces indexed into a collection and the version of the model used by the collection for face detection.
*
*
* For more information, see Describing a Collection in the Amazon Rekognition Developer Guide.
*
*
* @param describeCollectionRequest
* @return A Java Future containing the result of the DescribeCollection operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DescribeCollection
*/
@Override
public CompletableFuture describeCollection(DescribeCollectionRequest describeCollectionRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, describeCollectionRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeCollection");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DescribeCollectionResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DescribeCollection")
.withMarshaller(new DescribeCollectionRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(describeCollectionRequest));
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);
}
}
/**
*
* Describes an Amazon Rekognition Custom Labels dataset. You can get information such as the current status of a
* dataset and statistics about the images and labels in a dataset.
*
*
* This operation requires permissions to perform the rekognition:DescribeDataset
action.
*
*
* @param describeDatasetRequest
* @return A Java Future containing the result of the DescribeDataset operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - AccessDeniedException You are not authorized to perform the action.
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DescribeDataset
*/
@Override
public CompletableFuture describeDataset(DescribeDatasetRequest describeDatasetRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, describeDatasetRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeDataset");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DescribeDatasetResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DescribeDataset")
.withMarshaller(new DescribeDatasetRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(describeDatasetRequest));
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 and describes the versions of a model in an Amazon Rekognition Custom Labels project. You can specify up to
* 10 model versions in ProjectVersionArns
. If you don't specify a value, descriptions for all model
* versions in the project are returned.
*
*
* This operation requires permissions to perform the rekognition:DescribeProjectVersions
action.
*
*
* @param describeProjectVersionsRequest
* @return A Java Future containing the result of the DescribeProjectVersions operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - InvalidPaginationTokenException Pagination token in the request is not valid.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DescribeProjectVersions
*/
@Override
public CompletableFuture describeProjectVersions(
DescribeProjectVersionsRequest describeProjectVersionsRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, describeProjectVersionsRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeProjectVersions");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DescribeProjectVersionsResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DescribeProjectVersions")
.withMarshaller(new DescribeProjectVersionsRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(describeProjectVersionsRequest));
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);
}
}
/**
*
* Gets information about your Amazon Rekognition Custom Labels projects.
*
*
* This operation requires permissions to perform the rekognition:DescribeProjects
action.
*
*
* @param describeProjectsRequest
* @return A Java Future containing the result of the DescribeProjects operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - InvalidPaginationTokenException Pagination token in the request is not valid.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DescribeProjects
*/
@Override
public CompletableFuture describeProjects(DescribeProjectsRequest describeProjectsRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, describeProjectsRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeProjects");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DescribeProjectsResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DescribeProjects")
.withMarshaller(new DescribeProjectsRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(describeProjectsRequest));
CompletableFuture whenCompleted = executeFuture.whenComplete((r, e) -> {
metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
});
executeFuture = CompletableFutureUtils.forwardExceptionTo(whenCompleted, executeFuture);
return executeFuture;
} catch (Throwable t) {
metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
return CompletableFutureUtils.failedFuture(t);
}
}
/**
*
* Provides information about a stream processor created by CreateStreamProcessor. You can get information
* about the input and output streams, the input parameters for the face recognition being performed, and the
* current status of the stream processor.
*
*
* @param describeStreamProcessorRequest
* @return A Java Future containing the result of the DescribeStreamProcessor operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DescribeStreamProcessor
*/
@Override
public CompletableFuture describeStreamProcessor(
DescribeStreamProcessorRequest describeStreamProcessorRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, describeStreamProcessorRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeStreamProcessor");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DescribeStreamProcessorResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DescribeStreamProcessor")
.withMarshaller(new DescribeStreamProcessorRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(describeStreamProcessorRequest));
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);
}
}
/**
*
* Detects custom labels in a supplied image by using an Amazon Rekognition Custom Labels model.
*
*
* You specify which version of a model version to use by using the ProjectVersionArn
input parameter.
*
*
* You pass the input image as base64-encoded image bytes or as a reference to an image in an Amazon S3 bucket. If
* you use the AWS CLI to call Amazon Rekognition operations, passing image bytes is not supported. The image must
* be either a PNG or JPEG formatted file.
*
*
* For each object that the model version detects on an image, the API returns a (CustomLabel
) object
* in an array (CustomLabels
). Each CustomLabel
object provides the label name (
* Name
), the level of confidence that the image contains the object (Confidence
), and
* object location information, if it exists, for the label on the image (Geometry
).
*
*
* To filter labels that are returned, specify a value for MinConfidence
.
* DetectCustomLabelsLabels
only returns labels with a confidence that's higher than the specified
* value. The value of MinConfidence
maps to the assumed threshold values created during training. For
* more information, see Assumed threshold in the Amazon Rekognition Custom Labels Developer Guide. Amazon
* Rekognition Custom Labels metrics expresses an assumed threshold as a floating point value between 0-1. The range
* of MinConfidence
normalizes the threshold value to a percentage value (0-100). Confidence responses
* from DetectCustomLabels
are also returned as a percentage. You can use MinConfidence
to
* change the precision and recall or your model. For more information, see Analyzing an image in the Amazon
* Rekognition Custom Labels Developer Guide.
*
*
* If you don't specify a value for MinConfidence
, DetectCustomLabels
returns labels based
* on the assumed threshold of each label.
*
*
* This is a stateless API operation. That is, the operation does not persist any data.
*
*
* This operation requires permissions to perform the rekognition:DetectCustomLabels
action.
*
*
* For more information, see Analyzing an image in the Amazon Rekognition Custom Labels Developer Guide.
*
*
* @param detectCustomLabelsRequest
* @return A Java Future containing the result of the DetectCustomLabels operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - ResourceNotReadyException The requested resource isn't ready. For example, this exception occurs when
* you call
DetectCustomLabels
with a model version that isn't deployed.
* - InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the
* request.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - ImageTooLargeException The input image size exceeds the allowed limit. If you are calling
* DetectProtectiveEquipment, the image size or resolution exceeds the allowed limit. For more information,
* see Guidelines and quotas in Amazon Rekognition in the Amazon Rekognition Developer Guide.
* - LimitExceededException An Amazon Rekognition service limit was exceeded. For example, if you start
* too many Amazon Rekognition Video jobs concurrently, calls to start operations (
*
StartLabelDetection
, for example) will raise a LimitExceededException
exception
* (HTTP status code: 400) until the number of concurrently running jobs is below the Amazon Rekognition
* service limit.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - InvalidImageFormatException The provided image format is not supported.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DetectCustomLabels
*/
@Override
public CompletableFuture detectCustomLabels(DetectCustomLabelsRequest detectCustomLabelsRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, detectCustomLabelsRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DetectCustomLabels");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DetectCustomLabelsResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DetectCustomLabels")
.withMarshaller(new DetectCustomLabelsRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(detectCustomLabelsRequest));
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);
}
}
/**
*
* Detects faces within an image that is provided as input.
*
*
* DetectFaces
detects the 100 largest faces in the image. For each face detected, the operation
* returns face details. These details include a bounding box of the face, a confidence value (that the bounding box
* contains a face), and a fixed set of attributes such as facial landmarks (for example, coordinates of eye and
* mouth), pose, presence of facial occlusion, and so on.
*
*
* The face-detection algorithm is most effective on frontal faces. For non-frontal or obscured faces, the algorithm
* might not detect the faces or might detect faces with lower confidence.
*
*
* You pass the input image either as base64-encoded image bytes or as a reference to an image in an Amazon S3
* bucket. If you use the AWS CLI to call Amazon Rekognition operations, passing image bytes is not supported. The
* image must be either a PNG or JPEG formatted file.
*
*
*
* This is a stateless API operation. That is, the operation does not persist any data.
*
*
*
* This operation requires permissions to perform the rekognition:DetectFaces
action.
*
*
* @param detectFacesRequest
* @return A Java Future containing the result of the DetectFaces operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the
* request.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - ImageTooLargeException The input image size exceeds the allowed limit. If you are calling
* DetectProtectiveEquipment, the image size or resolution exceeds the allowed limit. For more information,
* see Guidelines and quotas in Amazon Rekognition in the Amazon Rekognition Developer Guide.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - InvalidImageFormatException The provided image format is not supported.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DetectFaces
*/
@Override
public CompletableFuture detectFaces(DetectFacesRequest detectFacesRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, detectFacesRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DetectFaces");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
DetectFacesResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DetectFaces").withMarshaller(new DetectFacesRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(detectFacesRequest));
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);
}
}
/**
*
* Detects instances of real-world entities within an image (JPEG or PNG) provided as input. This includes objects
* like flower, tree, and table; events like wedding, graduation, and birthday party; and concepts like landscape,
* evening, and nature.
*
*
* For an example, see Analyzing images stored in an Amazon S3 bucket in the Amazon Rekognition Developer Guide.
*
*
* You pass the input image as base64-encoded image bytes or as a reference to an image in an Amazon S3 bucket. If
* you use the AWS CLI to call Amazon Rekognition operations, passing image bytes is not supported. The image must
* be either a PNG or JPEG formatted file.
*
*
* Optional Parameters
*
*
* You can specify one or both of the GENERAL_LABELS
and IMAGE_PROPERTIES
feature types
* when calling the DetectLabels API. Including GENERAL_LABELS
will ensure the response includes the
* labels detected in the input image, while including IMAGE_PROPERTIES
will ensure the response
* includes information about the image quality and color.
*
*
* When using GENERAL_LABELS
and/or IMAGE_PROPERTIES
you can provide filtering criteria to
* the Settings parameter. You can filter with sets of individual labels or with label categories. You can specify
* inclusive filters, exclusive filters, or a combination of inclusive and exclusive filters. For more information
* on filtering see Detecting Labels in an
* Image.
*
*
* You can specify MinConfidence
to control the confidence threshold for the labels returned. The
* default is 55%. You can also add the MaxLabels
parameter to limit the number of labels returned. The
* default and upper limit is 1000 labels.
*
*
* Response Elements
*
*
* For each object, scene, and concept the API returns one or more labels. The API returns the following types of
* information about labels:
*
*
* -
*
* Name - The name of the detected label.
*
*
* -
*
* Confidence - The level of confidence in the label assigned to a detected object.
*
*
* -
*
* Parents - The ancestor labels for a detected label. DetectLabels returns a hierarchical taxonomy of detected
* labels. For example, a detected car might be assigned the label car. The label car has two parent labels: Vehicle
* (its parent) and Transportation (its grandparent). The response includes the all ancestors for a label, where
* every ancestor is a unique label. In the previous example, Car, Vehicle, and Transportation are returned as
* unique labels in the response.
*
*
* -
*
* Aliases - Possible Aliases for the label.
*
*
* -
*
* Categories - The label categories that the detected label belongs to.
*
*
* -
*
* BoundingBox — Bounding boxes are described for all instances of detected common object labels, returned in an
* array of Instance objects. An Instance object contains a BoundingBox object, describing the location of the label
* on the input image. It also includes the confidence for the accuracy of the detected bounding box.
*
*
*
*
* The API returns the following information regarding the image, as part of the ImageProperties structure:
*
*
* -
*
* Quality - Information about the Sharpness, Brightness, and Contrast of the input image, scored between 0 to 100.
* Image quality is returned for the entire image, as well as the background and the foreground.
*
*
* -
*
* Dominant Color - An array of the dominant colors in the image.
*
*
* -
*
* Foreground - Information about the sharpness, brightness, and dominant colors of the input image’s foreground.
*
*
* -
*
* Background - Information about the sharpness, brightness, and dominant colors of the input image’s background.
*
*
*
*
* The list of returned labels will include at least one label for every detected object, along with information
* about that label. In the following example, suppose the input image has a lighthouse, the sea, and a rock. The
* response includes all three labels, one for each object, as well as the confidence in the label:
*
*
* {Name: lighthouse, Confidence: 98.4629}
*
*
* {Name: rock,Confidence: 79.2097}
*
*
* {Name: sea,Confidence: 75.061}
*
*
* The list of labels can include multiple labels for the same object. For example, if the input image shows a
* flower (for example, a tulip), the operation might return the following three labels.
*
*
* {Name: flower,Confidence: 99.0562}
*
*
* {Name: plant,Confidence: 99.0562}
*
*
* {Name: tulip,Confidence: 99.0562}
*
*
* In this example, the detection algorithm more precisely identifies the flower as a tulip.
*
*
*
* If the object detected is a person, the operation doesn't provide the same facial details that the
* DetectFaces operation provides.
*
*
*
* This is a stateless API operation that doesn't return any data.
*
*
* This operation requires permissions to perform the rekognition:DetectLabels
action.
*
*
* @param detectLabelsRequest
* @return A Java Future containing the result of the DetectLabels operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the
* request.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - ImageTooLargeException The input image size exceeds the allowed limit. If you are calling
* DetectProtectiveEquipment, the image size or resolution exceeds the allowed limit. For more information,
* see Guidelines and quotas in Amazon Rekognition in the Amazon Rekognition Developer Guide.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - InvalidImageFormatException The provided image format is not supported.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DetectLabels
*/
@Override
public CompletableFuture detectLabels(DetectLabelsRequest detectLabelsRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, detectLabelsRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DetectLabels");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
DetectLabelsResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DetectLabels").withMarshaller(new DetectLabelsRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(detectLabelsRequest));
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);
}
}
/**
*
* Detects unsafe content in a specified JPEG or PNG format image. Use DetectModerationLabels
to
* moderate images depending on your requirements. For example, you might want to filter images that contain nudity,
* but not images containing suggestive content.
*
*
* To filter images, use the labels returned by DetectModerationLabels
to determine which types of
* content are appropriate.
*
*
* For information about moderation labels, see Detecting Unsafe Content in the Amazon Rekognition Developer Guide.
*
*
* You pass the input image either as base64-encoded image bytes or as a reference to an image in an Amazon S3
* bucket. If you use the AWS CLI to call Amazon Rekognition operations, passing image bytes is not supported. The
* image must be either a PNG or JPEG formatted file.
*
*
* @param detectModerationLabelsRequest
* @return A Java Future containing the result of the DetectModerationLabels operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the
* request.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - ImageTooLargeException The input image size exceeds the allowed limit. If you are calling
* DetectProtectiveEquipment, the image size or resolution exceeds the allowed limit. For more information,
* see Guidelines and quotas in Amazon Rekognition in the Amazon Rekognition Developer Guide.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - InvalidImageFormatException The provided image format is not supported.
* - HumanLoopQuotaExceededException The number of in-progress human reviews you have has exceeded the
* number allowed.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DetectModerationLabels
*/
@Override
public CompletableFuture detectModerationLabels(
DetectModerationLabelsRequest detectModerationLabelsRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, detectModerationLabelsRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DetectModerationLabels");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DetectModerationLabelsResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DetectModerationLabels")
.withMarshaller(new DetectModerationLabelsRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(detectModerationLabelsRequest));
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);
}
}
/**
*
* Detects Personal Protective Equipment (PPE) worn by people detected in an image. Amazon Rekognition can detect
* the following types of PPE.
*
*
* -
*
* Face cover
*
*
* -
*
* Hand cover
*
*
* -
*
* Head cover
*
*
*
*
* You pass the input image as base64-encoded image bytes or as a reference to an image in an Amazon S3 bucket. The
* image must be either a PNG or JPG formatted file.
*
*
* DetectProtectiveEquipment
detects PPE worn by up to 15 persons detected in an image.
*
*
* For each person detected in the image the API returns an array of body parts (face, head, left-hand, right-hand).
* For each body part, an array of detected items of PPE is returned, including an indicator of whether or not the
* PPE covers the body part. The API returns the confidence it has in each detection (person, PPE, body part and
* body part coverage). It also returns a bounding box (BoundingBox) for each detected person and each
* detected item of PPE.
*
*
* You can optionally request a summary of detected PPE items with the SummarizationAttributes
input
* parameter. The summary provides the following information.
*
*
* -
*
* The persons detected as wearing all of the types of PPE that you specify.
*
*
* -
*
* The persons detected as not wearing all of the types PPE that you specify.
*
*
* -
*
* The persons detected where PPE adornment could not be determined.
*
*
*
*
* This is a stateless API operation. That is, the operation does not persist any data.
*
*
* This operation requires permissions to perform the rekognition:DetectProtectiveEquipment
action.
*
*
* @param detectProtectiveEquipmentRequest
* @return A Java Future containing the result of the DetectProtectiveEquipment operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the
* request.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - ImageTooLargeException The input image size exceeds the allowed limit. If you are calling
* DetectProtectiveEquipment, the image size or resolution exceeds the allowed limit. For more information,
* see Guidelines and quotas in Amazon Rekognition in the Amazon Rekognition Developer Guide.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - InvalidImageFormatException The provided image format is not supported.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DetectProtectiveEquipment
*/
@Override
public CompletableFuture detectProtectiveEquipment(
DetectProtectiveEquipmentRequest detectProtectiveEquipmentRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, detectProtectiveEquipmentRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DetectProtectiveEquipment");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DetectProtectiveEquipmentResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DetectProtectiveEquipment")
.withMarshaller(new DetectProtectiveEquipmentRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(detectProtectiveEquipmentRequest));
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);
}
}
/**
*
* Detects text in the input image and converts it into machine-readable text.
*
*
* Pass the input image as base64-encoded image bytes or as a reference to an image in an Amazon S3 bucket. If you
* use the AWS CLI to call Amazon Rekognition operations, you must pass it as a reference to an image in an Amazon
* S3 bucket. For the AWS CLI, passing image bytes is not supported. The image must be either a .png or .jpeg
* formatted file.
*
*
* The DetectText
operation returns text in an array of TextDetection elements,
* TextDetections
. Each TextDetection
element provides information about a single word or
* line of text that was detected in the image.
*
*
* A word is one or more script characters that are not separated by spaces. DetectText
can detect up
* to 100 words in an image.
*
*
* A line is a string of equally spaced words. A line isn't necessarily a complete sentence. For example, a driver's
* license number is detected as a line. A line ends when there is no aligned text after it. Also, a line ends when
* there is a large gap between words, relative to the length of the words. This means, depending on the gap between
* words, Amazon Rekognition may detect multiple lines in text aligned in the same direction. Periods don't
* represent the end of a line. If a sentence spans multiple lines, the DetectText
operation returns
* multiple lines.
*
*
* To determine whether a TextDetection
element is a line of text or a word, use the
* TextDetection
object Type
field.
*
*
* To be detected, text must be within +/- 90 degrees orientation of the horizontal axis.
*
*
* For more information, see Detecting text in the Amazon Rekognition Developer Guide.
*
*
* @param detectTextRequest
* @return A Java Future containing the result of the DetectText operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - InvalidS3ObjectException Amazon Rekognition is unable to access the S3 object specified in the
* request.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - ImageTooLargeException The input image size exceeds the allowed limit. If you are calling
* DetectProtectiveEquipment, the image size or resolution exceeds the allowed limit. For more information,
* see Guidelines and quotas in Amazon Rekognition in the Amazon Rekognition Developer Guide.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - InvalidImageFormatException The provided image format is not supported.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DetectText
*/
@Override
public CompletableFuture detectText(DetectTextRequest detectTextRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, detectTextRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DetectText");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata,
DetectTextResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams().withOperationName("DetectText")
.withMarshaller(new DetectTextRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(detectTextRequest));
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 association between a Face
supplied in an array of FaceIds
and the User. If
* the User is not present already, then a ResourceNotFound
exception is thrown. If successful, an
* array of faces that are disassociated from the User is returned. If a given face is already disassociated from
* the given UserID, it will be ignored and not be returned in the response. If a given face is already associated
* with a different User or not found in the collection it will be returned as part of
* UnsuccessfulDisassociations
. You can remove 1 - 100 face IDs from a user at one time.
*
*
* @param disassociateFacesRequest
* @return A Java Future containing the result of the DisassociateFaces operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - IdempotentParameterMismatchException A
ClientRequestToken
input parameter was reused
* with an operation, but at least one of the other input parameters is different from the previous call to
* the operation.
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - ConflictException A User with the same Id already exists within the collection, or the update or
* deletion of the User caused an inconsistent state. **
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DisassociateFaces
*/
@Override
public CompletableFuture disassociateFaces(DisassociateFacesRequest disassociateFacesRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, disassociateFacesRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DisassociateFaces");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DisassociateFacesResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DisassociateFaces")
.withMarshaller(new DisassociateFacesRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(disassociateFacesRequest));
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);
}
}
/**
*
* Distributes the entries (images) in a training dataset across the training dataset and the test dataset for a
* project. DistributeDatasetEntries
moves 20% of the training dataset images to the test dataset. An
* entry is a JSON Line that describes an image.
*
*
* You supply the Amazon Resource Names (ARN) of a project's training dataset and test dataset. The training dataset
* must contain the images that you want to split. The test dataset must be empty. The datasets must belong to the
* same project. To create training and test datasets for a project, call CreateDataset.
*
*
* Distributing a dataset takes a while to complete. To check the status call DescribeDataset
. The
* operation is complete when the Status
field for the training dataset and the test dataset is
* UPDATE_COMPLETE
. If the dataset split fails, the value of Status
is
* UPDATE_FAILED
.
*
*
* This operation requires permissions to perform the rekognition:DistributeDatasetEntries
action.
*
*
* @param distributeDatasetEntriesRequest
* @return A Java Future containing the result of the DistributeDatasetEntries operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - ResourceNotReadyException The requested resource isn't ready. For example, this exception occurs when
* you call
DetectCustomLabels
with a model version that isn't deployed.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.DistributeDatasetEntries
*/
@Override
public CompletableFuture distributeDatasetEntries(
DistributeDatasetEntriesRequest distributeDatasetEntriesRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, distributeDatasetEntriesRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DistributeDatasetEntries");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, DistributeDatasetEntriesResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("DistributeDatasetEntries")
.withMarshaller(new DistributeDatasetEntriesRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(distributeDatasetEntriesRequest));
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);
}
}
/**
*
* Gets the name and additional information about a celebrity based on their Amazon Rekognition ID. The additional
* information is returned as an array of URLs. If there is no additional information about the celebrity, this list
* is empty.
*
*
* For more information, see Getting information about a celebrity in the Amazon Rekognition Developer Guide.
*
*
* This operation requires permissions to perform the rekognition:GetCelebrityInfo
action.
*
*
* @param getCelebrityInfoRequest
* @return A Java Future containing the result of the GetCelebrityInfo operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.GetCelebrityInfo
*/
@Override
public CompletableFuture getCelebrityInfo(GetCelebrityInfoRequest getCelebrityInfoRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, getCelebrityInfoRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetCelebrityInfo");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, GetCelebrityInfoResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("GetCelebrityInfo")
.withMarshaller(new GetCelebrityInfoRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(getCelebrityInfoRequest));
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);
}
}
/**
*
* Gets the celebrity recognition results for a Amazon Rekognition Video analysis started by
* StartCelebrityRecognition.
*
*
* Celebrity recognition in a video is an asynchronous operation. Analysis is started by a call to
* StartCelebrityRecognition which returns a job identifier (JobId
).
*
*
* When the celebrity recognition operation finishes, Amazon Rekognition Video publishes a completion status to the
* Amazon Simple Notification Service topic registered in the initial call to StartCelebrityRecognition
* . To get the results of the celebrity recognition analysis, first check that the status value published to the
* Amazon SNS topic is SUCCEEDED
. If so, call GetCelebrityDetection
and pass the job
* identifier (JobId
) from the initial call to StartCelebrityDetection
.
*
*
* For more information, see Working With Stored Videos in the Amazon Rekognition Developer Guide.
*
*
* GetCelebrityRecognition
returns detected celebrities and the time(s) they are detected in an array (
* Celebrities
) of CelebrityRecognition objects. Each CelebrityRecognition
contains
* information about the celebrity in a CelebrityDetail object and the time, Timestamp
, the
* celebrity was detected. This CelebrityDetail object stores information about the detected celebrity's face
* attributes, a face bounding box, known gender, the celebrity's name, and a confidence estimate.
*
*
*
* GetCelebrityRecognition
only returns the default facial attributes (BoundingBox
,
* Confidence
, Landmarks
, Pose
, and Quality
). The
* BoundingBox
field only applies to the detected face instance. The other facial attributes listed in
* the Face
object of the following response syntax are not returned. For more information, see
* FaceDetail in the Amazon Rekognition Developer Guide.
*
*
*
* By default, the Celebrities
array is sorted by time (milliseconds from the start of the video). You
* can also sort the array by celebrity by specifying the value ID
in the SortBy
input
* parameter.
*
*
* The CelebrityDetail
object includes the celebrity identifer and additional information urls. If you
* don't store the additional information urls, you can get them later by calling GetCelebrityInfo with the
* celebrity identifer.
*
*
* No information is returned for faces not recognized as celebrities.
*
*
* Use MaxResults parameter to limit the number of labels returned. If there are more results than specified in
* MaxResults
, the value of NextToken
in the operation response contains a pagination
* token for getting the next set of results. To get the next page of results, call
* GetCelebrityDetection
and populate the NextToken
request parameter with the token value
* returned from the previous call to GetCelebrityRecognition
.
*
*
* @param getCelebrityRecognitionRequest
* @return A Java Future containing the result of the GetCelebrityRecognition operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - InvalidPaginationTokenException Pagination token in the request is not valid.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.GetCelebrityRecognition
*/
@Override
public CompletableFuture getCelebrityRecognition(
GetCelebrityRecognitionRequest getCelebrityRecognitionRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, getCelebrityRecognitionRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetCelebrityRecognition");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, GetCelebrityRecognitionResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("GetCelebrityRecognition")
.withMarshaller(new GetCelebrityRecognitionRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(getCelebrityRecognitionRequest));
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);
}
}
/**
*
* Gets the inappropriate, unwanted, or offensive content analysis results for a Amazon Rekognition Video analysis
* started by StartContentModeration. For a list of moderation labels in Amazon Rekognition, see Using the image and video
* moderation APIs.
*
*
* Amazon Rekognition Video inappropriate or offensive content detection in a stored video is an asynchronous
* operation. You start analysis by calling StartContentModeration which returns a job identifier (
* JobId
). When analysis finishes, Amazon Rekognition Video publishes a completion status to the Amazon
* Simple Notification Service topic registered in the initial call to StartContentModeration
. To get
* the results of the content analysis, first check that the status value published to the Amazon SNS topic is
* SUCCEEDED
. If so, call GetContentModeration
and pass the job identifier (
* JobId
) from the initial call to StartContentModeration
.
*
*
* For more information, see Working with Stored Videos in the Amazon Rekognition Devlopers Guide.
*
*
* GetContentModeration
returns detected inappropriate, unwanted, or offensive content moderation
* labels, and the time they are detected, in an array, ModerationLabels
, of
* ContentModerationDetection objects.
*
*
* By default, the moderated labels are returned sorted by time, in milliseconds from the start of the video. You
* can also sort them by moderated label by specifying NAME
for the SortBy
input
* parameter.
*
*
* Since video analysis can return a large number of results, use the MaxResults
parameter to limit the
* number of labels returned in a single call to GetContentModeration
. If there are more results than
* specified in MaxResults
, the value of NextToken
in the operation response contains a
* pagination token for getting the next set of results. To get the next page of results, call
* GetContentModeration
and populate the NextToken
request parameter with the value of
* NextToken
returned from the previous call to GetContentModeration
.
*
*
* For more information, see moderating content in the Amazon Rekognition Developer Guide.
*
*
* @param getContentModerationRequest
* @return A Java Future containing the result of the GetContentModeration operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - InvalidPaginationTokenException Pagination token in the request is not valid.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.GetContentModeration
*/
@Override
public CompletableFuture getContentModeration(
GetContentModerationRequest getContentModerationRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, getContentModerationRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetContentModeration");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, GetContentModerationResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("GetContentModeration")
.withMarshaller(new GetContentModerationRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(getContentModerationRequest));
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);
}
}
/**
*
* Gets face detection results for a Amazon Rekognition Video analysis started by StartFaceDetection.
*
*
* Face detection with Amazon Rekognition Video is an asynchronous operation. You start face detection by calling
* StartFaceDetection which returns a job identifier (JobId
). When the face detection operation
* finishes, Amazon Rekognition Video publishes a completion status to the Amazon Simple Notification Service topic
* registered in the initial call to StartFaceDetection
. To get the results of the face detection
* operation, first check that the status value published to the Amazon SNS topic is SUCCEEDED
. If so,
* call GetFaceDetection and pass the job identifier (JobId
) from the initial call to
* StartFaceDetection
.
*
*
* GetFaceDetection
returns an array of detected faces (Faces
) sorted by the time the
* faces were detected.
*
*
* Use MaxResults parameter to limit the number of labels returned. If there are more results than specified in
* MaxResults
, the value of NextToken
in the operation response contains a pagination
* token for getting the next set of results. To get the next page of results, call GetFaceDetection
* and populate the NextToken
request parameter with the token value returned from the previous call to
* GetFaceDetection
.
*
*
* @param getFaceDetectionRequest
* @return A Java Future containing the result of the GetFaceDetection operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - InvalidPaginationTokenException Pagination token in the request is not valid.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - ResourceNotFoundException The resource specified in the request cannot be found.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.GetFaceDetection
*/
@Override
public CompletableFuture getFaceDetection(GetFaceDetectionRequest getFaceDetectionRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration, getFaceDetectionRequest
.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetFaceDetection");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, GetFaceDetectionResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams()
.withOperationName("GetFaceDetection")
.withMarshaller(new GetFaceDetectionRequestMarshaller(protocolFactory))
.withResponseHandler(responseHandler).withErrorResponseHandler(errorResponseHandler)
.withMetricCollector(apiCallMetricCollector).withInput(getFaceDetectionRequest));
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 the results of a specific Face Liveness session. It requires the sessionId
as input, which
* was created using CreateFaceLivenessSession
. Returns the corresponding Face Liveness confidence
* score, a reference image that includes a face bounding box, and audit images that also contain face bounding
* boxes. The Face Liveness confidence score ranges from 0 to 100. The reference image can optionally be returned.
*
*
* @param getFaceLivenessSessionResultsRequest
* @return A Java Future containing the result of the GetFaceLivenessSessionResults operation returned by the
* service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - AccessDeniedException You are not authorized to perform the action.
* - InternalServerErrorException Amazon Rekognition experienced a service issue. Try your call again.
* - InvalidParameterException Input parameter violated a constraint. Validate your parameter before
* calling the API operation again.
* - SessionNotFoundException Occurs when a given sessionId is not found.
* - ThrottlingException Amazon Rekognition is temporarily unable to process the request. Try your call
* again.
* - ProvisionedThroughputExceededException The number of requests exceeded your throughput limit. If you
* want to increase this limit, contact Amazon Rekognition.
* - 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.
* - RekognitionException Base class for all service exceptions. Unknown exceptions will be thrown as an
* instance of this type.
*
* @sample RekognitionAsyncClient.GetFaceLivenessSessionResults
*/
@Override
public CompletableFuture getFaceLivenessSessionResults(
GetFaceLivenessSessionResultsRequest getFaceLivenessSessionResultsRequest) {
List metricPublishers = resolveMetricPublishers(clientConfiguration,
getFaceLivenessSessionResultsRequest.overrideConfiguration().orElse(null));
MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
.create("ApiCall");
try {
apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "Rekognition");
apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetFaceLivenessSessionResults");
JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false)
.isPayloadJson(true).build();
HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(
operationMetadata, GetFaceLivenessSessionResultsResponse::builder);
HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory,
operationMetadata);
CompletableFuture executeFuture = clientHandler
.execute(new ClientExecutionParams