Так что я храню и получаю доступ к изображениям в Amazon S3. Мой код (nodeJS в лямбда-выражении) для доступа к изображениям ниже ...
//...Other unerelated Code
var s3Params = {
"Bucket": "example-bucket",
"Key": "example-image-key"
};
try{
//some unrelated code getting item from DynamoDB
image : await s3.getObject(s3Params).promise()
}catch(err)
{
//Handling
}
Так что это прекрасно работает ... для небольших изображений (почти 39,3 КБ почти мгновенно), но время ожидания для большего изображения (3,1 МБ будет отключено через 20 секунд).
Есть ли лучший способ сделать это? Или я просто ожидал, что это займет больше времени и увеличит время ожидания?
Редактировать: Полный код ниже
const AWS = require('aws-sdk');
exports.handler = async (event) => {
AWS.config.update({region: 'ap-southeast-2'});
const db = new AWS.DynamoDB.DocumentClient;
const s3 = new AWS.S3();
let itemParamters = {
Key: {
name: event.name,
},
TableName: 'records'
};
var s3Params = {
"Bucket": "Example-BucketName",
"Key": "Example key" + event.name + ".jpg"
};
var msg;
var code;
try{
code = 200;
msg ={
item : await db.get(itemParamters).promise(),
image : await s3.getObject(s3Params).promise()
};
}catch(err)
{
code = 500;
msg = "Error: " + err;
}
var response = {
headers: {
"Access-Control-Allow-Origin" :"*"
},
statusCode: code,
body: msg
};
return response;
};
РЕДАКТИРОВАТЬ 2:
После дальнейшего тестирования тайм-аут кажется произойти во время настройки ответа, в частности, изображения.