小编Joh*_*ong的帖子

Amazon s3:“阻止公共访问”设置以允许使用签名 url 进行公共读取私有写入

在此处输入图片说明我想通过签名的网址上传图片。图像应仅具有公共读取访问权限。我对需要启用或禁用哪些设置感到困惑。

如果我禁用所有“阻止公共访问”设置,它会按预期工作。我担心的是 AWS 建议打开这些权限。图片显示了我提到的设置。

  const s3 = new aws.S3();
  const s3Params = {
    Bucket: process.env.S3_BUCKET,
    Key: fileName,
    Expires: 60,
    ContentType: fileType,
    ACL: 'private'
  };
Run Code Online (Sandbox Code Playgroud)

当我将“ACL”设置为“private”时,我可以使用签名的 url 在客户端上传图像,但是如果我使用“public-read”,我会被拒绝访问。我也尝试添加

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::myapp/*"]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

到“存储桶策略”设置以获得公共读取访问权限,但由于公共访问设置,我再次被拒绝访问。

拥有公共读取、私有写入访问权限的最安全方式是什么?我使用 S3 是一种意外的方式吗?我是否应该使用 CloudFront 服务来公开提供这些图像?

amazon-s3 amazon-web-services node.js express aws-sdk

7
推荐指数
1
解决办法
2927
查看次数