java - 如何以编程方式禁用 S3 公共(public)访问

标签 java amazon-web-services amazon-s3

我正在尝试使用 Java SDK 以编程方式删除对 S3 存储桶的公共(public)访问。

我已使用 s3Client.createBucket(new CreateBucketRequest(bucketName)) 成功创建了我们的存储桶。当我在控制台 ( https://s3.console.aws.amazon.com/s3/home?region=eu-west-2 ) 中查看此存储桶时,它在“访问”下显示“对象可以是公共(public)的”。

然后,我尝试使用唯一看起来大致像我需要的方法来禁用公共(public)访问,即 deletePublicAccessBlock ,所以我的代码行是:s3Client.deletePublicAccessBlock(new DeletePublicAccessBlockRequest().withBucketName(bucketName)) .

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

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

最佳答案

您实际上需要 PublicAccessBlock。因此,您需要在方法中调用 putPublicAccessBlock,而不是 deletePublicAccessBlock。 https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-examples

或者,如果您只想将整个帐户的存储桶翻转为非公开,您可以简单地使用帐户级公共(public)访问 block ,这只是将属于该帐户的每个存储桶翻转为私有(private)。

编辑:

示例 1 用于存储桶级别访问阻止,示例 2 用于帐户级别访问阻止。

您需要将示例中的“值”替换为 Boolean:true。

关于java - 如何以编程方式禁用 S3 公共(public)访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56479602/

相关文章:

java - Groovy:如何解析 xml 并保留命名空间和 schemaLocations

java - 通过 JAXB 解码 XML 时缺少一些值

java - 什么方法声明接受有界和无界的多级泛型?

amazon-web-services - 在 AWS 中 - 不可变和蓝/绿部署之间的区别?

node.js - 如何从 Node 正确调用aws api网关

python - 450K 文档的 ElasticSearch 索引 - 性能

amazon-s3 - 排序s3cmd的输出

linux - 无法从 linux 终端获取文件

java - 尝试从 SQL 数据库检索数据到 listview android 时收到空指针异常

javascript - Alexa Skill FeedHelper.js - 如何获取附件 URL?