我想比较两张照片。当我连接到AWS时,我尝试连接到AmazonRekognitionClient
:
CompareFacesResult result = new
AmazonRekognitionClient(credentialsProvider).compareFaces(request);
但是有此错误:
由以下原因引起:com.amazonaws.services.rekognition.model.AccessDeniedException:用户:arn:aws:sts :: 475877890857:assumed-role / wsirstpp-20181028230251-unauthRole / CognitoIdentityCredentials未经授权执行:rekognition(CompareF服务:AmazonRekognition;状态代码:400;错误代码:AccessDeniedException;请求ID: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());
}
怎么了?我在这段代码中做错了什么?
答案 0 :(得分:0)
您的错误消息部分“ unauthRole / CognitoIdentityCredentials”表明您正在使用未经认证的Cognito用户发出请求。可以向未经身份验证的Cognito用户分配具有权限策略的IAM角色,以执行各种任务,但是您必须在设置中明确允许这样做。
您是否正在使用Cloudformation设置角色和权限?我使用无服务器框架,但它与Cloudformation大致相同。
在我的应用中,我不允许我的Cognito未授权用户做很多事情,但是我的Cognito授权用户被允许调用lambda,并且该lambda被授权执行各种重新识别请求。
答案 1 :(得分:0)
原因在Cognito规则中。首先需要创建一个规则,然后编辑规则