【问题标题】:Access Denied to S3 Objects Uploaded via SDK对通过 SDK 上传的 S3 对象的访问被拒绝
【发布时间】:2017-02-21 10:57:15
【问题描述】:

我正在尝试创建一个允许执行以下操作的 IAM 用户:

  • 上传对象
  • 获取对象
  • 列出桶对象

该政策似乎奏效了。但是,我无法查看通过 S3 SDK 上传的图像。在 HTML <img /> 标记中引用其中一个图像文件时,我收到 403 Forbidden 错误。另一方面,我能够使用默认值成功查看通过 AWS 控制台上传的图像,而无需设置任何其他策略等。使用 SDK 将图像上传到 S3 时是否有我没有设置的属性?

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "s3:ListBucket"
        ],
        "Resource": [
            "arn:aws:s3:::my_bucket"
        ],
        "Condition": {
            "IpAddress": {
                "aws:SourceIp": "MyIpV4Address"
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": [
            "s3:PutObject",
            "s3:PutObjectAcl",
            "s3:GetObject",
            "s3:GetObjectAcl"
        ],
        "Resource": [
            "arn:aws:s3:::my_bucket/*"
        ],
        "Condition": {
            "IpAddress": {
                "aws:SourceIp": "MyIpV4Address"
            }
        }
    }
]}

我用来上传文件的 JavaScript 代码。

handleFileUpload(acceptedFiles, rejectedFiles) {
return Promise.map(acceptedFiles.map(file => {
    const object = {
      Key: `some-image-key.jpg`,
      Body: file,
      ContentType: file.type,
      StorageClass: 'STANDARD_IA'
    }
    return this.s3.putObject(object).promise(response => {
      console.log(response);
    });
  }));

【问题讨论】:

    标签: amazon-s3


    【解决方案1】:

    尝试使用附加的上传:.withCannedAcl(BucketOwnerFullControl)

    这指定了桶的所有者,但不一定与对象的所有者相同,被授予Permission.FullControl

    见:

    【讨论】:

      猜你喜欢
      • 2020-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多