我有一个名为 students 的列表。假设它包含 100 个项目。所以每个学生的专业照片都存储在 s3 存储桶中,文件名是学生 ID。
我的问题是如何使用预签名 url 访问所有这些图像。
如果我在获取数据时生成 url,我认为这是一个不好的做法,因为它需要一些时间才能在服务器端完成。 我无法存储它。它会过期,我在很多文章中看到它说这是一种不好的做法。 如何做到这一点。有没有办法在客户端执行此操作?我在客户端使用 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;
}
};
请帮帮我。谢谢
最佳答案
您可以通过生成 getObject presignedURL 并将其返回到前端然后使用 Angular http 客户端发出 http get 请求并返回这些数据来实现此目的。
https://stackoverflow.com/questions/60947489/
相关文章:
oracle - 无法使用 confluent CLI : java. sql.SQLExcepti
haskell - 使用 Haskell 从麦克风捕获音频输入?
c# - TransactionScope 抛出异常 "This platform does not
python-3.x - Python 3.8 将 "open"视为导入的 openpyxl 方法而
python - Flask App 进行多次登录尝试的奇怪行为
r - 将 ggpredict() 和 ggplot2() 与缩放的连续变量一起使用并尝试取消缩放它