我正在尝试使用Java SDK以编程方式删除对我们的S3存储桶的公共访问。
我已经成功使用s3Client.createBucket(new CreateBucketRequest(bucketName))
创建了存储桶。当我在控制台(https://s3.console.aws.amazon.com/s3/home?region=eu-west-2)中查看此存储桶时,它在“访问”下显示“对象可以是公共的”。
然后,我尝试使用看上去大致与我需要的唯一方法禁用公用访问,即deletePublicAccessBlock
,所以我的代码行是:s3Client.deletePublicAccessBlock(new DeletePublicAccessBlockRequest().withBucketName(bucketName))
。
运行此代码后,控制台在“访问”下仍显示“对象可以是公共的”。
如何以编程方式将此存储桶设为私有?
答案 0 :(得分:1)
您实际上需要PublicAccessBlock。因此,您需要在方法中调用putPublicAccessBlock而不是deletePublicAccessBlock。 https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-examples
或者,如果您只想将整个帐户的存储桶都设为不公开,则只需使用帐户级别的公共访问权限块即可,只需将属于该帐户的每个存储桶都设为私有即可。
编辑:
示例1用于存储桶级访问块,示例2用于帐户级访问块。
您需要将示例中的“值”替换为Boolean:true。