我已在具有“公共”访问权限的 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 重现您的情况:
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 更新未执行,或者某些其他方法正在授予对对象的访问权限(例如存储桶策略)。