Использование Amazon AWS S3 для простого обмена файлами

Я пытаюсь интегрировать AWS s3 в свое приложение для обмена изображениями.

В настоящее время я использую Branch.io для обмена контентом между устройствами, используя глубокие ссылки. Но у этого подхода есть проблема. Я не могу отправить данные изображения с глубокими ссылками, как описано в этом посте.

Итак, имея тот же пост в качестве ссылки, я попытался использовать AWS S3 для загрузки файлов, а затем делиться ссылками. Но я полагаю, что этот подход требует, чтобы в моем приложении была функция входа в Cognito, но я этого не хочу.

Я также попытался сгенерировать предварительно назначенные URL-адреса для изображений, но затем мои учетные данные истекают через час, и я получаю ошибку "Истек токен". В настоящее время я использую этот подход, я просто хотел бы, чтобы он не истек через час. 7 дней или около того мне достаточно, но час слишком короткий.

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

Что было бы лучшим способом справиться с этим?

4 ответа

Решение

Я решил проблему, не используя временные учетные данные, созданные AWS SDK. Вместо этого я создал нового пользователя для приложения через панель управления AWS и дал ему необходимые разрешения для загрузки объектов. В этом коде я сгенерировал новые базовые учетные данные AWS с идентификатором и секретным ключом нового пользователя.

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

Когда вы генерируете URL, вам нужно передать параметр timeout,

var params = {Bucket: 'myBucket', Key: 'myKey', Expires: 604800};

Пример кода для генерации URL-адреса getSigned.

var AWS = require('aws-sdk');
var s3 = new AWS.S3();

var params = {Bucket: 'myBucket', Key: 'myKey', Expires: 604800};
var url = s3.getSignedUrl('getObject', params);
console.log("get URL is", url);

604800 секунд в неделю.

Надеюсь, поможет.

Вы можете использовать предварительно подписанные URL-адреса S3, срок действия которых не превышает 7 дней. Вы можете установить его с помощью параметра строки запроса "X-Amz-Expires".

Амрута из филиала здесь:

К сожалению, нет возможности добавить изображения в ссылку с помощью Branch SDK. В качестве обходного пути, как уже упоминалось в посте, который вы пометили, вы можете создавать ссылки на панели управления Branch и загружать изображения на вкладке Social media. После сохранения ссылки на этой же вкладке появится ссылка на изображение, размещенное в Branch.

К сожалению, это будет работать, только если у вас есть предопределенный набор изображений.

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