我已在具有“公共”访问权限的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
}
预期输出是::文件应不可访问。
答案 0 :(得分:0)
我不是Go使用者,因此我尝试通过AWS CLI重现您的情况:
https://my-bucket.s3-ap-southeast-2.amazonaws.com/foo
)访问文件:访问被拒绝 aws s3api put-object-acl --bucket my-bucket --key foo --acl public-read
aws s3api put-object-acl --bucket my-bucket --key foo --acl private
因此,您描述的方法应该能够再次将该对象设为私有。因此,要么ACL更新没有执行,要么其他方法授予了对该对象的访问权限(例如存储桶策略)。