Как использовать предварительно подписанные URL-адреса с несколькими файлами в s3, используя angular - PullRequest
1 голос
/ 31 марта 2020

У меня есть список учеников. Предположим, он содержит 100 элементов. Таким образом, каждая картинка про ученика хранится в корзине s3 с идентификатором студента в качестве имени файла.

Мой вопрос - как получить доступ ко всем этим изображениям? с предопределенными URL-адресами.

Если я генерирую URL-адрес при получении данных, я считаю, что это плохая практика, потому что у него есть некоторое время для завершения sh на стороне сервера. Я не могу его сохранить. Срок его действия истек, и я видел во многих статьях, что это плохая практика. Как это сделать. Есть ли способ сделать это на стороне клиента? Я использую Angular 8 на стороне клиента.

Вот код, который я использую для генерации предварительно подписанного URL-адреса. Этот код работает нормально. Но проблема в том, что после истечения срока действия URL, снова нужно его сгенерировать.

const AWS = require('aws-sdk');
const s3 = new AWS.S3();
const s3BucketName = 'media';
exports.handler = async (event) => {
    try{
  const objectKey = '1234.jpg';
  let params = {
        Bucket: s3BucketName,
        Key: objectKey,
        Expires: 60 * 60 * 24 * 365 * 10
     };
    return await s3.getSignedUrlPromise('getObject', params).then(async url => {
         console.log('Successfully generated pre signed image url:', url);



        const payload = {
            message: 'success',
            imageUrl: url
        };
        const response = {
            statusCode: 201,
             body: JSON.stringify(payload),
        };
        return response;
    }).catch(error => {
        console.error(`Failed to generate presigned url: ${error}`);
        return {
            statusCode: error.statusCode || 501,
            body: JSON.stringify({
                message: `Failed to generate presigned url. Request Id: ${context.awsRequestId}`
            })
        };
    });

    }catch(error){
        console.log(JSON.stringify(error));
       const response = {
        statusCode: 501,
        body: JSON.stringify(error),
    };
    return response;  
    }

};

, пожалуйста, помогите мне. спасибо

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