Загрузка изображения на s3 с помощью aws sdk - PullRequest
0 голосов
/ 21 ноября 2018

В настоящее время я использую AWS Services для создания профиля пользователя.

По сути, я уже могу добавить такие данные пользователя, как (имя, пол, интересы)

Я использую API Gateway , чтобы принять параметры, отправленные с помощью PostMan, а затемметод POST шлюза API отправит запрос на AWS Lambda , затем я использую aws sdk для вставки данных в Dynamodb .

Я хотел бы загрузить изображение для пользователя, и файл будет сохранен в s3, затем я сохраню URL-адрес из s3 в dynamicodb вместе с другими данными пользователя.

Мой текущий лямбда-код такой:

const AWS =  require('aws-sdk');
const dynamodb = new AWS.DynamoDB({region: 'XXXXXX', apiVersion: 'XXX'});
const uuidv4 = require('uuid/v4');

exports.handler = function(event, context, callback) {
  const params = {
    Item: {
      'uuid': {  S: "i_" + uuidv4() }, 
      'profileImage': { S: event.profileImage },
      'name': { S: event.name }
     }, 
     TableName: 'users'
   };

   dynamodb.putItem(params, function(err, data) {
    const response = {
        status: 200, 
        message: JSON.stringify('A record has been created')
    };
    if (err) {
        console.log(err);
        callback(err);
    } else {
        console.log(data);
        callback(null, response);
    }
  });
};

Как я могу загрузить изображение программным способом, используя службы, которые я упомянул.Статьи, которые я нашел в Интернете, загружают только изображение, а не через Api Gateway

1 Ответ

0 голосов
/ 21 ноября 2018

К сожалению, я не совсем опытен в JS, но я дам вам подход, который я использовал в Python для загрузки изображения на S3.

Поскольку вы не можете передать весь объект (например, изображение, zip-файл)или w / e) через API-шлюз, вы должны включить его в полезную нагрузку вашего POST.

Изображение может быть представлено в виде строки в кодировке base64, которую вы можете сохранить в S3.Используя SDK, после успешной операции вы получите адрес загрузки или можете создать себя (это довольно просто, множество руководств в Интернете).

Поскольку изображение в S3 будет просто строкой в ​​кодировке base64 по умолчанию, вам нужно будет указать тип (заголовок Content-Type) объекта, который вы загружаете в S3, чтобы впоследствии вы могли открыть изображение (в браузере например).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...