【发布时间】:2019-11-18 05:54:50
【问题描述】:
我想通过签名网址上传图片。图像应仅具有公共读取访问权限。我对需要启用或禁用哪些设置感到困惑。
如果我禁用所有“阻止公共访问”设置,它会按预期工作。我担心的是 AWS 建议打开这些权限。图片显示了我提到的设置。
const s3 = new aws.S3();
const s3Params = {
Bucket: process.env.S3_BUCKET,
Key: fileName,
Expires: 60,
ContentType: fileType,
ACL: 'private'
};
当我将“ACL”设置为“private”时,我可以使用签名的 url 在客户端上传图像,但如果我使用“public-read”,我会被拒绝访问。我也尝试添加
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::myapp/*"]
}
]
}
到“存储桶策略”设置以获取公共读取访问权限,但由于公共访问设置,我再次被拒绝访问。
拥有公共读取和私人写入访问权限的最安全方式是什么? 我使用 S3 是一种意外的方式吗? 我是否应该使用 CloudFront 服务公开提供这些图像?
【问题讨论】:
标签: node.js amazon-web-services express amazon-s3 aws-sdk