如何以编程方式禁用S3公共访问

时间:2019-06-06 14:23:13

标签: java amazon-web-services amazon-s3

我正在尝试使用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))

运行此代码后,控制台在“访问”下仍显示“对象可以是公共的”。

如何以编程方式将此存储桶设为私有?

1 个答案:

答案 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。