Не удается отобразить элементы общедоступной папки AWS S3 при использовании Android Amplify?

#android #amazon-s3 #aws-amplify

#Android #amazon-s3 #aws-amplify

Вопрос:

Я использую библиотеку AWS Amplify для Android в своем приложении и пытаюсь отобразить элементы из корзины S3, как указано в документах для хранения Amplify:

 Amplify.Storage.list("/",
    { result ->
        Log.i("MyAmplifyApp", "Total Items : "   result.items.size)
        result.getItems().forEach { item ->
            Log.i("MyAmplifyApp", "Item: "   item.getKey())
        }
    },
    { error ->
        Log.e("MyAmplifyApp", "List failure", error)
        Toast.makeText(this, "Something went wrong. Please try again.", Toast.LENGTH_SHORT)
            .show()
    }
)
  

Независимо от того, какой путь я указываю, я получаю обратно 0 элементов. Есть идеи? Отсутствует
ошибка, напечатанная в logcat.

Примечание:

  1. Роль пользователя / политика имеет права доступа к S3
  2. Поток аутентификации Cognito отлично работает с пользователями, не прошедшими проверку подлинности, или даже с аутентифицированными пользователями
  3. Путь существует
  4. Корзина существует и содержит объекты.

Заранее спасибо!

Комментарии:

1. Можете ли вы поделиться любыми сообщениями об ошибках, которые вы видите?

2. @Richardmclellan ошибки нет. все идет успешно, и я получаю общее количество элементов: 0, но в AWS у меня есть список элементов

3. Можете ли вы поделиться дополнительной информацией о том, как вы создали свою корзину и как вы добавили в нее элементы? Было ли это через CLI amplify или каким-либо другим способом? Если это существующее хранилище, созданное вне Amplify, вы можете использовать его, следуя этому руководству

4. Я использую только CLI amplify

5. То же самое и здесь, я получаю 0 элементов, независимо от того, что я пытаюсь, моя роль IAM настроена на выполнение чего-либо на S3, и процесс аутентификации проходит нормально, и в пути есть элементы s3. я пробовал разные пути, но, похоже, ничего не сработало!

Ответ №1:

Я немного опаздываю на вечеринку, но сегодня столкнулся с точно такой же проблемой.

Оказывается, что внутри вашей корзины S3, если вы хотите отобразить общедоступные файлы, вы должны указать папку с именем ‘public’.

Сегодня я потратил на это около 5 часов, модифицируя списки управления доступом и пробуя другие варианты, и нашел ответ здесь на Github для Amplify-js. Я надеюсь, что это сэкономит другим немного времени.

Ответ №2:

Я получаю список изображений внутри папки моего корзины.

 Amplify.Storage.list("/folderName",
    { result ->
        Log.i("MyAmplifyApp", "Total Items : "   result.items.size)
        result.getItems().forEach { item ->
            Log.i("MyAmplifyApp", "Item: "   item.getKey())
        }
    },
    { error ->
        Log.e("MyAmplifyApp", "List failure", error)
        Toast.makeText(this, "Something went wrong. Please try again.", Toast.LENGTH_SHORT)
            .show()
    }
)
  

Комментарии:

1. Почему это не сработало до сих пор? и что вы сделали, чтобы решить проблему?

2. получение списка внутренней папки корзины