У меня есть список учеников. Предположим, он содержит 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;
}
};
, пожалуйста, помогите мне. спасибо