Node.js 如何呈现来自S3的图像(文件)在前端阻止所有公共访问(私有写入、私有读取)
我已使用aws sdk将文件上载到S3 bucket,如下所示:Node.js 如何呈现来自S3的图像(文件)在前端阻止所有公共访问(私有写入、私有读取),node.js,amazon-web-services,amazon-s3,aws-sdk,Node.js,Amazon Web Services,Amazon S3,Aws Sdk,我已使用aws sdk将文件上载到S3 bucket,如下所示: async function uploadFileToAws(file){ const fileName = `new_file_${new Date().getTime()}_${file.name}`; const mimetype = file.mimetype; const params = { Bucket: config.awsS3BucketName, Key:
async function uploadFileToAws(file){
const fileName = `new_file_${new Date().getTime()}_${file.name}`;
const mimetype = file.mimetype;
const params = {
Bucket: config.awsS3BucketName,
Key: fileName,
Body: file.data,
ContentType: mimetype,
// ACL: 'public-read'
};
const res = await new Promise((resolve, reject) => {
s3.upload(params, (err, data) => err == null ? resolve(data) : reject(err));
});
return { secure_url: res.Location };
}
如果我们允许bucket权限公开读取,那么就没有问题,但我们有阻止公开读取(公开访问)的要求,并且仅允许通过访问Id和密钥或任何其他类似方法,在自有产品(移动和web应用程序)中可见bucket对象或图像的访问。这可能吗?aws S3是否提供此类服务
我浏览了aws s3文档,谷歌搜索,浏览了多个StackOverflow线程和一些博客,但运气不好。我真的很感激这个建议,提示,帮助。 你可以考虑两个选项。 第一种是通过CloudFront和签名URL或cookie,如中所述
在这两种情况下,bucket都不需要公开。对图像的访问由您的后端控制。您的用户在访问图像之前是否必须首先向您的应用程序或网站进行身份验证?是的,我们在他们访问图像之前进行了用户身份验证。