ListCollections не отображает правильные коллекции в приложении Android - AWS Rekognition

Итак, я застрял здесь больше недели, и я знаю, что это какая-то глупая ошибка. Просто не могу понять это. Я работаю над проектом, который доступен для двух платформ: Android и iOS. Это своего рода приложение для распознавания лиц. Когда я пытаюсь создать / получить доступ к коллекциям из приложения iOS и скрипта Python, они оба получают доступ к одной и той же коллекции из моей учетной записи AWS.

Но когда я пытаюсь получить доступ из приложения Android, оно создает / открывает свои собственные коллекции. Коллекции, созданные в приложении Android, не доступны нигде, кроме этого приложения для Android, и это приложение для Android не может получить доступ к коллекциям, созданным приложением iOS или скриптом Python.

Я пробовал перечислять коллекции на всех этих трех платформах. iOS и Python перечисляют одни и те же коллекции, в то время как коллекции, перечисленные в приложении Android, - это коллекции, созданные только для Android.

Вот код, который я использую, чтобы перечислить коллекции на Android:

        mCredentialsProvider = new CognitoCachingCredentialsProvider(
                mContext.getApplicationContext(),
                "us-east-2:4xbx0x6x-9xbx-xax7-x9xf-x5x0xexfx1xb", // Identity pool ID
                Regions.US_EAST_2 // Region
        );

        mAmazonRekognitionClient = new AmazonRekognitionClient(mCredentialsProvider);

        ListCollectionsResult listCollectionsResult = mAmazonRekognitionClient.listCollections(new ListCollectionsRequest().withMaxResults(20));
        Log.i(TAG, listCollectionsResult.getCollectionIds().toString());

Это результат журнала:

[i_facesbxyxuxqxbxvxlxwx6x7xex5xmxfx, i_facestxnxaxoxoxqxaxwx4xtxuxwxoxrx, root_faces_data]

Это код Python, который я использую для перечисления коллекций:

import boto3
client = boto3.client('rekognition')
response = client.list_collections()
print(response['CollectionIds'])

Это результат:

['i_facesbxyxuxqxbxvxlxwx6x7xex5xmxfx', 'root_faces_data']

Вот и все. Ничего больше. Просто этот код. Вы можете видеть, что одна показывает 3 коллекции, а другая показывает две. Я использую тот же регион и идентификатор пула идентификаторов в приложении для iOS, и в нем перечислены те же коллекции, что и в Python. Причина, по которой я думаю, что приложение для iOS хорошо, потому что коллекции, перечисленные и iOS, и python, одинаковы. Есть что-нибудь, что мне нужно изменить? Есть ли дополнительные настройки, которые мне нужно сделать, чтобы это работало? Пожалуйста, дайте мне знать. Благодарю.

1 ответ

Решение

Как и большую часть времени, я спас себя. Оказывается, когда мы передаем учетные данные Cognito клиенту Rekognition в Android, он не использует тот же регион, что и Cognito. Таким образом, мы должны явно указать регион клиента Rekognition. Как это:

mAmazonRekognitionClient.setRegion(Region.getRegion(Regions.US_EAST_2));

И это все.

Другие вопросы по тегам