Загружайте файлы из приложения для Android в мою корзину S3

#android #amazon-web-services #amazon-s3

#Android #amazon-веб-сервисы #amazon-s3

Вопрос:

Я довольно смущен тем, какой метод мне следует использовать. Хорошо, вот что я на самом деле пытаюсь сделать:

  1. Для регистрации пользователя в моем приложении необходимо загрузить несколько файлов / изображений
  2. Эти файлы / изображения необходимо загрузить в мою корзину s3

О загрузке этих файлов с использованием указанного URL-адреса не может быть и речи, поскольку мне нужно загрузить несколько файлов / изображений, и кажется, что указанный URL-адрес подходит только для одного файла1.

Затем я смотрю на AWS SDK для Java 2.0, и это кажется тем, что мне нужно; однако, когда я читаю [setup credentials][1] , я запутываюсь, потому что:

  1. Похоже, при этом будут использоваться настройки учетных данных в нашей операционной среде. Итак, как мое приложение будет использовать эти учетные данные позже, когда оно будет установлено на устройствах других пользователей?
  2. В моей ОС есть несколько профилей учетных данных AWS. Мне все еще неясно, как на самом деле загрузить мой профиль учетных данных, поскольку это не профиль по умолчанию

Итак, при дальнейшем чтении ссылки кажется, что учетные данные явно указаны с

 AwsSessionCredentials awsCreds = AwsSessionCredentials.create(
    "your_access_key_id_here",
    "your_secret_key_id_here",
    "your_session_token_here");
  

должно подойти мне лучше всего. Но если я помещу свой access_key_id , secret_key_id в strings.xml файл моего приложения, не будет ли это проблемой безопасности?

1 К вашему сведению, я успешно реализовал загрузку одного изображения, используя предварительно указанный URL-адрес для другого действия. Я использую retrofit, который подключается к моей лямбда-функции, которая затем возвращает указанный URL-адрес, и сделал еще один модифицированный запрос PUT на указанный URL-адрес

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

1. Проходит ли аутентификация вашего приложения Android в управляемом вами серверном приложении?

2. Почему бы не получить разные URL-адреса для каждого из файлов и загружать их по одному за раз? Или вы можете сжать файлы вместе и загрузить сжатый файл. Или вы можете предоставить приложению временные учетные данные с помощью AWS cognito и загружать их с этими учетными данными?

3. @jarmod да, мое приложение проходит проверку подлинности с помощью бессерверной (лямбда) функции. Поскольку это лямбда-функция, я не должен / не должен загружать туда какие-либо файлы.

4. @ShahadIshraq Я рассматривал эту возможность (разные URL-адреса для каждого файла), но из-за нескольких вариантов дизайна это не лучший метод в моем случае. Архивирование файлов также запрещено, поскольку мне нужно использовать / получать доступ к загруженным файлам после успешной загрузки. Даже если эти 2 варианта можно рассмотреть, я все равно хочу знать, как на самом деле решить проблему, как описано в моем вопросе.

5. Затем я бы сказал, аутентифицируйте пользователя с помощью Cognito, получите временные учетные данные и загрузите файлы с этими учетными данными.