如何更新AWS S3对象的ACL访问?

问题描述 投票:0回答:1

我已在具有“公共”访问权限的 AWS S3 存储桶中插入了对象。我想更新此对象以在某些拒绝工作流程中具有“私有”访问权限。

在下面尝试并执行得很好,但文件仍然可以访问。

func updateAccessPolicyForObject(filename string, folder string, awsAccess string) (bool, error) {
    _, err := bigS3.PutObjectAclRequest(&s3.PutObjectAclInput{
        ACL:    aws.String("private"),
        Bucket: aws.String(bucket),
        Key:    aws.String(folder + filename),
    })

    if err != nil {
        return false, fmt.Errorf("Error updating acl of an object: %v", err)
    }
    return true, nil
}

预期输出是:: 文件应该变得无法访问。

amazon-web-services go amazon-s3
1个回答
0
投票

我不是 Go 爱好者,所以我尝试使用 AWS CLI 重现您的情况:

  • 将文件上传到没有具有存储桶策略的 Amazon S3 存储桶
  • 尝试通过匿名 URL 访问文件(例如
    https://my-bucket.s3-ap-southeast-2.amazonaws.com/foo
    ):访问被拒绝
  • 运行此命令:
aws s3api put-object-acl --bucket my-bucket --key foo --acl public-read
  • 尝试通过匿名 URL 访问文件:成功
  • 运行此命令:
aws s3api put-object-acl --bucket my-bucket --key foo --acl private
  • 尝试通过匿名 URL 访问文件:访问被拒绝

因此,您描述的方法应该能够再次使对象变为私有。因此,ACL 更新未执行,或者某些其他方法正在授予对对象的访问权限(例如存储桶策略)。

© www.soinside.com 2019 - 2024. All rights reserved.