登录
首页 >  Golang >  Go问答

更新AWS S3对象的ACL权限设置方法

来源:stackoverflow

时间:2024-03-01 22:54:26 321浏览 收藏

从现在开始,努力学习吧!本文《更新AWS S3对象的ACL权限设置方法》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

我已在具有“公共”访问权限的 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
}

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


解决方案


我不是 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 更新未执行,或者某些其他方法正在授予对对象的访问权限(例如存储桶策略)。

以上就是《更新AWS S3对象的ACL权限设置方法》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>