Amazon Rekognition Сравнить фотографии Отказано в доступе - PullRequest
0 голосов
/ 29 октября 2018

Хочу сравнить две фотографии. При подключении к AWS я пытаюсь подключиться к AmazonRekognitionClient:

CompareFacesResult result = new 
AmazonRekognitionClient(credentialsProvider).compareFaces(request);

Но есть эта ошибка:

Причина: com.amazonaws.services.rekognition.model.AccessDeniedException: Пользователь: arn: aws: sts :: 475877890857: предполагаемая роль / wsirstpp-20181028230251-unauthRole / CognitoIdentityCredentials не разрешено выполнять сравнение: rekognis Служба: AmazonRekognition; код состояния: 400; код ошибки: AccessDeniedException; идентификатор запроса: 7f665a07-db54-11e8-8773-2de830a9e39f)

Полный код для получения информации о фотографиях:

ByteBuffer image1 = ByteBuffer.wrap(imageSource);
ByteBuffer image2 = ByteBuffer.wrap(imageTarget);

CompareFacesRequest request = new CompareFacesRequest()
    .withSourceImage(new Image().withBytes(image1))
    .withTargetImage(new Image().withBytes(image2))
    .withSimilarityThreshold(70 F);

CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
    context,
    "us-east-2:My_pool_Id", // Identity pool ID
    Regions.US_EAST_2 // Region
);

CompareFacesResult result = new AmazonRekognitionClient(credentialsProvider).compareFaces(request);

List < CompareFacesMatch > faceMatches = result.getFaceMatches();

for (CompareFacesMatch match: faceMatches) {
    Float similarity = match.getSimilarity();
    Log.d(TAG, "run: similarity:" + similarity.toString());
}

Что не так? Что я сделал не так в этом коде?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Причина была в правилах Cognito. Сначала нужно создать правило, а затем отредактировать правило

0 голосов
/ 14 ноября 2018

Часть вашего сообщения об ошибке "unauthRole / CognitoIdentityCredentials" предполагает, что вы делаете запрос с не прошедшим проверку подлинности пользователем Cognito. Не прошедшим проверку подлинности пользователям Cognito могут быть назначены роли IAM с политиками разрешений для выполнения различных задач, но вы должны специально разрешить это при настройке.

Используете ли вы Cloudformation для настройки своих ролей и разрешений? Я использую безсерверный фреймворк, но он в основном такой же, как Cloudformation.

В моем приложении я не позволяю своим неавторизованным пользователям Cognito делать много, но моим авторизованным пользователям Cognito разрешено вызывать лямбду, и эта лямбда имеет право выполнять различные запросы на повторное распознавание.

...